Commit Graph

211 Commits

Author SHA1 Message Date
Linux Build Service Account
3cc3fa5dff Merge "hwc: Extend partial frame update for split displays" 2014-05-19 01:02:05 -07:00
Linux Build Service Account
11d5e35f66 Merge "overlay : Rely on 8x16 pipe strategy for 8x39." 2014-05-16 05:43:36 -07:00
Linux Build Service Account
b6c714c901 Merge "hwc: Handle validateAndSet failures in AD prepare call" 2014-05-15 17:33:42 -07:00
Jeykumar Sankaran
6c7eeac178 hwc: Extend partial frame update for split displays
Extends partial frame update support for split displays by calculating
changing region(ROI) independently for each half of the screen. In case of
only one half updating, display driver shuts down the DSI/MDP mixer control
of the non updating half.

Maintains two ROI's for each display. In case of Non-split
displays, only left ROI is updated.

Change-Id: I8a67fe40aac665a48b6f8a46beffb9f8027851b2
2014-05-14 17:45:24 -07:00
Tatenda Chipeperekwa
88fe63557d hwc: Handle validateAndSet failures in AD prepare call
When validateAndSet fails we must reset the mDoable flag to false and
close the fb device. This will prevent making a draw call using
invalid resource references and prevent any fd leaks.

Additionally, we should only turn AD on if there are no configuration
errors during prepare call. This will prevent toggling AD between
on/off state in the face of continuous failures.

Change-Id: I15502dbf64c6203092aa13e001bab5d27b0e17ec
2014-05-13 12:50:56 -07:00
Prabhanjan Kandula
958ffa9693 overlay : Rely on 8x16 pipe strategy for 8x39.
Since both has same number of pipes with similar
features like scaling capabilities, for now rely on 8x16.

Change-Id: Ief51bb5c70d8aef7dca3d791f8b4d62a4c5392ff
2014-05-13 18:08:38 +05:30
Saurabh Shah
60e8bdebae hwc: Enable source split for targets with single dsi
Enable source split for targets with single dsi. This has the
benefit of using 2 pipes for layers whose width (crop) is higher
than line width.

Change-Id: I147136a3eb786e1af7b63508d65c010e88e358ed
2014-04-30 14:46:03 -07:00
Jeykumar Sankaran
880da83ec1 hwc: Don't validate dropped layers for MDP support
Ignore dropped layers while checking MDP support for layers
when trying for full MDP composition.

Change-Id: Ia11594173759e9dcc321d72ef425615281c35b7c
2014-04-29 09:12:20 -07:00
Linux Build Service Account
64e1ce83b7 Merge "hwc: Add target specific checks in hwcomposer" 2014-04-28 22:26:59 -07:00
Linux Build Service Account
ac7a7dd410 Merge "hwc: [8x26]Never allow primary get DMA pipe when external connect" 2014-04-28 22:26:58 -07:00
Raj Kamal
068f4575f6 hwc: Add target specific checks in hwcomposer
* Mdss driver supports DMA-Multiplexing on wb interface
for certain targets. Add overlay get function to query
this info during pipe allocation for wb.

* UI Scaling on external is not supported on certain
targets due to the lack of availability of pipes with
scalars. Add overlay get function to query this info
to disable action-safe calcs, DRC and others which
require downscaling.

Change-Id: I1726caa4634f72d781561e797078648524ea2eef
2014-04-25 14:18:32 +05:30
Jeykumar Sankaran
7c85238f0c hwc: Use layer dirty rect to calculate frame's updating ROI
Use layer dirty rect instead of display frame to calculate frame's ROI.

Change-Id: If5fe93da7815efdf9b44ed683a4d80b397921cf1
2014-04-24 10:43:02 -07:00
Xu Yang
1e686f6607 hwc: [8x26]Never allow primary get DMA pipe when external connect
For 8x26, if external display is connected, DMA pipe should never
be occupied by primary display. Otherwise, external display would
lack DMA pipe if switch to GPU composition.

This patch refines former commit: 9c1eb2be21

CRs-Fixed: 640934
Change-Id: Idc64b724cfacf9e8e22ca73e4e443e8d989e1212
2014-04-23 09:33:47 +08:00
Prabhanjan Kandula
8e6f914e66 hwc : Enable partial update if panel supports it.
Rely on panel info shared by driver and enable
partial update if it says as supported. Use the
existing property to disable partial update if
required for debugging.

Change-Id: I75d5dcbbfea08515d17150054ca91367319b929c
2014-04-22 18:02:56 +05:30
Linux Build Service Account
64fa249253 Merge "hwc: Skip dropped layers in video only composition" 2014-04-19 04:20:24 -07:00
Jeykumar Sankaran
eb3a5e2656 hwc: Skip dropped layers in video only composition
No need to draw dropped layers while doing video only composition
since they are lying outside updating ROI.

Change-Id: I7bef731538e39a5b16f17314ad31f0c4e7f2b618
2014-04-18 09:35:55 -07:00
Linux Build Service Account
37059a258a Merge "hwc: Set MDSS_MDP_DUAL_PIPE on both pipes" 2014-04-16 15:22:49 -07:00
Saurabh Shah
97e2d80865 hwc: Set MDSS_MDP_DUAL_PIPE on both pipes
Set MDSS_MDP_DUAL_PIPE on both left and right pipes so libscalar
can detect the pipe pair.

Change-Id: I2c77238de1c7f81d4e17f516680a63462482910e
2014-04-15 10:54:29 -07:00
Saurabh Shah
c62f39861a overlay: Support for returning pipe based on capability
Add support for returning pipes based on capabilities.
getPipe() API takes in pipe specifications like format class,
scaling, display, mixer, fb and decides what pipe to return.
The nextPipe() API is now just a private helper.

Change-Id: I0ab809662c0ad6297e19a44f39264ee929944d13
2014-04-14 10:17:11 -07:00
Linux Build Service Account
c4f9b0b623 Merge "hwc: Add rotator obj to layer-rot-map if acquired" 2014-04-04 17:33:33 -07:00
Linux Build Service Account
40af717d8f Merge "HWC: Minor fix in 4k2kYUVsplit feature" 2014-04-03 21:54:27 -07:00
Saurabh Shah
dd8237acd1 hwc/overlay: Add support for pipe priorities, 1 pipe config for FB
If using source split to stage 2 pipes on the same mixer stage,
the left pipe needs to be a higher priority than the right.

Add API in overlay to compare pipe priorities and use this in
source split config to stage pipes accordingly.

Add support for 1 pipe config for FB if updating rect is within 2048
pixels.

Change-Id: I8b33d5ebd0f8765ee842bab128d8abd67a110145
2014-04-02 13:22:53 -07:00
Dileep Kumar Reddi
4cff928d01 HWC: Minor fix in 4k2kYUVsplit feature
Increment fbZ when 4k2kyuvindex matches with fbZ,
otherwise we see momentary flicker as right half of
4k2k YUV layer and fb layer have same z-order.

Change-Id: Ia900e102b6d4670b9bfdfd4e52ef360d1d813cab
2014-04-01 13:10:20 +05:30
Saurabh Shah
39240c9124 hwc: Add rotator obj to layer-rot-map if acquired
Add rotator obj to the layer-rot-map soon after its successfully
acquired. This makes sure that any object allocated is accounted
for, irrespective of whether rotator configuration succeeds or not.

Change-Id: I94102d9c607cf61b2eccdf7f2445bb07d309d35c
2014-03-31 10:31:42 -07:00
Linux Build Service Account
d36d04a2dc Merge "hwc: Use proper typecasts" 2014-03-28 23:49:57 -07:00
Praveena Pachipulusu
d9443c7e81 hwc: Use proper typecasts
- Remove compiler warnings
- Use proper typecasts

Change-Id: I7391f32ae31283239f5cebb93b02f3ce3a5c99f3
2014-03-28 09:17:43 +05:30
Linux Build Service Account
0bee628a02 Merge "hwc: Color layer always has zero transform." 2014-03-27 18:11:08 -07:00
Sushil Chauhan
fda00fc87f hwc: Color layer always has zero transform.
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
2014-03-20 11:20:52 -07:00
radhakrishna
2e792f9884 h/q/d: Add utility function for 8x16 and read RGB scalar capability
- Add utility function for 8x16
 - Add internal function to identify if RGB doesn't
   support scaling that is read from capabilities node.
 - If UI layer needs scaling and RGB pipe doesn't
   support scalar, request a VG pipe
 - On 8x16, request DMA pipe for WFD

Change-Id: I94e8e0371bb10fcad53fddd2b7c45bc9b2594a4d
2014-03-17 12:56:16 +05:30
Manoj Kumar AVM
8cbbf7cb13 hqd: Restrict decimation when layer format is macro-tile
When layer format is macro-tile, decimation cannot be supported.
Add necessary checks to bail out for such use-case.

Change-Id: I711f07a2963a76280a08887d04770cd418d8bd1e
2014-03-14 09:33:53 -07:00
Saurabh Shah
ab47c69049 hwc: Add support for SourceSplit
Add support for SourceSplit. The mixers are abstracted from hwc.
There would be no translations to mixer understood destinations.

1) If a layer's crop and position are < 2048, only 1 pipe can be used
irrespective of position.
2) Else 2 pipes can be used with the layer equally split, without
regard to position.

Change-Id: I501a53838d147887c1e2299366663e05320d5096
2014-03-03 09:57:12 -08:00
Saurabh Shah
be7bd32a4d hwc: Iterative Load based comp
While performing load based mixed composition, iterate from max
stages of mixer to at least 2.
Get rid of modes that preferred GPU or MDP. This new mode will
include both plus the missed out batches.

Change-Id: Ideb06a2332fe2f59968367d28df848be01f4aedc
2014-02-26 22:48:52 -08:00
Linux Build Service Account
c6f2145cde Merge "qdutils: Refactor idletimeout fallback mechanism." 2014-02-26 06:54:48 -08:00
Linux Build Service Account
d9b4758163 Merge "h/q/d: Optimize framebuffer layer update" 2014-02-22 14:50:47 -08:00
Linux Build Service Account
fda5641781 Merge "h/q/d: Rename property to enable partial update" 2014-02-22 14:50:37 -08:00
Saurabh Shah
0cba653ad7 hwc: Remove bandwidth checks
Bandwidth checks will be done in the driver as part of resource check
which makes the existing checks in hwc redundant.

Change-Id: I39eb7de63618e8ea5981f9e1a1159224831f314a
2014-02-20 16:25:22 -08:00
Jeykumar Sankaran
c2d78d8f2c h/q/d: Optimize framebuffer layer update
While doing mixed mode composition, update only the region of the
framebuffer where layer contents are cached or updated. Avoids
MDP fetch for non-visible contents of FB.

Change-Id: I20997d79e02a6bac60d7333c28c6dde134263197
2014-02-20 10:19:53 -08:00
Ramkumar Radhakrishnan
92abb4f2ad qdutils: Refactor idletimeout fallback mechanism.
1. Use kernel timer interrupt to signal about the timeout to
   Invalidator thread and fallback to GPU composition.
2. This implementation avoids waking up the Invalidator thread for
   every idletimeout value during continuous update.

Change-Id: I4370f10a0ca06b5cb1e7bdcb047e9c8daec51afb
2014-02-19 14:28:59 -08:00
Jeykumar Sankaran
7d6c4c0dd1 h/q/d: Rename property to enable partial update
Rename property to enable partial update to keep within MAX
string length.

Change-Id: I16d09b49500f3cd996c66eb52aa80df3a5f62b27
2014-02-19 12:50:04 -08:00
Linux Build Service Account
8e6c7bc4b9 Merge "Invoke a padding round in certain use-cases." 2014-02-11 23:48:44 -08:00
Linux Build Service Account
ec6bd69a1c Merge "hwc: mdpcomp: Remove pipe estimation blocks" 2014-02-11 05:20:35 -08:00
Linux Build Service Account
489d6554b5 Merge "hwc: Reset FB Z order to -1 instead of 0" 2014-02-09 19:08:38 -08:00
Saurabh Shah
4cc7423384 hwc: mdpcomp: Remove pipe estimation blocks
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
2014-02-07 16:09:55 -08:00
Raj Kamal
9ed3d6b35e Invoke a padding round in certain use-cases.
* 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
2014-02-07 16:20:10 +05:30
Linux Build Service Account
67b60bee6d Merge "hwc/overlay: validate and prepare frame" 2014-02-05 14:02:39 -08:00
Saurabh Shah
d53bc5f899 hwc: Reset FB Z order to -1 instead of 0
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
2014-02-05 11:59:38 -08:00
Saurabh Shah
a36be92d30 hwc/overlay: validate and prepare frame
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
2014-02-03 12:58:46 -08:00
Arun Kumar K.R
2aa44c66fa hwc: resolve compiler warnings
- remove unused variables.
- fix incorrect castings.

Change-Id: I7661edb4539a3ffc7d4aedbb9f633bc5ba1dc149
2014-02-03 09:20:36 -08:00
Linux Build Service Account
a6fe50e686 Merge "hwc: Request RGB pipe only if layer needs scaling." 2014-02-02 23:05:35 -08:00
Jeykumar Sankaran
846e279b5f h/q/d: Consider dropped layers in load based MDP comp
While batching up layers for load based MDP composition, filter
out dropped layers.

CRs-Fixed: 607196

Change-Id: I78031f1094330e1d960ceb56d5441c27a041e48c
2014-01-31 10:33:56 -08:00