hwc: Define binder interface to set view frame of a display

Define binder interface setViewFrame to set view frame information
of a display by surfaceflinger when projection for that display
changes.

Change-Id: If737b51ae0f04303a1a29c91a9703f64354b61fb
hwc: initialize viewFrame for primary display

viewFrame for primary display will always be full screen, hence
initialize it to primary resolution

Change-Id: I0f6ce79a9af6eac9b7b8a684c5b690c8b4a9e760
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
hwc: Support single ROI for split panels.

For panels that cannot accept commands in both the interfaces, we cannot
send two ROI's (for each half). We merge them into single ROI and split
them across lSplit for MDP mixer use. The ROI's will be merged again
finally before updating the panel in the driver.

 - Reads panel property of dual control path.
 - If dual control path not supported, merge ROI's before
   analysing for composition strategies.

Change-Id: I67e361a299dc5d1adb28b180900e24633eefc4a8
hwc: Map dirtyRect to layer destination for single DSI panels.

Map dirtyRect generated for sourceCrop to layer destination
before using it for calculating ROI for single DSI
panels.

Change-Id: Ie65284e9c58270c66276f9d43c4eb3e7db29b623
overlay: Add a flag for compilation with new API

 * ROI fields have changed for dual-dsi systems. Add
   an ifdef to allow compilation with old kernels.

Change-Id: Ie18404bba2c5afe4e8b913c1b4eee2a588f37acb
hwc/overlay: Get rot dest dimensions instead of manipulating source

Currently for Mdss rotator we manipulate the layer buffer dimensions
to be equal to what rotator's destination dimensions would be, so that
these could be fed to MDP. Instead, this patch introduces APIs in
rotator so that hwc can directly query destination crop, width, height,
format from rotator.

This also simplifies the updateSource() and configRotator() helpers.

Change-Id: I501d998f2e0574683c764af9422742b2426ba0c7
hwc: Source Split layers always if indicated by driver

Source Split layers always if the driver indicates so by setting
the src_split_always in the capabilities sysfs node.
This is applicable to layers whose width > mixer's width, since
MDP clk rate is dependent on max(mixer_width, layer_width).

This feature can be enabled if the panel height is more than a
certain empirically derived value. Splitting always in those
cases can help with a lower voltage.

Change-Id: If9b33f11ca4132eb77416c26819f7473c65d3b08
hwc: Add display ROI in HWC dumpsys

Add ROI generated for each display in their dumpsys data.

Change-Id: I41fb79af9d42abc11ff147d18a600fd4ad60ab6c
hwc: modifying logic in adjust FB Z-order for 4k2kYUVSplit

Use complete layer list details instead of depending on only
4k YUV layer indices.

Change-Id: I28deee47b8330a4b3c56bef48e333ce6ead8bf25
hwc: Consider FLIP flags for partial update.

FLIP flags need to be considered while calculating srcCrop and
displayFrame even when a layer is updated partially on dual DSI
panels.

Change-Id: I097b3335e66566d6639848bc8f8382bfeabb7f54
hwc: Fix klockwork errors

Resolving klockwork errors to avoid memory leaks,
improper assignments in liboverlay.

Change-Id: I82ac6ae782c7b783e89999b832bbd1d361376b9f