When there is a state change, open/close only the required channels
instead of blindly closing all the channels. When HDMI is connected,
open the overlay for queueing the frames on the external, and when
hdmi is disconnected, only close the external overlay channel.
CRs-fixed: 333324
(cherry picked from commit a6b5ac4c385e03b3c798bb07d0d3ba6140aebbe8)
Change-Id: I7333a6fe106cd0aa99471542daf3c84c04c5d056
- HDMI has priority over Wifi display, if HDMI is connected during
Wifi, close the session for Wifi and start one for HDMI.
- the enableHDMIOutput parameter externaltype - HDMI/WIFI/OFF
Change-Id: If2cd9143fc7a953db49f38a6c166f9425ba5266e
Conflicts:
libqcomui/qcom_ui.cpp
This change allows the application to set the S3D format for the surface.
With this change application would be specifying 3D format and that would
be handled by hwcomposer would handle it appropriately.
Change-Id: I6b7b33712ab85b8a94231bd65a19709b3c2cd606
Conflicts:
libqcomui/qcom_ui.cpp
This reverts commit f2dbabe786a12e7e9ae15328550b5ba581c5492e.
This change is not needed any more because we are caching the MDP pipe
contents when closing the channel. So no need to wait for postFB finish.
Change-Id: Ia6f01c33953762cb7a97e0b2b795d9afeb60d2d9
(cherry picked from commit 441f1824593bb12a97508b426b597a16b35091e6)
S3D code is being conditionally compiled with HDMI_AS_PRIMARY.
So it is necessary to enable this flag, if board file indicates
HDMI as primary display
(cherry picked from commit dfc3782b8f23a6aadec9fd7501807778b0d3c542)
Change-Id: I3f6f84d76a3f7f5a3f83aa5ec31012b13b16431b
Layer orientation can be ignored since displayFrame always represents the
destination region in framebuffer orientation.
(cherry picked from commit f6ab48d14d32ba805fc25597533de14dae1c4e2b)
Change-Id: I0f9217e81a953a63cf9ea4ef9ddab25a1c67184e
-Check only for 90 or 270 degrees rotation and interchange
width and height if rotation is one of them.
-make scaling computations in float
CRs-fixed: 337370
(cherry picked from commit 460d7b96c06aa33d61b38d146f76887a49cd8057)
Change-Id: I30255e3926917896223dba7306df60ff7cfa14e2
When the HWC_SKIP_COMPOSITION is enabled, continue looping through
the layers instead of breaking the loop. Thus we are assured that
all overlay layers are always drawn.
Change-Id: Ia8d4c7003838cbb86e2f0ea8b5ef2d47516aa011
CRs-fixed: 333986
(cherry picked from commit 8c2a615a0a3d89a5830af3b8117115ae8071bd27)
(cherry picked from commit 11ea4a3635a347182f6b2f8f2ad6e3b394a13eda)
If there is any video layer below the HWC_SKIP_LAYER, we compose that
video layer using the GPU. Unlock any previous video buffer that were
sent to the overlay.
CRs-fixed: 333974
Change-Id: I1937ca8b139f40453a3bccb0b490fd4d65fa1f52
(cherry picked from commit 48a3996a2178244ce6365f97212c55e7ab33752a)
(cherry picked from commit f4a08165b2d3be97b72287fc4001cb5c90d57c07)
Copybit module has a limited stretch to scale a clip.
Hence we need to do a intermediate stretch before going
to final stretch.
(cherry picked from commit 6503d323f9e113c0edf66e724bb422559ecbd5cb)
Change-Id: Ib8ea9a917896985d4f7d7ebf999222f2dc6f6480
This change allows composition to fall back to c2d even if the second
layer overlaps the base full screen layer.
CRs-Fixed: 326413
(cherry picked from commit b27338930d5bf3de17d03b06db6169e648d5e5fc)
Change-Id: Iaf1bf706fb216286047452173b58aeba1781cd9b
If there is a SKIP layer present, the SKIP layers are first composited
using the GPU. If there any layer below the SKIP layer that performs
any operations on the FrameBuffer, it results in undesireable results
on the screen e.g. artifacts, since SurfaceFlinger draws the SKIP layers
before the HWComposer.
Change-Id: I198236673e2a0bd19a6087ff01049061547abb47
CRs-fixed: 327392
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
Align the copybit source and destination buffer according
to the frame buffer pixel format.
CRs-fixed: 327687
Change-Id: I00a0a047f2f6d639202e8395d85902b821e2a65c
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
Implement clearRegion for C2D/MDP/CPU composition. This prevents
glClear and therefore the glFinish from being called, thus
improving performance.
Change-Id: I03d9230e03cce11d9fe7e2bd34e4df8328ad2e00
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
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
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
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
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
1. Enable composition bypass for 1 or 2 non-overlapping layers.
2. Open bypass only if video playback status is CLOSED.
3. Close bypass immediately if Video or Camera needs VG pipe.
Change-Id: I1bef030b32ff2721d00b61f7717027d4d9219d04
This change enables c2d composition in HWC by removing the temporary
flag added in the following commit:
commit 7b814382adec44275389dd18d34c790576e67988
Change-Id: Ia6705c369090b14f3a00678c4e82078bd6e58847
-- Enable HWC
-- handle overlay as lib rather than HAL
-- move copybit changes under COPYBIT_ENABLE flag (temporary)
Change-Id: I36d8f9688cd7cbd838e288e5f482d8ee5c9b2df6
Allow 1 or 2 non overlapping layers to use composition bypass.
This is an enhancement to the previous approach which uses
bypass strictly for 2 layers.
Change-Id: I879903db44cb1fddbe3e428ffa77eb67e95e0886