Do not disable mdp comp on external based on primary resolution for
quality concerns. The app could still be rendering at a lower
resolution and disabling will cause performance issues in mirroring.
Use the newly added property persist.hwc.maxseclayers to restrict
mdp comp on external for desired devices.
Change-Id: I97ed575ef545890c1e71e2d8ab16130d04927b41
Add support for configuring the maximum mdp layers on secondary
via persist.hwc.maxseclayers property. The default value is 1.
Move the check for max allowed layers to postHeuristicsHandling
rather than it being a part of strategies itself.
Change-Id: Icae6cb7e400fd95f60e0b3eb64e6b768e4dbd861
Use intersection of PTOR layer and the layers below it to
address usecases like
* PTOR layer is not peripheral to the layers below it
* Some layer/layers completely below PTOR layer
Change-Id: Ieb456a60df12cc2f5ad46fbbba2d99a16853278d
Check for planeAlpha along with HWC_BLENDING_NONE as the latter
is set if the layer is Opaque irrespective of planeAlpha value.
Change-Id: Iaee7efe662189ba3a2562f79c2d109da831ac94d
The layer clock is dependent on vertical downscaling and horizontal
dest width (pixels). When comparing to mixer's requirements,
line-time can be ignored since it is common to both pipe and mixer.
Also since mixer's scale is 1, layer's downscale * dest width needs
to be compared to mixer's width.
Change-Id: I6d28abc33f8a57a15101bf012b7706e163e2dc69
Remove support for toggling BWC via property and add support to
toggle BWC over binder. This will take effect only on targets where
the driver enables BWC.
Example to disable BWC:
adb shell service call display.qservice 17 i32 0
Where 17 is the code to toggle BWC, 0 to disable.
Change-Id: Ie534ab4643a72d47f5a985fe0b32e134bf0e7af3
- Read MDP sys_fs node for blending stages supported per mixer
instead of hard cording the value. This makes the implementation
scalable across chipsets.
- Add binder support to change the max pipes per layer value
dynamically for MDP comp.
Change-Id: I3b83f4bdc2e2e81ca55c54fc6bcfd61c55fef501
For PROTECTED but NON SECURE layers set MDP_SMP_FORCE_ALLOC flag
to allow SMP allocation and prevent GPU fallback
In Such cases if video resolution changes dynamically
it fails to display layer due to GPU fallback.
Use this flag for FB layer composition and depricate
MDP_BACKEND_COMPOSITION flag.
Change-Id: I9ab7cbdd2e12b56dfa67d5b4b3ff6b2dcd0096be
1. Remove AIV video mode composition stratergy and reuse video only
composition stratergy to achieve the same functionality.
2. Drop all non AIV layers from the external list at the start of MDP
composition prepare and fall back to video only composition.
Change-Id: I34760e2df57cfbb923a6be0182e632c9ddd6aa07
1. This feature is targeted to remove any window/pillar boxing on
external display when zoom mode is enabled.
2. Preserve the aspect ratio of the external display by cropping and
upscaling the tagged video layer during video playback on external.
3. User can tag the layers to be displayed on external display.
4. Set sys.hwc.windowbox_feature to true to enable this feature
Assumptions & Limitation:
1. Tagged layers for external display will also be displayed on
primary display along with untagged layers
2. When zoom in mode is enabled, source crop left and source crop
top of a tagged video layer is always assumed to be set to
positive integer value. So pinch zoom feature or zooming in top
left corner of the video use case cannot be supported.
3. Except tagged video layers, all other tagged UI layers will
use GPU for composition on external display, So all tagged UI
layers cannot be secure layer.
4. Rotation animation cannot be supported for this feature.
Change-Id: I8b934cf616ec23b4359d0120f9a291178a2781c6
memset dropArray and set dropCount to 0 before proceeding
to identify if refresh rate needs to be changed. Not doing
this will result in dropCount containing junk value which
will impact mdpCount. This prevents us in changing refresh
rate in cases where it could be changed.
Change-Id: I4081062157620ca0dc0b4a6fed0689b2869efb91
Enable partial update for MDP3 targets.
Use computed ROI of mdpcomp in copybit
to avoid composition of layers outside ROI.
Change-Id: I4b23fd48cac814f8c35a3c01253dca8c297036f9
Add support for dynamically setting idle timeout values.
Move default idle timeout setting to IdleInvalidator.
Fix static var naming, handle errors from IdleInvalidator in hwc.
Property debug.hwc.idletime is removed with this change.
Example:
1) Set idle timeout to 100ms
adb shell service call display.qservice 16 i32 100
16 is the code for SET_IDLE_TIMEOUT, 100 is time in ms
2) Disable idle timeout
adb shell service call display.qservice 16 i32 0
Change-Id: I60e15a3ac869b4e9f4015b3be50a35c90d00d404
--In "always_split" mode, split FB only if the updated portion of
FB's width is less than mixer width
--While deciding whether or not to allocate the 2nd pipe, account
for 90 transform in crop width
--Crop minimum width limitation of at least 5 pixels does not apply
to targets after 8974 v2.
Change-Id: I83b4690216a75c0d57e7e4e7b18b4531bb22df05
- The primary panels refresh rate can be change by clients
- Required refresh rate will be set by client using metadata
- If there are multiple clients requesting, it will be used only
when the refresh rates are equal, else it resets to default
- Set the new refresh rate only when there are only YUV layers
updating or when the list has only one RGB layer updating
- MdpVersion gets the dyn fps capabilities from panelInfo
Change-Id: If3e7e6b2f028eb301399c4d32c748eed8a97c41f
1. Add support for Dynamic Resolution Change
We add support for DRC on virtual displays. This is achieved
by reading the width and height attributes that are set as
part of the buffer handle metadata.
For the WFD use cases, the WFD MultiMedia framework will
update the width and height during DRC by using setMetaData
API with UPDATE_BUFFER_GEOMETRY. We then proceed to configure
WB with the new resolution for subsequent frames.
2. Update WB dump with output buffer format and resolution
Update WB dump with output buffer format and resolution. This is
helpful for debugging purposes.
Change-Id: I537277499041bffc7bfc5c6e3d024b67f80fce44
1. Fall back to video only composition instead of full GPU composition
to release all pipes assigned to RGB layers for primary display
during external configuration and padding round. Do this only for
the target which has total number of pipes >= 8.
2. This resolves blinks when HDMI is connected during secure video
playback usecase.
Change-Id: I6cf3a20c3eb3c2b82ad6c70eba84292cf59ecf26
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
In secure RGB usecase, we mark secure RGB layers for MDP composition
as GPU does not support secure RGB composition even if skip layer
is present. In markLayerForCaching function, when we encounter a skip
layer marked for MDP composition whose handle can be null will flag
"Layer handle is NULL" as error. So we can enable this message only
when MDP debugging logs are enabled.
Change-Id: I8be579636bf1de12a032c289e2542614fbbd375c
Enable MDP Downscale feature for primary resolution greater than
2048 only for the targets that supports source split.
Change-Id: I21871b099f74543aa8c2416bac41e3a16d4ce72d
Add error log to MDP Comp Simulation failures when none of the mode
succeeds and hwc falls back to GPU. This is enabled only for primary
display.
Change-Id: Id449397a933a9670c9cae1f0d70ab700163b5e6b