If module composition type is MDP or C2D and we have a skipped layer
(usually layers without backing buffers, layers with "invalid"
orientations or debug layers), mark every HWC layer below this layer
for GPU composition.
This logic is needed because ICS SF composes a bunch of z-ordered
HWC_FRAMEBUFFER (GPU) layers first and then the remaining bunch of
z-ordered HWC_OVERLAY layers last which breaks the overall z-ordered
layer rendering requirement. This logic also holds valid for 2-layer
bypass in ICS.
Change-Id: I5082affac8affd6b19d78be827d149901945a163
Validate the previous overlay and bypass handles before unlocking
the buffers. The reason for doing this, is that in certain use cases,
after the previous handles are stored, the buffer gets destroyed and the
handle is now invalid. The HWC however doesn't know that the handle is
invalid and tries to unlock the handle, resulting in a failure.
CRs-fixed: 323614
Change-Id: I0f0c8506e7e22f9fc01eb28af0270f9c4587c787
Qcom specific private flags have been moved to libQcomUI. Use these
flags flags in the hwcomposer.
Change-Id: I9898dd11a7fff72678fa1f744454fcf310507a63
* changes:
libQcomUI: Add support for qcom specific layer flags.
libQcomUI: Add support for updating the buffer geometry
Display: Add libQcomUI
liboverlay: Add support for interlaced content in updateOverlaySource.
Android YUV formats are aligned to 16pixels, while C2D requires 32pixel
aligned. Use a temp buffer to do the conversion.
Change-Id: Iff93b56e152460255d480dc703dabbcdb3697995
Add support for updating the qcom specific layer flags. Add support for
getting the per frame HWC flags based on the layer flags.
Change-Id: I5f7759a6a7fae6d4f70dd26f380a9b08e48e9475
Add support for updating the buffer geometry without any reallocation
of memory. The buffer geometry is updated in the GraphicBuffer as well
as in the buffer handle.
Change-Id: I3fdb4f6a737277ab63fcbdb42e9c955ea7471760
Add libQComUI which is used to perform operations specified by
SurfaceTextures.
The operation currently supported by this library is SET_BUFFER_SIZE
which deallocates and reallocates memory if the size allocated for the
buffer does not match the size requested by the client.
Change-Id: I370b94a91f5acf373f7040742aad7c2e7bb586fe
UpdateOverlay source didn't have any support for interlaced content.
Add the required support. Create a new function to check if the content
is interlaced.
Change-Id: Ie47b7669461f773b55c71cad6978fc1c8cf4e91b
Since composition bypass uses MDP overlays, which
need physically contiguous memory, we cannot use
bypass in cases where the buffers are using ashmem
or other virtual memory. Hence, avoid bypass in
such cases.
Change-Id: I5c6d20e68e15719295373a1b0f3b930536336c43
Add support to set the framebuffer width and height in the copybit
context. This parameter will be set for composition using c2d where
the c2d target is calculated based on the framebuffer width and height.
Change-Id: Ica0f7622bed305c0f56dd0a16b35406c28600fd8
Synchronize turning off of composition bypass with display,
so that close happens only after FB content is displayed.
This fixes blinks observed when bypass needs to be turned off,
for reasons other than video content.
Change-Id: Id98bddd0cb2a89ea8729a188934ae1cd947cf305
If the input parameters in the prepare and set functions are invalid, unlock
any previously locked buffers.
Change-Id: Ifd3b02c3ae6d2095970d5e15b98196d7fa7dee4e
CRs-fixed: 322054
Add HAL_PIXEL_FORMAT_NV12_ENCODEABLE which is the encoder specific
format.
Remove unused OEM formats from the gralloc.
Change-Id: I787203cd96b597c881f0acc10b60ea2ab2ffe1ab
Use genlock to lock the bypass buffers before they are queued to the
overlay. After all the bypass buffers are queued, use genlock to
unlock the previously locked bypass buffers.
Change-Id: Ifdd7921f0c9f5d5744c899a0257a4b954274334b
This change properly excludes these products from being inherited
by non-qcom devices.
Beware that the MSM7K_BOARD_PLATFORMS is not in place yet and
if you want to try these with currently unsupported devices you
will have to define this yourself.
Change-Id: I4c7f2d84df4dbde1e18ded4ca9f2333006b89bd6
When queuing buffers using the overlay:
- Set the NO_WAIT flag for the HDMI channel.
- Set the WAIT flag for the primary channel.
- Queue the buffer on the HDMI first.
- Queue the buffer on the primary.
- Wait for the HDMI Vsync.
Change-Id: Id24e9551230b7a7134bd21a7b3a9e8658f7de222
For copybit composition, aquire a read lock on the buffer, before
the blit operation and release the lock after the blit operation.
For overlay, aquire a read lock on buffer N that is sent to the
overlay. After the play call for buffer N returns, unlock the lock
held by buffer (N-1).
Change-Id: I3ff178d8ed8e3a289c199237dbec501afdb7e717
Map the gralloc buffer during the register_buffer phase. This allows
the clients to obtain the virtual address without the need to call an
additional mmap.
Change-Id: I9377584ee564ad5113fd353b727793f16d7b9b94
Add support in the gralloc to:
- Create a lock during buffer allocation.
- Release a lock when the buffer is freed or unregistered.
- Attach a lock when the buffer is registered.
Change-Id: I788e411f43d5fcf88d7dcf39c530559a12d6361c
Add libgenlock which is a cross-process buffer locking API. libgenlock
provides the ability to create, attach, release locks. It also provides
a mechanism to lock and unlock buffers for read/write purposes.
Change-Id: I5172a82539b83bcb1226e3fd4f7b80a5c7f31016