Commit Graph

10 Commits

Author SHA1 Message Date
Jesse Hall
5efa773cc1 Revert "Load the gralloc module at library load"
This reverts commit 33c08a53ac. Some
gralloc implementations apparently have library initializers (executed
on dlopen) which create anonymous sockets, open device nodes, etc.
which Zygote and some other non-Zygote-child processes that use libui
don't have permissions to do. When the library initializer fails, it
crashes the process.

Reverting this until this initialization code can be made lazy (on
first use of gralloc).

Bug: 62732270
Test: boot fugu to launcher
2017-06-19 11:48:09 -07:00
Jesse Hall
33c08a53ac Load the gralloc module at library load
In the a.h.graphics.mapper default implementation, load the gralloc
module in a static constructor that runs when the library is loaded.
This causes Zygote to load the gralloc module and its dependencies
when it loads a.h.graphics.mapper, so that it doesn't have to be
loaded during each activity launch.

Bug: 62353585
Test: boot to launcher, run calculator, confirm gralloc library is in
      /proc/`pid zygote64`/maps

Change-Id: I56defd76b0ba0fba71dea48e2b0d338511563d1f
2017-06-16 00:48:36 +00:00
Chia-I Wu
ec74596af8 graphics: clarify importBuffer and passthrough HALs
A buffer handle recieved from a HAL is by definition raw and needs
to be imported.  But because of passthrough HALs, such a raw handle
may have been imported already.  Explicitly specify that an
implementation must accept such a raw handle.

Bug: 37540361
Test: boots on angler, ryu and marlin
Change-Id: I5ecf526e59b27cc4a8f7f5d5ec27477da0946ece
2017-04-25 12:52:50 -07:00
Chia-I Wu
78b63dc6a1 graphics: keep mapper valid during process termination
GraphicBufferMapper is valid during process termination.  IMapper
must stay valid as well.  It should not rely on global/static
objects that may have been destructed.

Bug: 37480313
Test: libgui_test
Change-Id: Icb8079153306f2465c26c0f1ce812895ad83f21b
2017-04-19 11:47:25 -07:00
Chia-I Wu
79d13ff0f5 graphics: revise gralloc interfaces
Revise IAllocator and IMapper to reduce IPC and to support gralloc0
devices.

Specifically, IAllocator is trimmed down to have essentially only

    allocate(BufferDescriptor descriptor, uint32_t count)
        generates (Error error,
                   uint32_t stride,
                   vec<handle> buffers);

The ability to allocate buffers with shared backing store is
removed.  ProducerUsage and ConsumerUsage are moved to the
graphics.common package and are merged and renamed to BufferUsage.
BufferUsage's bits follow gralloc0.

IMapper gains

    typedef vec<uint32_t> BufferDescriptor;
    createDescriptor(BufferDescriptorInfo descriptorInfo)
          generates (Error error,
                     BufferDescriptor descriptor);

where BufferDescriptor is an implementation-defined blob.  lockFlex
is replaced by lockYCbCr.  All getters are removed.

Reference counting with retain/release is replaced by
importBuffer/freeBuffer.

Most if not all gralloc1 features are not used by the runtime yet.
There is also not too much test written for them.  As such, they
tend to behave differently between implementations and cannot be
used reliably.

Bug: 36481301
Test: builds and boots on Pixel
Change-Id: I1d31105120517ea2c128c7a19297acf3bfd312bb
2017-04-10 11:15:54 -07:00
Chia-I Wu
d412d7b1d2 graphics: initialize count to 0 in initCapabilities
Be more defensive against HALs that do not initialize count.

Test: manual
Change-Id: I8b70454a1a3134c01d225be504579fc2e81ca88b
2017-03-07 14:45:33 -08:00
Chia-I Wu
939e4018c2 graphics: rewrite libgralloc1-adapter
Rewrite libgralloc1-adapter to be based on Gralloc1On0Adapter.
Previously, the adapter targeted maximum portability and maximum
performance.  The rewritten adapter targets ease of use instead.

This also fixes a bug in the adapter's GRALLOC1_FUNCTION_RELEASE.  The
function does not imply native_handle_close/native_handle_delete.  As a
result, IMapper and IComposer are also fixed to close/delete handles.

Test: builds and boots
Change-Id: I5c071453dc950583087ae07967bca2c22866c538
2017-01-06 12:31:26 +08:00
Chia-I Wu
158d5302f5 graphics: HIDLize IMapper
Test: builds and boots
Change-Id: I37503ae4826c3e864d7457fd688c2d5f5dd652a3
2016-12-23 07:39:57 +08:00
Craig Donner
0b00adf391 Add layered image support to gralloc1 hal.
Bug: 31686534
Test: manual
Change-Id: I6442413072cef2a19abd3aacddf964ca1f4e7481
2016-11-11 11:35:06 -08:00
Chia-I Wu
0f215c5a33 graphics: add a default implementation to IMapper
The default implementatoin is built on top of conventional gralloc1.

Test: make android.hardware.graphics.mapper.hallib
Change-Id: I8647dc69dbb1637a141d36358d5769f450422ac1
2016-10-12 06:59:26 -07:00