Change typecasting from status_t to android::status_t as it requires
the caller to be in android namespace.
Change-Id: Ib5f21874bc691fe1bd5cb7a34d7a2de54a8cbe44
Pipe estimation was necessary when the unavailability from overlay
led to GPU fallback.
With the new design, hwc uses the next best strategy, so failure
to grab a pipe from overlay is ok.
Change-Id: Id20d2e6fd24aeb5af3ab84ec9dd8c52f6bbbef8b
* In some use-cases, it is possible that there are
no AppBuffer layers on the external/virtual layer-list
during which all the pipes will be allocated to the
primary. When layers do comeup on external/virtual
layer-list, subsequent overlay sets fail.
* This change ensures that in such cases, we invoke a
padding round on all the displays to free up the
hw resources which can be used in subsequent cycles.
Change-Id: Ifac0b8f51a8719eb55b11010d05b8d11352db054
In Video-only mode FB Z-order of 0 was being used, incorrectly,
because the value was reset to 0 and wasn't changed subsequently.
Reset to -1 to prevent this. Any MDP comp strategy that needs to use
FB should set it's Z order appropriately.
If cache based mode has no MDP comp layers, fail so that other
strategies can be used, rather than succeeding with FB Z as 0, which
will at most allow GPU comp to be used.
Change-Id: Ifdae2cd5f8d8ff0e10447b1fed6ee1671260f311
Previously, the acquire and release fences for BLIT
composition were populated using same logic as Overlay,
but BLIT composition consists of separate BLIT step
before screen refresh, and app buffers are no longer
required after BLIT. So holding the buffers for both
the steps is unnecessary and impacts performance.
This change adds condition for BLIT in fence population
logic in hwc_sync and populates the right fences for the
App Buffers and Display Refresh during BLIT composition.
Change-Id: I9998a7052c0375acb32a174bdf0469d2a88f79e8
getSize was incorrectly modifying aligned height and allocating
a buffer of lesser than expected size.
All alignments should be done in getAlignedWidthAndHeight so as not
to break the GRALLOC_PERFORM functions.
getSize()'s return type is unsigned, but a signed value is returned.
Instead on error, a size of 0 should be reported.
Change-Id: Ifae5e758de8e689701cd43892324ccc0140675cd
1. Hard code the vsync for VDS during the first prepare call
with valid VDS display. We align the vsync period to that
of the primary display. Effectively, we produce at the at
the primary refresh rate and do not worry about the consumer.
2. Do not bail out on the first frame as it leads to showing empty
buffer. This leads to failures for some test cases such as those
run in CTS.
3. We need an FB layer handle check to cater for this usecase:
i. Video is playing in landscape on Primary
ii. Launch ScreenRecord app
In this scenario, the first VDS draw call will have HWC
composition and VDS does not involve GPU to get eglSwapBuffer
to get valid fb handle.
Change-Id: Idc7d989e244a83ad28ce730ecb12955bc249dc25
When we receive a buffer handle that is secure, we configure WB as
secure; otherwise we continue as normal.
Change-Id: I497e257352c103c5da7ac2dc3fd4d7fe0e0b3953
Send the entire frame (array of overlays) to driver, so that it would
check pipes params and the whole frame wrt bandwidth and SMP.
Now, the overlay's commit API just prepares an overlay object but
makes no ioctl calls.
If the driver finds the frame, as a whole, to be not ok, the
validation fails and overlay/hwc return silently.
If a certain overlay object is mis-configured or pipes are
unavailable, the driver sets the number of objects it processed.
Overlay uses this to dump the incorrect config.
Change-Id: Ifb2b7fadc6bd6d9d94a35ba3908fbd832f41447f
If VDS is connected, do not clear WB object as it will end up
detaching IOMMU. We need to keep the WB session active in order
to send a black frame to WFD sink on power suspend.
For AD use case, we will keep the WB object active.
Change-Id: Ic6db255676ca0baafd468887fc3f88eafc581cea
Vpuclient is the client side for VFM in hwc. It follows the
similar pattern of prepare and draw. It has 2 step prepare
including: setVpuSession and prepare. The setVpuSession function
passes all the layers from the SF list to VFM, which marks
the layers that it can support. After this, the layer
allocation/configuration is done, and finally in prepare the
allocated pipes are passed down to VFM. The draw function
passes the handle to the VFM to draw the video layer.
Change-Id: I5d8795de35ed98716f7fa4cd48506b488cb3cb5d
While batching up layers for load based MDP composition, filter
out dropped layers.
CRs-Fixed: 607196
Change-Id: I78031f1094330e1d960ceb56d5441c27a041e48c
While optimizing layer list for composition, drop the layers
blindly on encountering NULL ROI.
CRs-Fixed: 605482
Change-Id: Ib81f43e8f34d140e6222135f3caa9491cdbbd41e
* Useful to estimate GPU/MDP performance for different resolutions.
* MDP:
Every layer is downscaled/upscaled to primary panel resolution.
* GPU:
All layers will be composed in required resolution to FB.
FB is downscaled/upscaled to primary panel resolution.
* Steps to follow:
step 1: adb root
step 2: adb shell setprop debug.hwc.fbsize XRESxYRES
step 3: adb shell stop
step 4: adb shell start
Change-Id: I82a032df87c91549c49a9cdbd981ff02f105ff2e
Added a new layer flag: HWC_VPU_PIPE to indicate that the layer
will be drawn by VPU. There is a corresponding MDP pipe
flag: MDP_VPU_PIPE, which should be set for the VPU layers to
indicate the layer will be drawn by VPU, so that MDP driver does
the appropriate settings to allow this process.
Change-Id: I61270aca633bb831bf34d413877bf925a3d2ac37
* When a non-WFD virtual display device (SSD/
screenrecord) is active along with
non-hybrid WFD solution(WFD faked on
external), give preference to non-hybrid WFD
device over non-WFD virtual display device.
* This is needed only in cases when WFD is
enabled via v4l2 rather than using VDS api's.
Change-Id: I63e53baa214bdcdac19430ca30b939cdd7416cbb
Currently the idle timeout is in a range from idle_timeout / 2
to idle_timeout, since we didn't need precise values.
Change this to a fixed value using timestamps, because the timeout
is too low and warrants precision.
Change-Id: I9cec1db7f1d7fda2996ab80449c61269915f6be4
8084 supports triple displays concurrently. Primary, HDMI and WFD
can be active at a given instant.
WFD use V4L2 approach. This feature works if WFD is initiated via
settings app and not with wfd-client apk as wfd-client
use HDMI hotplug approach.
Change-Id: I9160ed83b1babe939305b0f238c8e0a8a7c51d07
Type casting to float prevents rounding off errors which could
result in invalid or unexpected results when doing calculations
with integers.
Change-Id: I6d5c233c013322c4e9c7f7db61b5c604f915643c
Use outbuf handle width to configure display xres, since that would
have the necessary alignment. The outbuf is guaranteed to be valid
by the framework during hwc_prepare.
We use the framebuffer layer's display frame to obtain the actual
width. For example, the actual width could be 720 but the aligned
width would be 736.
Change-Id: I5afe38001be8116e1ad6a9f46c7ecaa50b5f25a2
In the current composition strategy we bail out if there are no app
layers present. However, this leads to undesirable behaviour if the
FB contains valid data that is expected as output. In this patch we
copy the FB to the output buffer to satisfy this use case.
Change-Id: If905d8b0652faf73b9aecad1abc760f21967807f
For high FB resolutions do not specify required
pipe type unless a specific pipe is needed. This
makes RGB pipe available for FB in GPU fallback
scenarios because of SMP failures.
Change-Id: Ib52029aa276b5736d46a48489d280e7f65de2eab
1. Define classes for VDS and V4L2 based WFD solutions.
2. Overload the functionalities for VDS and V4L2 WFD solutions.
3. Instantiate VDS object or V4L2 object during hwc init based on the
property persist.hwc.enable_vds set by the user.
4. VDS solution is not verified as it requires some dependent changes.
Change-Id: I74bf944d532da138c850d4ec0c20b4a881489efa
- Do not use MDP composition on secondary disp when the primary
is a high resolution panel.
- MDP would use decimation on secondary and on fall back it uses
GPU, which could lead to quality mismatch
Change-Id: I4c92df89563de6c8387eaaaa5f450ad7cc09b647
While batching in partial mdp composition, calculate FB batch
z-order after dropping the z-order of dropped layers lying below.
Change-Id: I92752f67e797a834aae6a575af2f8fa42c9c0911
CRs-Fixed: 601614
Currently HW revisions are maintained separately between kernel and
user-space. To optimize this there will be single place, exported
msm_mdp.h, where HW revisions will be maintained.
Change-Id: I815eb9bd32f17928356e58a38260cee69b019a8b
This change optimizes layer dest rects and updates its
corresponding source crop value on sourceCropf.
Change-Id: Ie921908aa23ae029d2cd3add61795f71a6e5294e
Macro tile is enabled only if all the conditions are met:
1. GPU hardware should support Macro Tiling.
2. MDSS hardware should support Macro Tiling.
3. USAGE flags shouldnt contain GRALLOC_USAGE_SW_READ_OFTEN and
GRALLOC_USAGE_SW_WRITE_OFTEN.
4. RGB 16bit and 32bit formats.
5. persist.hwc.macro_tile_enable flag should be enabled.
PRIV_FLAGS_TILE_RENDERED flag is added to indicate whether the layer
is rendered/composited in Macro Tiling or Linear format.
Change-Id: Ie3139839c84d76c5d1a2300f33910a09eb7336f4
- Expose API to get maximum upscale value supported by MDP
- Check for MDP limitation before programming pipes
Change-Id: Id9faac54a7b3e393b6c4b60574e5e985b495bf59
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
For mpq8092, RGB888 is the output video format, so need to make
it a video buffer type, so that VIG pipe gets allocated for
it. Another reason is that GPU cannot process RGB888, so marking
it as a VIDEO layer will ensure that it will get picked by MDP.
Change-Id: I5d1812a70f5e4d1fb7448d0a145a15c07c6fc188
Set default idle timeout to 70ms (~4 cycles on 60fps panel + some extra)
from the earlier 2sec.
The GPU timeout is around 80ms after which it turns off its rail,
clock and bus vote. So having a draw cycle before that is beneficial
Change-Id: I03291a4b8fd0707839567987febe1c088e21c92d
- Initialize copybit object only when its used for composition, as it
was causing on unnecessary dup of the releaseFence in hwc_sync
- Its used only in case of MDP copybit
- Remove unused copybit object for external display
Change-Id: I876b7b8c5754e469613761789193bda321134c9f
Standardize the constructor/destructor init/close of internal
components.
Also internal components are allocated dynamically, with pointers
maintained in parent. This should facilitate gathering internals
from objects into arrays.
Change-Id: I8606fa436cf03fb75e43dc0f8341a05901751a11
- Client can call this when it want to pause/resume wfd
- Calling this will make sure after pause, black screen
is shown on the sink
- Currently used by the SecureDisplay module
Change-Id: If618edf76a82abe49fb676d3845ca1f1d5a8bf25
Fallback to GPU composition for the external UI layers if Actionsafe
or WFD/HDMI downscale mode is enabled that requires scaling.
Change-Id: Ie03da35e1c2e78434de00f92ad6c2e5073fc33b8
VPU and MDSS on MPQ8092 supports the 10 bit compressed pixel format
to reduce the memory access bandwidth
Change-Id: I903c52640120c4bf4252405831b98d1ef92c1572
* Call overlay_set even if there are no change
in mdp_overlay params.
* Remove mPPChanged and mLkgo variables and associated
functions.
* This is needed because there is no value add in
avoiding set calls when there are no change in params.
This also helps us in avoiding hal hacks where we
need to force call overlay_set due to driver issues.
Change-Id: Ib626acbdce93185ff037c9581d07bbe428f5f159
Tearing was seen when mdp was performing clear on fb because
acquire fence was not being passed in.
Change-Id: Iea5bcc50efc783497c770779faae59f933252551
DMA setting cannot be estimated ahead of time,
so do not do load based compostion where videos
can fall to GPU.
Change-Id: I01ccc26044df6bced428bd164f5c50f87aff99fd
- This binder interface can be used by clients to know the
active visible region for a display(pri/ext/virt)
- When external orientation is used, return the destFrame of
the FrameBuffer layer, as its the viewFrame
Change-Id: I7cfd149c76c16b9a3031103c89b1932d44bcbecd
Currently, if programming MDP fails from a certain composition
strategy we fall back to GPU. This change, redesigns so that
composition types can have a chain of fall back strategies if
programming MDP fails. This happens currently only if resource
checks fail.
Change-Id: Ia7fb71788e595e59a91e95b1fb4eac3faea9451e
Invalidate on receiving PANEL_ALIVE=0 status, otherwise
during static wallpaper, panel will be reset only after
next screen update.
Change-Id: I6f5264367c8bd889b9103ed74641ac4a60538b57
CRs-Fixed: 591454
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
If there is a GEOMETRY change try the load based compositions first
and then cache based. Vice versa otherwise.
Change-Id: Ie7ce6017e867f47e975487a72fba81f5d94eb9e3
Vcap on MPQ8092 can capture the content in 10 bit pixel formats.
VPU on MPQ8092 also can output the video in 10 bit pixel format
Change-Id: I3f3e938a3e4b2225d870c1d301d4d7bee6cd65f5
Earlier, on configuration errors, we simply drained the fences held
by current rotator objects and went to GPU comp. The rotator objects
were deleted in the subsequent rounds, if they remained unused.
If we don't use GPU comp on failure but use other strategies, then we
need to mark the rotator objects for a display for reuse, so that
other strategies can use them.
Also any failure resets on overlay or rotator need to happen from
functions that call configuration helpers rather than the helper
themselves. Leaving cleanup to black-box helpers is not desirable.
Change-Id: I59b5b1bb774b82ee85a037e934c9d2d023db30af
For implementation defined formats which go via HWC, set the
default value to RGBA8888.
Change-Id: I741504d54694ac061ecd6c870cb8f815cc61ab24
CRs-Fixed: 588596
Restrict scissor rect within view frame boundary to avoid displaying
the layer content out of view frame boundary.
Change-Id: Iea19a4c4880a0c495d2f215e6cfd0eb41b65b785
1. Use viewframe of external display to compute Aspect ratio position
for external.
2. Use viewframe to find the crop rectangle of the frame buffer to
configure rotator for external orientation usecase.
Change-Id: I564c70f202176c8b1f707cbafc08cbbb2abde383
Fall back to GPU for one cycle at the start of animation and display
the frame buffer for the subsequent cycle till animation ends.
Change-Id: I6c651cebaf4694f326d6e32ae485e014f391577c
Combine the redundant code for FB programming and source split
adjustment into appropriate functions.
Change-Id: Ib99a2297a672e5ef40acb9f246021e57e41cd759
Reset the updating layer count when new batch is started.
Else this will effect framebuffer z-order.
Change-Id: If746a5ea4b482cd7b55ba95007a3b8d7f1dc9b6e
CRs-fixed: 584021
Add hw limitation checks for MDP composition once
we identify actual layers for MDP. This should be generic
way for all basic hw limitations of underlying MDP/MDSS.
Current limitations:
- a-family : MDP can not handle alpha scaling.
- 8226 & 8974 : Can not handle if multiple layers need
downscaling and blending
Change-Id: Ia944802d798f2d0e9cd4515d7e9854c7314cac78
CRs-fixed: 538803
This API is meant for system level users that need to get/set
various display attributes that are normally not available via
the regular Android framework channels.
Initially the APIs exposed are to check HDMI status, get display
attributes and set HSIC data.
Only physically connected displays are supported for now.
Change-Id: Ia783ce2ab0c4599a54c992171e01e2f0504550dc
* Donot compose external/virtual layer-list when
when external/virtual is in pause state.
* Marking the layers for GPU composition when external/virtual
is in pause state would update FB_TARGET layer which inturn would
affect partial mdpcomp after resume.
Change-Id: Id2806bd7156085c00158a31dff3c3dc4c2b61146
At 90/270 degree rotations, if there is vertical or horizontal flip in
layer transform, it is wrongly interpreted by display HAL due to wrong
check. So Copybit destination rectangle width & height are not swapped
which leads to unwanted out-of-range scaling.
Change-Id: Ib917b907d1284b91b7d6c25038050bbcb503a792
The programYUV used for video-only cases is the same as programMDP
function. Remove the redundant function
Change-Id: I1d891404a77b2a47f90c236d4d6dcbbd02143d93
Forced pipe configs were used during geometry changes to track bandwidth
in driver, which is no longer the case
Change-Id: I49fb1ca1b7173da2e17ccfc8ce9b447152b9b7b6
When a rotator or mdp configuration for a display fails, reset the
layer-to-rotator mappings for that display and reset the release
fences for the rotator objects used for that display.
Note: The rotator itself is offline and not tied to any mixer. It is
from the mappings that we deduce which rotator object was used for
layers of which display. Also we don't delete rotator objects held
for a specific display, since during stability runs, failures could
repeat each round and we end up allocating and deallocating memory
unnecessarily. The rotator objects will be deleted automatically
when not required anymore.
Change-Id: I9a67f02574be30be3b96b3575f60530cb1c89e10
Add device version inline checks for hardware devices.
Also fixes the issue of 8084 being treated as 8974v2
owing to the expanded range.
Change-Id: Iaeefb505e14e022b6e542daa8b84a87a22e7f69a
For 8x26, if there is only one layer which needs scale for
secondary display, while no scale for primary display, DMA
pipe is occupied by primary. If layer changed and need to
fall back to GLES composition, virtual display lacks DMA
pipe and error is reported.
To avoid this case, use GPU composition for virtual display
scaling case on 8x26.
Change-Id: I42297a18006517532e30d1a01c67ff8ca187482a
1. For Color layer, set zero transform value on COPYBIT_TRANSFORM
otherwise it causes MDP IOMMU page fault at 90/270 degree rotation.
2. Color layer is part of Copybit context list, so no need to call
msm_copybit() explicitly for it, that will be called during flush.
Change-Id: I4421b4bddfeca56b0ad8534d921c3d743a7d92bb
If a layer destination can be optimized, its source rect
needs to be cropped for the optimized destination rect.
Change-Id: If9a9891200d9cea52b58b253299b4007197cd9e5
- should not be enabling external downscale when primary panel
is of higher resolution
- while enabling downscale on external, also check if primary is
within the Full HD resolution
Change-Id: I871a435834b6bca9b0e6899680aa8282dddad624
Right now clear is already being done in SF using GPU for
HWC_BLIT layers, no need to clear layers a second time.
Change-Id: Ie6ed6a2e7ad3b24fae6e6bfd81988c604f07eac1
For portrait videos case on WFD, driver supports multiplexing
of DMA pipe in LINE and BLOCK mode.
Loosen the requirements to allow DMA pipe in block mode for
portrait case of virtual display.
Change-Id: I5821501f89b17bb2d29c425aee0a6c16b2a4783b
Initialize release and acquire fence fds of Copybit context to -1.
Otherwise fd 0 gets closed in first call to msm_copybit, which is
valid fd and it leads to bad state if fd 0 is being used as stdin.
Change-Id: I01278bbb580d61e2d4b4c7b3f7b346274af6d914
Use the low and high bandwidth values exported from driver per target
Use the low bandwidth value when the system has at least 1 video
mode panel, else use the high bandwidth value.
Newer targets could have bandwidth exceeding what an uint32 could
hold, so change the bytes read to be in gigs.
Do not use the framebuffer handle to get size, since the handle may
be null.
Change-Id: If3124ddc33334eba80d34ab7d8fc64d1b46697ce
Parse low and high bandwidth from mdp capabilities sysfs node
/sys/class/graphics/fb0/mdp/caps
This will be specified in kbps.
Conflicts:
libqdutils/mdp_version.cpp
Change-Id: I2956e340106d47bb49f5744e4f9a4a0bb796f6e3
This change provides APIs for this mechanism. In a case where
pipeid corresponding to the layer needs to be reserved, then pipe
session could be initiated for that pipe. This will ensure that
the pipe is not garbage collected, and is manually destroyed when
the session (or pipe requirement) has been ended. This change
also provides the api to locally allocate the dest for the given
reserved overlay pipeid.
Change-Id: I3fec3e26f69305c280395b7a92edf9e457398052
Check for downscale support only for layers which needs to
be downscaled. Fixes issue where we bail out for all layers having
width more than MAX_LAYER_WIDTH even when they don't need scaling.
Change-Id: I19ee4d69e986390ed3df122b8ca9c0e102f3f916
To minimize usage of decimation when 4K x 2K video is played
on primary, split the yuv layer into 2 halves and configure
each layer to individual VG pipes. With this approach,
decimation can be avoided in some 4K x 2K video use cases,
thereby improving performance.
Change-Id: I7cddfab787c50f6ff132eaa7f5a3d9cfd636c282
The current binder implementation is inflexible when it comes to
adding new input/output parameters. It also needs a lot of
boilerplate code written when adding a simple enable/disable type
command.
Instead, let clients specify the parcels they want to pass and
unparcel them at the end points only.
Please note that it is assumed that all commands coming in
need the same permission checks. If this is no longer the case,
some commands need to be split out on the receiver end in
IQService.cpp.
This change also simplifies the code end clients need to write.
They should be able to include QServiceUtils and call a single
function to set the binder up and make the call.
Change-Id: I4db66f2427ecf16d7a6264462ae85815217a16b1
GPU's perf is proportional to the number of pixels it processes, so
the load based strategy that prefers GPU, attempts to load it less
in terms of pixels, and at the same time makes sure the MDP has
enough pipes and mixer stages.
MDP's perf is real time and proportional to the instantaneous b/w
which is a function of overlaps. So the load based strategy that
prefers MDP would look at sending only as many full-screen layers
that MDP could support.
This mode is used when the GPU-preferred mode fails.
Change-Id: I3221a94bb01c43112370c248cd4ab217f2bd8ed1
1. MDPVersion class can query the capabilities using sysfs node.
Since sysfs node can be read with out opening framebuffer, it is no
longer required.
2. New internal functions updatePanelInfo, updateSplitInfo are added.
Change-Id: If506e600fb14401d8bf2361aac969c7e29a5d50a
Bytes claimed doesn't reflect the panel refresh rate.
So use the bandwidth claimed instead which factors this in.
This is important when 2 displays are running at different
refresh rates.
Change-Id: I3ab9573e43b8c25c31e01888fb2b181469b9e91b
Use new GFX API compute_aligned_width_and_height to get the stride
value for RGB surfaces.
Backward compatible with GFX old API when old GFX library is used.
Change-Id: I15b0954602b816bf4e88f48622494144fc77c14f
1. Color layer has a destination rectangle, RGBA color and plane
alpha. There is no gralloc buffer. Layer flag "HWC_COLOR_FILL"
denotes a Color layer.
2. There is no color member in HWC layer, so RGBA color value
is passed via the "tranform" member from framework to HAL.
Change-Id: I8769fd3f5febcaf952a1456de0a4262679c9a0e4
Defines generic metadata structure for VFM. An array of VFM metadata
structures is used to keep the libqdutils agnostic of the internal
details of VFM metadata.
Change-Id: I5513b5f88b0f18687c0f563f2fe25eb9481887bf
For MDP3 we cannot support scaling more/less then 4 times. Copybit
will use intermediate buffer to run scaling operation between 4
and 16, by going through MDP3 twice. But will not continue to do
so for scaling factors greater than 16 because operation takes too
long. It is in this case that we will fallback to gpu composition.
Change-Id: I99c05f6c70307823d0497cc8f9469bcc15178fea
Move resource checks, pipes, stages of mixer, bandwidth to a common
function and use it from all strategies.
Change-Id: I161fc957e2793d543b5943fbd23ae3607a4cfc87
Instead of trimming out of screen layer dimensions for various
operations repetitively, trim and store.
Will also prevent accidentally missing out on trimming.
Change-Id: I8800586070ec433aa1fcbb3aad73ec29c9c9111e
Add support for using scalar calculations from custom library.
The calculation will override pipe configurations if required on
basis of format, scaling, split display etc.
Change-Id: I53c73431b70b5b339ad09c19ac8792f0fc96aaaa
For copybit cases we should clear wormhole region
rather than nonwormhole. Adding support to calculate
and clear the same.
Change-Id: Ie85d1b484174199e35f43ce95b30de1fac9c30b2
We are using the solid fill feature for
clearing the wormhole region using black
color.
Using the src buffer same as dst buffer to
avoid kernel checks for this use case.
Change-Id: Ia46aded9b067ece83c9df1f2c2cdd6b017fa64ea
Fixing array size to hold fence fd to count of render
buffers used in copybit and use it to store
fence of corresponding render buffer at the index.
Change-Id: Ic5e7f264c2a81ded2a0f61ef138e59a093b0023a
When MDP cannot handle an updating layer and we marked it for GPU,
make sure framebuffer is refreshed for that frame. In the current design,
only video layers fall into these catches. But we may need
this change for future composition strategies.
Change-Id: I1d6a92da13feef4b353fa5e196d42f91148412e5
CRs-Fixed: 575340
- Iterate layer list to drop layers from composition that
are not going to be visible inside the updating ROI.
- No ROI when skip layers are present.
- Reset dropped layer info on full GPU fallback.
Change-Id: Ib544526a8c28ffdd16b5be12f73d57d10d207c39
When we try MDP composition only for secure layers, bail out if
secure layers are not present. Otherwise partial MDP composition
succeeds with all layers marked for FRAMEBUFFER.
Change-Id: I3f968835951320bb6c5873ba77fedef8a359b7bf
Seperate out rectangle deduction from the layer cropping. Update
layer sourceCrop and displayFrame after deducting the rect value.
This makes the function generic enough to be used by other
modules.
Change-Id: I587ac951357af823a1bf5e06c15ff47ac6a9c2a0
1. Color layer has a destination rectangle, RGBA color and plane
alpha. There is no gralloc buffer. Layer flag HWC_COLOR_FILL
denotes color layer. MDP BLIT happens via MDP_SOLID_FILL mode.
2. There is no color member in HWC layer, so RGBA color value is
passed via "tranform" member from framework to HAL.
3. Update HWC query to enable framework to query for Color layer
support in HAL, at run-time.
Change-Id: I2c698007c1689779fe86d549093bb5285432dc5f
- Add correct target information to make file
- Remove incorrect target names in the src files
- replace sprintf(banned api) with snprintf
Change-Id: I846ff3d5dcc5acc843c2c83506deafadd30b4942
Reads memory info from kgsl to track unaccounted for GL and ION
memory. Right now it has to parse every allocation and then
cross-reference it against /proc/pid/smaps. It would be faster
to modify the kgsl driver to keep counters that could just be
read directly.
Bug: 10294768
Change-Id: Icb17558f03ce53bc594fbee097e51fe82e15dc31
- Always use sourceCropF instead of sourceCrop.
- Change it to sourceCropF at places where sourceCrop
used
Change-Id: Ia64050a41a174f3f038c9b88d527d70c2240f2d9