Some apps like camera and video are running on
less fps than panel refresh rate. Hence setting
dynamic fps will help in reducing BW voting for PPP.
Change-Id: I236fe96d5c6547044083774388887638f9e32958
when swaprect and partial update enabled together, in some corner cases
change in ROI is not reflecting because of same layer handle.
Change-Id: Id50e296ab15cdd6c3727ef70fd75b4f2aad0cfa1
MDP3 can't handle one line worm hole region.
Hence passing full FB to clear and disabling the
swap rect if presents.
Change-Id: Iba4c7c0a08625dad8ebe700d71df83e37cc50797
Use swapRect feature for use-cases with one updating layer
and updating layer is overlapping with other layers
Change-Id: I1a48926c941ef3e8184e1a6f80134f4e688741eb
No need to clear a non updating region in case of swapRect.
Use dirtyRect value of updating layer to achieve this.
Before using dirtyRect value map it to respective displayFrame,
as dirtyRect is with respect to sourceCrop.
Change-Id: Ie5782a039f7075396e30405070f12ce2443c0a82
Fix cases where some errors are really warnings/info.
Print one-time events like HDMI connect disconnect as info logs.
Print the error string and type on MSMFB_OVERLAY_PREPARE failure.
An ENODEV from driver corresponds to a pipe not available and should
be treated as a warning. This could happen if a previous UNSET is
pending due to a missed vsync. ENODEV should be treated as fatal
only if it is seen continuously representing a book-keeping
blunder.
Change-Id: I730d4ac7db84c287f47805b9c74792c90cfadc6c
When the layer destination rect is not transformed properly on target
render buffer location of that PTOR layer, it results in corruption
on the PTOR layer. This corruption is observed when the overlapping
region of any below layer different from PTOR display frame.
To fix this, destination rect for copybit is calculated as follows:
i. Find the intersection of layer display frame with PTOR layer
with respect to screen co-ordinates
ii. Calculated the destination rect by transforming the overlapping
region of layer display frame with respect to PTOR display frame
iii. Transform the destination rect on to render buffer
Change-Id: I9468e194ac87de4e3d37f7b1df90bfa6473a1921
Stale render buffer data results in flickering in some corner cases.
It always better to clear render buffer before using it.
Change-Id: If87dc05bcdc88e839f162cf3db4f00aba6f1d535
Enable partial update for MDP3 targets.
Use computed ROI of mdpcomp in copybit
to avoid composition of layers outside ROI.
Change-Id: I4b23fd48cac814f8c35a3c01253dca8c297036f9
If two PTOR layers are overlapping, remove overlapping
region from bottom PTOR layer if possible to reduce total
overlapping layers in a region.
Change-Id: I695c097360ac5a8fa123e014f21380169519eb32
1. For PTOR layers, MDP needs to be configured with width, height
and format of the Copybit render buffer, otherwise it will lead to
artifacts due to incorrect render buffer reads, when PTOR layer
handles have un-equal strides.
2. Remove render buffer offset for a PTOR layer and configure MDP
with modified source crop, based on its position on render buffer.
3. A layer cannot qualify for PTOR feature, if none of below layers
intersect with it.
Change-Id: Idba65789b9ed3b699a5c70107881868c0385322d
Avoid MDP composition while system running in thermal burst mode
by reading node msm_fb_thermal_level which is being updated by
thermal daemon.
Change-Id: I3a1a85f1af35b787310ac205dbed3bb2ae86deb7
1. In PTOR feature, offset for the second overlap layer on render
buffer, depends on stride calculated by gralloc for RGBA (4 bpp).
2. If mCopyBit object exists for external, we need setReleaseFd()
Change-Id: I74e365def2a6e540b2f2ba2b294b6b1e00e0ea96
- Consider two smallest layers for PTOR feature which uses MDP comp.
- These two layers are rendered on a buffer and are queued to MDP
to acheive full MDP Composition
- This helps to acheive performance enhancement
Change-Id: I43d9306ff19cd2d7a410c885316523965a44cbd4
MDP bandwidth limitations can be avoided, if the overlapping region
covered by the smallest layer at a higher z-order, can be composed
on a render buffer using Copybit, and then it can be queued to MDP
along with other layers. It helps to improve performace by avoiding
GPU Composition in use cases like Home Screen pan. To enable this
feature, set system prop "persist.hwc.ptor.enable" to "true" or '1'
and enable Copybit HAL compilation.
Change-Id: Ib719d3dd42477837519518cc427f1b95356c28f7
In display list if one layer has same parameters
as framebuffer on index '0'. Use this layer
as FB and blit other layer(s) on top of it.
Change-Id: If38712781f24a2e27686d2b370643f51a9b05358
If the display list contains single layer and that layer
has same properties as Frame Buffer, avoid BLIT on Frame buffer
and pass it directly to display.
Change-Id: I24decaca4788432a55b550caa2a1354a670cd6fa
Conditionally compile layer's dirtyRect under QCOM_BSP in the copybit
file to prevent breaking builds that don't have this member in
headers.
Change-Id: I1669c5eefd1f48e45625797ef1508b5a6f23e6b1
We brings all swap rect level checks in HAL from surfaceflinger
for MDP3.
swap rect kicks in case of
1 Only one layer is updating.
2 No overlaypping layers.
3.Both src and dst has same value.(no scaling)
4.No video layer
Change-Id: I881958994e80b53d4969beaaf51518b727a8de78
Color layer always has zero transform because framework uses the
transform member of hwc layer to pass the color value to HAL.
Change-Id: I79fe204c558d1b6e1dd69ba635ba0bd87140b1b1
We are dividing (in downscaling case )the src rect value
to get intermediate value of dst. And due to rounding we
may not get exact ratio of src and tmp dst in kernel or
else where.Hence using ceil value.
CRs-Fixed: 618847
Change-Id: I8b95c3e00e83ff986d95e063d5927a3c57a13ff6
Remove all klockwork warnings and errors for libgralloc,
libhwcomposer, liboverlay, libqdutils, libqservice, libvirtual,
libexternal libraries to avoid buffer overflow and memory leaks.
Change-Id: I078143bcbcf5e4b342156bd8305a644566f7cc4b
It's better to check the source/dst crop width and height
for null and -ve value, may cause float exception.
CRs-Fixed: 596099
Change-Id: I34881cf37a99fb52be6429e27deba4ac12ed2474
8x10 has a product line that is suppose to use 256MB. The
intermediate buffers allocated are not needed when we can
compose onto fb frame.
Change-Id: I13fd2deb328a3ef4b6738cfe7030fe67ea7bd6c6