Commit Graph

548 Commits

Author SHA1 Message Date
Linux Build Service Account
dde6252243 Merge "hwc: Calculate viewframe from layers display frame information." 2013-12-12 08:48:41 -08:00
Linux Build Service Account
3bfb8caac1 Merge "HWC: Fix for use int reference in function call" 2013-12-12 00:09:18 -08:00
Linux Build Service Account
6ba55d898f Merge "hwc/copybit: Fix the wrong layer transform check." 2013-12-12 00:08:30 -08:00
Linux Build Service Account
23c77c865e Merge "hwc : Add hw limitation checks for MDP compposition." 2013-12-11 20:40:13 -08:00
Linux Build Service Account
b42f70f3d0 Merge "hwc: Crop source rect for the optimized destination" 2013-12-11 05:06:45 -08:00
Prabhanjan Kandula
21918db5d1 hwc : Add hw limitation checks for MDP compposition.
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
2013-12-11 15:41:38 +05:30
Ramkumar Radhakrishnan
dd38b8210c hwc: Calculate viewframe from layers display frame information.
Calculate view frame of each display from the displayframe of all
the application layers.

Change-Id: I9ba4076b7b4419bd3559417fad28b4e1de6acff3
2013-12-10 22:16:15 -08:00
Linux Build Service Account
0616b39ffe Merge "hwcomposer : Fixing copybit render buffer fence closing." 2013-12-10 00:08:14 -08:00
Arpita Banerjee
b28b309ae7 HWC: Fix for use int reference in function call
To use the integer reference, declared integer
variable to get value directly in that variable.

Change-Id: I1fd1a45580be99dd95ccbc3495e28455a4c7de23
2013-12-09 16:55:45 -08:00
Sushil Chauhan
dffbf4314c hwc/copybit: Fix the wrong layer transform check.
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
2013-12-09 15:33:57 -08:00
Saurabh Shah
c7e4f1d37c hwc: mdpcomp: Remove redundant function to program MDP
The programYUV used for video-only cases is the same as programMDP
function. Remove the redundant function

Change-Id: I1d891404a77b2a47f90c236d4d6dcbbd02143d93
2013-12-09 11:00:21 -08:00
Saurabh Shah
7445d4b04c overlay: Remove support for forced pipe configs
Forced pipe configs were used during geometry changes to track bandwidth
in driver, which is no longer the case

Change-Id: I49fb1ca1b7173da2e17ccfc8ce9b447152b9b7b6
2013-12-09 11:00:16 -08:00
Linux Build Service Account
f81272988c Merge "hwc: Reset layer-to-rotator map and fences on configuration failure" 2013-12-08 13:29:58 -08:00
Linux Build Service Account
1dfaed1ca4 Merge "copybit: Set default value on COPYBIT_TRANSFORM for Color layer." 2013-12-07 23:19:28 -08:00
Linux Build Service Account
83593a3aeb Merge "hwc: Do not use fb handle in hwc_prepare" 2013-12-07 00:26:12 -08:00
Linux Build Service Account
813d679c84 Merge "hwc: Use GPU Composition for 8x26 virtual dpy scaling case" 2013-12-06 16:32:30 -08:00
Saurabh Shah
220a30c282 hwc: Do not use fb handle in hwc_prepare
Do not use fb handle in prepare. Use displayFrame for dimensions,
align them and hardcode format

Change-Id: I5c494a74a807d3a52a1c88257494b58c583700f5
2013-12-06 16:04:17 -08:00
Linux Build Service Account
9f1f44a743 Merge "hwc: allow DMA pipe in BLOCK mode for virtual dpy" 2013-12-05 22:28:54 -08:00
Saurabh Shah
da5b3ce3eb hwc: Reset layer-to-rotator map and fences on configuration failure
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
2013-12-05 10:57:43 -08:00
Linux Build Service Account
e54fed63dc Merge "copybit: Use rounded integer crop value." 2013-12-05 01:19:33 -08:00
Yang Xu
9c1eb2be21 hwc: Use GPU Composition for 8x26 virtual dpy scaling case
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
2013-12-05 13:55:19 +08:00
Linux Build Service Account
c258d31430 Merge "HWC: Use 2 VG pipes for YUV layer with width > 2048" 2013-12-04 19:31:07 -08:00
Sushil Chauhan
2babecc511 copybit: Set default value on COPYBIT_TRANSFORM for Color layer.
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
2013-12-04 18:39:11 -08:00
Jeykumar Sankaran
1b3da407b3 hwc: Crop source rect for the optimized destination
If a layer destination can be optimized, its source rect
needs to be cropped for the optimized destination rect.

Change-Id: If9a9891200d9cea52b58b253299b4007197cd9e5
2013-12-04 16:22:34 -08:00
Linux Build Service Account
361de1d037 Merge "hwc: Bandwidth check upgrade." 2013-12-04 16:11:49 -08:00
Raj Kamal
a8c065f55d hwc: allow DMA pipe in BLOCK mode for virtual dpy
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
2013-12-03 09:54:06 +05:30
Linux Build Service Account
bff954800a Merge "hwc: Check for downscale support only when needed" 2013-12-02 02:44:04 -08:00
Linux Build Service Account
3b689fb79c Merge "hwc/overlay: Add Color layer support in MDP Composition." 2013-12-02 02:43:48 -08:00
Saurabh Shah
f5f2b137bc hwc: Bandwidth check upgrade.
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
2013-12-01 18:43:58 -08:00
Ramakant Singh
f2b51e6cce copybit: Use rounded integer crop value.
We are getting floating crop value in layer
but need to convert as integer for MDP.
Change-Id: Id1de7f61804295df40f3f699446c69860752b867
2013-11-28 12:18:50 +05:30
Jeykumar Sankaran
1706a77364 hwc: Check for downscale support only when needed
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
2013-11-27 12:55:19 -08:00
radhakrishna
c9a6741e15 HWC: Use 2 VG pipes for YUV layer with width > 2048
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
2013-11-27 18:35:24 +05:30
Naseer Ahmed
4957c52d9c display: Clean up binder interface
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
2013-11-25 20:36:13 -08:00
Saurabh Shah
b772ae381d hwc: Add GPU-preferred and MDP-preferred modes to load based comp.
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
2013-11-22 13:50:45 -08:00
Saurabh Shah
3c1a6b0a16 hwc: Replace bytes claimed with bandwidth claimed.
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
2013-11-22 11:10:20 -08:00
Radhika Ranjan Soni
d8d8f33f9a hwcomposer : Fixing copybit render buffer fence closing.
While closing the fence, correct index is not used.
Fixing the same.

Change-Id: I654ec4e649c247dca9c038e5b15184a01833bdc4
CRs-Fixed: 578408
2013-11-22 14:51:29 +05:30
Linux Build Service Account
cdfc45d4d5 Merge "hwc: Fallback to gpu comp when copybit cannot handle scaling" 2013-11-21 23:15:37 -08:00
Linux Build Service Account
7f2d2e9673 Merge "hwc: Move resource checks to a common function." 2013-11-21 13:55:53 -08:00
Sushil Chauhan
897a9c3ff9 hwc/overlay: Add Color layer support in MDP Composition.
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
2013-11-20 17:04:29 -08:00
Linux Build Service Account
15eeacdcd6 Merge "hwc: Refresh framebuffer when an updating layer is marked for GPU" 2013-11-20 15:29:52 -08:00
Linux Build Service Account
976c56828f Merge "hwc: Trim out of screen layers once only" 2013-11-20 15:29:32 -08:00
Terence Hampson
6b0a42708a hwc: Fallback to gpu comp when copybit cannot handle scaling
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
2013-11-20 15:03:45 -05:00
Saurabh Shah
173f424d32 hwc: Move resource checks to a common function.
Move resource checks, pipes, stages of mixer, bandwidth to a common
function and use it from all strategies.

Change-Id: I161fc957e2793d543b5943fbd23ae3607a4cfc87
2013-11-20 10:11:12 -08:00
Saurabh Shah
d9ff30b3a5 hwc: Trim out of screen layers once only
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
2013-11-20 09:27:49 -08:00
Linux Build Service Account
b00ab3a987 Merge "hwcomposer : Fix copybit render buffer fence usage." 2013-11-20 06:14:17 -08:00
Linux Build Service Account
1c8bdc9009 Merge "hwc: Optimize layer drops based on ROI" 2013-11-20 01:01:05 -08:00
Linux Build Service Account
2f1421fb07 Merge "hwc: Change error messages to informative messages in HWC" 2013-11-19 22:04:32 -08:00
Linux Build Service Account
e81d8360d7 Merge "Revert "hwc: Fix Flicker on video start on MDP3 target"" 2013-11-19 09:11:05 -08:00
Linux Build Service Account
00965aa491 Merge "display : Add wormholeRegion Calculation" 2013-11-19 09:11:04 -08:00
Linux Build Service Account
e57c043432 Merge "HWC : Add support for solid fill color" 2013-11-19 09:11:03 -08:00