hwc: qbuf: Add API to unlock all

Add API to unlock all current and previous buffers.
This is essential in suspend cases.

CRs-fixed: 382332

(cherry picked from commit d24eb9e70480f89561108078f68cbbd9b20e4bb5)

Change-Id: I54fcded7cabc79d991d4b28a248867d860ec6b08
hwc/fb/overlay: wait for fbpost and pan display

Draw sequence in hwc_set
--eglSwapBuffers
--wait for fb_post. Its ok to draw to External only at this point.
--draw to external   | Parallel with PAN
--commit to external | Parallel with PAN
--wait for pan (happening in fb_post) to finish.

Call MSMFB_OVERLAY_SET ioctl only when params change.

These thing together ensure a correct sequence and should fix tearing and
stuttering, the latter assuming there are no other display pipeline delays.

Change-Id: Ibb0ad8485fa6b30dc6ac07ae8b25a760941c08ce
(cherry picked from commit c50c90863e41e31ecfe6963396b5def35e9dca34)
display : Fix Enable vsync for MDP3 targets

-Enable vsync for MDP3 targets
-With this change all targets except 8x55,
 have vsync enabled

Change-Id: Ic1856359a28c730948d7d74427f6802ed89cc1b1
libqdutils::Replace USE_MDP3 with getMDPVersion() method

Change-Id: Id602c8ab8d8ba140a379ba0e475c73806d17b527
libqdutils::Add support for qcomuiClearRegion

Add support for qcomuiClearRegion for draw
wormhole regions via CPU.

* Added separate singaltone class for getting
eglGetRenderBufferANDROID handle that can be
used by both copybit and clear_regions modules

CRs-Fixed: 383115

Change-Id: Ibeb5bdda87a60950889416e5b4d53e6eb5a3682e
liboverlay: Adjust values to align with MDP requirement

For YUV only:
Crop rectangle (src_rect) needs to be even for x/y and w/h
Destination dst_rect w/h need to be even (x/y can be odd).

Change-Id: Ib0c1b7d31773e71d60f080b4beacaa68e32a990e
hwcomposer: delay starting the uevent thread

- There is a race condition window between initializing hwcomposer as a
  whole and registering callback functions for when the uevents arrive. We
  can fix this issue by delaying the uevent thread kick off until the
  callback functions are registered.
- Add thread name to uevent thread

Change-Id: I30e23b411b92b6578f186b641f562462a8f23179
qdutils: Don't assume we support overlay without version info.

If we can't determine the version we shouldn't assume that overlay is
supported. If it is still needed there should be a config to force
overlay support.

Change-Id: Ic1000fdcd5ffefc517782eca605fc63b88f47602
hwcomposer : Disable bypass, when connected to external display

disable bypass, when connected to external display

Change-Id: I57edc8fc1b9254b3c60c229aabb2515f320c9de4
display : Do not use copybit for composition when YUV layer is present.

Do not use copybit for composition when YUV layer is present only in
overlay targets & use copybit in non-overlay targets.

CRs-Fixed : 385992
Change-Id: I671bc5f37b924160e32e900207fb81634dee0929
(cherry picked from commit 1f05b5ef18723bc73a21259ca7c5f112228a5c85)
hwc: Unlock prev. buffers in N+1th draw round.

Unlock previously locked overlay buferrs in N+1th draw round, rather than N+2th.
This is now possible because of wait for PAN.
Provides an opportunity to improve genlock behavior and makes it more ICS like.

(cherry picked from commit b3a4cd7944397565388b4e940fb41d2af8882687)

Change-Id: I48f937b77d59b31f3bf04c5a2eb35500bd5d76d6
qdutils: Add MDP v3.0.2 detection.

Change-Id: I22ad1f7fe3c2c03518e192b44f8f0f7018d8ff34
hwc: Enable MDP_BACKEND_COMPOSITION

 * Add MDP_BACKEND_COMPOSITION flag to resolve flicker

Change-Id: I3dfa680e0c74ccbac69f40dc15e014153ce0b530
libqdutils::Use qcomuiClearRegion for dynamic composition

Change-Id: I7483f6967c6f712af15031c386fb08c8fdae0808
Add support for PIP, picture in picture feature

Add a new state and required implementation in new overlay to support playback
of two videos using overlay.
Add a new class VideoPIP to handle the pip feature.

Change-Id: Ibce7044bc1216cba77bd952e191aed5472ed6737
libcopybit: fix YUV buffer alignments as per gralloc

buffer alignment in copybit should be in sync with
gralloc allignments while allocating buffer.

CRs-fixed: 377051
Change-Id: Ib2ae64e368ea3c92d3494c71da605197ccb4a9a5

Conflicts:

	libcopybit/copybit_c2d.cpp
libgralloc: Allocate buffer Fix.

Fix to allocate buffer of size defined by the client using
NATIVE_WINDOW_SET_BUFFER_SIZE property function.

Change-Id: I29f3e7e85c2f8dd7c11149d78b2681e6478cef78
overlay: Remove OVASSERT from getFormatString utility

Remove OVASSERT from getFormatString utility. OVASSERTS should happen only from
critically wrong states of overlay.
Just failing in this utility method would allow a fall back to GPU.

Change-Id: I4467a750574ee90aee4fa2e0fbb041e7f386a63b
hwcomposer : Use system property to set DYN composition threshold

Change-Id: I15c82d46ec846ff2bff7a1fc7a924bb7fcf844f9
hwc: Set premultiplied alpha flag appropriately

Change-Id: I516dc5c6d3bb4f02c98b4add5e818ae88d08eba4