This is a helper function that will return false if the given format is
supported by adreno drivers but not supported in GPU HW. For these
formats, adreno will use software color conversion routines to convert
them to acceptable format by the GPU HW. This may be required if we
want to avoid creating texture for certain formats when not absolutely
necessary. Could be defaulted to return true depending on a compile
time flag.
Change-Id: Idb2200b5ed13bb8c184288d44340ed1aefeaa8df
apply:
Author: Ramakant Singh <ramaka@codeaurora.org>
Display/libhwcomposer:Add intermediate stretch for low resolution clips
Copybit module has a limited stretch to scale a clip.
Hence we need to do a intermediate stretch before going
to final stretch.
and cleanup loops in hwc_prepare/set
Change-Id: Ice32e12051c5c4367d1fafe17e804679e6e727c9
The mandate for the width and height to be even is only for the YV12
format. Add this check only for the YV12 format.
Change-Id: I1e8d2de174ecf2e62cd33cc40dfd8e97d70a3a59
The x and y coordinates are derived properly from clip and dest rect with this fix.
- Even if rotation is involved, we need to start reading from the same point.
- Do scaling operation on the delta, and then add the source left and top values.
- If we scale the result of addition, we will not be reading source correctly.
CRs-fixed: 324782
Change-Id: I2876c6a8e48acbf03f80713338f9a17c57863aaa
hwcomposer:
rewrite from default template.
specific for qsd8k
put a hack in to fix screen off animation
builds without liboverlay include which qsd8k doesnt support
Change-Id: Ica8df89be4dba4e92ed4e879e8e821b841e2ef93
Assign the correct blending value
for MDP 3.0, earlier it was
incorrectly assigned to zero
for cases where blending was not needed.
Change-Id: Icec6541616c8a9dc6ffc0e99c5b2936389799656
Refactoring is necessary to attain flexibility in setting mdp overlay params
at runtime, while using composition bypass.
This change includes new APIs for setting crop rectangle, display params and
commiting mdp params, namely setCrop(), setDisplayParams() and commit(),
respectively.
Change-Id: Id57035602baabd954fd6b484be4f63fef632d74b
If an uncached buffer is needed from gralloc, the
client must use the flag GRALLOC_USAGE_PRIVATE_UNCACHED
Change-Id: Ie3fcfee1071a87fa0440600f4ca3e2d7ff6243ed
Align the copybit source and destination buffer according
to the frame buffer pixel format.
CRs-fixed: 327687
Change-Id: I00a0a047f2f6d639202e8395d85902b821e2a65c
Check the is_fg flag along with the other parameters in checkOVState.
This is done so that the is_fg flag can also be updated even if there
are no updates to the geometry.
Change-Id: I82874d01c11eb85fb444c2bdbc50f586db683481
When performing the setup for bypass operations, check the number
of bypass channels that are in open state. If the count does not
match the number of bypass layers, close all the bypass channels.
This is done to prevent the overlay channels from going into an
inconsistent/undefined state.
Change-Id: If471a4b4437e25642586616461c5d745f15b3287
CRs-fixed: 323676
For 2 bytes per pixel format the width might be not alligned to 4
So for such cases we need to use memset16
Change-Id: I22a6c673439c44447ce33faf2ed0615febd70a28
Implement clearRegion for C2D/MDP/CPU composition. This prevents
glClear and therefore the glFinish from being called, thus
improving performance.
Change-Id: I03d9230e03cce11d9fe7e2bd34e4df8328ad2e00
Add the following optimizations for the temporary buffer:
- Initialize the temp buffer only when required.
- The temp buffer is not deallocated/released unless there is a
change in size of the temporary buffer.
Change-Id: I833851b1feff0a7457ad6847f18a988e002d61d5
CRs-fixed: 319337
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