• Home
  • History
  • Annotate
  • only in /frameworks/native/services/surfaceflinger/DisplayHardware/
History log of /frameworks/native/services/surfaceflinger/DisplayHardware/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
8dc55396fc9bc425b5e2c82e76a38080f2a655ff 04-Nov-2014 Dan Stoza <stoza@google.com> Add a BufferItem parameter to onFrameAvailable

Passes the BufferItem for the queued buffer to the onFrameAvailable
callback so the consumer can track the BufferQueue's contents. Also
adds an onFrameReplaced callback, which is necessary if the consumer
wants to do anything more than simple queue length tracking.

Bug: 18111837
Change-Id: If9d07229c9b586c668e5f99074e9b63b0468feb0
ramebufferSurface.cpp
ramebufferSurface.h
7cd85979e81cd632c37852f7ca716089dc52e899 08-Aug-2014 Jesse Hall <jessehall@google.com> surfaceflinger: fix -Wunused-parameter warning

warning: unused parameter 'mustRecompose' [-Wunused-parameter]

Change-Id: I6b8c671189639d851bfa5548742de988d6fa2687
(cherry picked from d2e514f71709e6af3dbc754e59686129737f2300)
ramebufferSurface.cpp
1495ceb88594bf3c5963ef65ee12953dc0354546 08-Aug-2014 Jesse Hall <jessehall@google.com> surfaceflinger: fix -Wmismatched-tags warnings

warning: struct 'HWComposer' was previously declared as a class
[-Wmismatched-tags]

warning: class 'DisplayInfo' was previously declared as a struct
[-Wmismatched-tags]

Change-Id: I13db9f8aab3a957ce8ff8d64598dae1807d6fe7e
(cherry picked from commit 646f54105018e99ef4a30ee41f01f7d1ab66c38e)
WComposer.h
bacc28ef1df329f4dc21bae44b09a6c5018af908 28-Sep-2014 Jesse Hall <jessehall@google.com> surfaceflinger: Use landscape resolution for default dpi

When HWC doesn't provide DPI values for a display, we pick a default
DPI based on resolution. The intent was that 1080p and higher displays
would get XHIGH density, and lower resolutions would get TV density.
In KK (and possibly forever) we had a bug that we'd always use TV
density. That was fixed in L, but that fix exposed a pre-existing bug
that we always used the display's height in its native orientation,
rather than in landscape orientation. So an 800x1280 tablet like N7v1
started getting XHIGH density instead of the intended TV density.

Bug: 17461633
Change-Id: Ia57fa49e61f36bdda63ce283ef62c9953297222c
WComposer.cpp
4d407a0f05ad9ba3c232ff5b6742495660c0e4ab 25-Aug-2014 Jesse Hall <jessehall@google.com> surfaceflinger: Trace HW vsync enable

This makes it possible to tell whether two HW vsync signals are too
far apart because one was late, or because we turned HW vsync off
briefly between them.

Bug: 17259382
Change-Id: If4fba2a8a6013568349949ce87c5c36f0468d2a2
WComposer.cpp
eb21986df0429d63f5e9678741730f07f17dcbad 22-Aug-2014 Michael Lentine <mlentine@google.com> Merge "Update currentConfig variable when active display is changed." into lmp-dev
d3e6914ceaafebaee09b0095aad6d001b75e787a 21-Aug-2014 Michael Lentine <mlentine@google.com> Update currentConfig variable when active display is changed.

Bug: 17182607
Change-Id: I8631c105a9e0fa402a7d9670717becc9857af935
WComposer.cpp
949ea0868de1df7e2f28a32d777cc41f901d6770 20-Aug-2014 Naseer Ahmed <naseer@codeaurora.org> sf: Clear display configs when hot pluggable display is disconnected

Display configs for external displays are stored in the framework
everytime we receive a hot plug to connect. However, since the
configs are not cleared on disconnect, framework will just assume
that the configs are valid. This does not work for use cases when
you connect/disconnect external displays with different resolutions.

e.g. 1080p to 4K and vice-versa

With this change we clear the display configs and repopulate when
we receive a hot plug to connect.

Change-Id: I2eeab186a8d8668a53390a2413b2ce5e044a1845
Acked-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
WComposer.cpp
b54ee7704e46529e02386cf39eba93a34a527c61 07-Aug-2014 Michael Lentine <mlentine@google.com> Change output format to not throw warning on volantis.

Change-Id: Id66eb61bdb1ceccfb7aefa0aa70793dac807c257
WComposer.cpp
258ee43fbcbc752cb08c134a12c08d5d99c4a866 31-Jul-2014 Michael Lentine <mlentine@google.com> Build fix for printf with int64 and size_t

Change-Id: I642584cce7dd43e6d491a49228b0bce047d53354
WComposer.cpp
fd9d183cd8c859ab8480dea572430398438ba8b5 31-Jul-2014 Michael Lentine <mlentine@google.com> Build fix to use the correct source.

Change-Id: If36710be600dd0e15c31682e0343f281baa55627
irtualDisplaySurface.cpp
47e45405d1533aa73307014f7bf371e118695cf3 19-Jul-2014 Michael Lentine <mlentine@google.com> Allow for resizing of Virtual Displays.

Modify SurfaceFlinger to use VirtualDisplaySurface in all cases when a virtual
display is used. Add functionality in VirtualDisplaySurface to resize the
buffers aquired in the QueueBufferOutput. Add transaction support in
SurfaceFlinger for resize. Add the modification of the size in DisplayDevice.

Change-Id: Iae7e3556dc06fd18d470adbbd76f7255f6e6dd6b
Tested: None
isplaySurface.h
ramebufferSurface.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
6c9e34a98a63033b80bd1c24c7aa1304f912f10a 14-Jul-2014 Michael Lentine <mlentine@google.com> Modified SurfaceFlinger to implment setActiveConfig and getActiveConfig.

This can be used to change the current display mode of the device.

Change-Id: Icdc3fb58389b861dc77b68102083da6f7a96eccb
Tested: None
(cherry picked from commit 2651fa94635a96d653038fb389a0dd827338f8d3)
WComposer.cpp
WComposer.h
03414a1cfe6c1222fd7723949bd622f9cba145aa 01-Jul-2014 Riley Andrews <riandrews@google.com> Turn on support for async cursor update in surfaceflinger.

If available, surfaceflinger will use the hwc setCursorPositionAsync()
api to change the position of supported cursor layers outside of
the usual prepare/set loop.

Change-Id: Ib3fc5c0c390b3489ddbba202379840a1d2748917
WComposer.cpp
WComposer.h
24cd98eef88ac93f80c327f8d74f0a1ae0aceee4 13-Jul-2014 Jesse Hall <jessehall@google.com> Compile libsurfaceflinger with Clang and -std=c++11 [DO NOT MERGE]

This is necessary to use C11/C++11 stdlib atomics, which the next
change will do. This change also fixes a couple bits of syntax that
both GCC and Clang refuse to compile in -std=c++11 mode.

Change-Id: Ia14d9d6b537a3bb106c23e19a277e48be180754c
irtualDisplaySurface.cpp
dc56bf721a9f29621fd57e1d861142fa9b2d3663 30-Jun-2014 Dan Stoza <stoza@google.com> Merge "BufferQueue: Add allocateBuffers method"
29a3e90879fd96404c971e7187cd0e05927bbce0 20-Jun-2014 Dan Stoza <stoza@google.com> BufferQueue: Add allocateBuffers method

This adds an allocateBuffers method to BufferQueue, which instructs
it to allocate up to the maximum number of buffers allowed by the
current configuration. The goal is that this method can be called
ahead of render time, which will prevent dequeueBuffers from blocking
in allocation and inducing jank.

This interface is also plumbed up to the native Surface (and, in
another change, up to the Java Surface and ThreadedRenderer).

Bug: 11792166
Change-Id: I4aa96b4351ea1c95ed5db228ca3ef98303229c74
irtualDisplaySurface.cpp
irtualDisplaySurface.h
ef472ec40a0fbb0ef96b79bef846f20b73da4971 02-Apr-2014 Ruchi Kandoi <kandoiruchi@google.com> SurfaceFlinger: send VSYNC power hints to IPowerManager

VSYNC power hints are now sent via binder to IPowerManager.
SurfaceFlinger no longer loads a second copy of the PowerHAL.
VSYNC power hints are sent in batches and not on per frame basis.

Change-Id: Ia5a839ab3c857cffae7089f810b4315d4ed23fcf
owerHAL.cpp
owerHAL.h
2c9b11f0291210c9b9513a1a0cce6afebd361b3b 25-May-2014 Prashant Malani <pmalani@google.com> surfaceflinger: Replace blank/unblank with setPowerMode

We replace the blank/unblank calls in surfaceFlinger with a more generic
setPowerMode() routine.

Some displays support different power modes (for example, with reduced
color palettes). Depending on the use case we should be able to toggle
these modes, so as to achieve incremental power savings.

Initially, three power modes will be supported:
- HWC_POWER_MODE_OFF
- HWC_POWER_MODE_DOZE
- HWC_POWER_MODE_NORMAL

HWC_POWER_MODE_OFF will correspond to blanking the display, while
HWC_POWER_MODE_NORMAL will correspond to unblanking. HWC_POWER_MODE_DOZE
will put the display into a low power setting, if it is supported in
hardware.

If such a low power mode is not supported, it should be treated as a
call to set the mode to HWC_POWER_MODE_NORMAL.

As a consequence of adding the mPowerMode field, the mScreenAcquired is
no longer required, and thus references to it are removed and replaced
equivalent references to mPowerMode.

We also add the glue code to connect the services invocation of setting
a power mode and the HAL implementation in HWComposer.

Bug: 13472578
Change-Id: I431595ecf16d2f2c94259272db3dd42f29636204
Signed-off-by: Prashant Malani <pmalani@google.com>
WComposer.cpp
WComposer.h
f0058ca0e592485ac9e5a4aedb0dd8fa187625ef 20-May-2014 Andy McFadden <fadden@android.com> Add IMPLEMENTATION_DEFINED to dump

The "dumpsys SurfaceFlinger" output shows pixel formats in
human-readable form now. Add IMPLEMENTATION_DEFINED.

Change-Id: If567e34dad4b940fbfb4d0b70c65f6ab8cd5f5e7
WComposer.cpp
dd02391756dff240c178f7cba21d73d62821007e 06-May-2014 Dan Stoza <stoza@google.com> Merge "Enable changing display configuration"
7f7da32569f8e0b3d383a40b95f8ac1d55afd801 03-May-2014 Dan Stoza <stoza@google.com> Enable changing display configuration

This allows querying and switching display device configurations
through the ISurfaceComposer/SurfaceComposerClient interface.

Bug: 14320401
Change-Id: I8c22165698950e5da32204c1c4da92122f91a715
WComposer.cpp
WComposer.h
98e1ebc026726ba045cea69b1b8c371d95db9893 02-May-2014 Andy McFadden <fadden@android.com> Merge "Improve SurfaceFlinger PTS estimation"
41d67d7ab4da1c393497a620a116a854b3c618e7 26-Apr-2014 Andy McFadden <fadden@android.com> Improve SurfaceFlinger PTS estimation

Get the next refresh time from DispSync instead of guessing based
on the current time.

Change-Id: I8dc72a3217bfd4e9b4c905034194d1a298cad69a
WComposer.cpp
WComposer.h
0b63cd105cae094c21aafaa2bac8322427e75827 30-Apr-2014 Jesse Hall <jessehall@google.com> Handle failed requestBuffer after successful dequeueBuffer

If the virtual display consumer disconnects after the
VirtualDisplaySurface dequeues a buffer but before it requests it, the
request will fail. Previously the error was ignored, and the caller
would get a success result but a NULL buffer. Now the dequeued buffer
is cancelled and the error propagated to the caller.

Bug: 14140551
Change-Id: I91547885c2cf6063dc7a8f02d97f2df282cdde2c
irtualDisplaySurface.cpp
466954565be8cac018e86e3bddad4e1f4850fa70 25-Apr-2014 Andy McFadden <fadden@android.com> Merge "Update HWC dump format"
4df87bd1f6f68126e5e9081fc1365ae500e375db 22-Apr-2014 Andy McFadden <fadden@android.com> Update HWC dump format

Shortens a few fields. Displays the format as a string.

Change-Id: Ib471f05603763e250bad165db610f8e173e8423a
WComposer.cpp
fb39827ebce4637dcba03770f6644cf67e932e06 21-Apr-2014 Dan Stoza <stoza@google.com> Merge "BufferQueue: Increase max slots from 32 to 64"
febd4f4f462444bfcb3f0618d07ac77e3fc1f6ad 10-Apr-2014 Dan Stoza <stoza@google.com> BufferQueue: Increase max slots from 32 to 64

Increases NUM_BUFFER_SLOTS from 32 to 64 and changes the mask
returned by IGBC::getReleasedBuffers from 32 to 64 bits.

Bug: 13174352
Change-Id: Ie8ef0853916cfb91f83881c7241886bb1950f01a
irtualDisplaySurface.cpp
irtualDisplaySurface.h
d9822a3843017444364899afc3c23fb5be6b9cb9 28-Mar-2014 Dan Stoza <stoza@google.com> BufferQueueProducer: add detachNextBuffer

Adds a new method, IGBP::detachNextBuffer, that effectively does
dequeue + request + detach in a single call, but does not need to
know anything about the dequeued buffer, and will not block on
dequeue. This is mostly for the upcoming StreamSplitter to use in
its onBufferReleased callback.

Change-Id: Ie88a69de109003acebaa486a5b44c8a455726550
irtualDisplaySurface.cpp
irtualDisplaySurface.h
4098f03d5c9fb8522279ca04da70bec6793b2caa 05-Apr-2014 Ruchi Kandoi <kandoiruchi@google.com> Revert "SurfaceFlinger: send VSYNC power hints to IPowerManager"

This reverts commit d469a1c3285b974cf2637517cc25727da8f82668.
owerHAL.cpp
owerHAL.h
d469a1c3285b974cf2637517cc25727da8f82668 02-Apr-2014 Ruchi Kandoi <kandoiruchi@google.com> SurfaceFlinger: send VSYNC power hints to IPowerManager

VSYNC power hints are now sent via binder to IPowerManager.
SurfaceFlinger no longer loads a second copy of the PowerHAL.
VSYNC power hints are sent in batches and not on per frame basis.

Change-Id: Icc2eee5df56135bd24dc244a84e7c12dd5511fec
owerHAL.cpp
owerHAL.h
f0eaf25e9247edf4d124bedaeb863f7abdf35a3e 21-Mar-2014 Dan Stoza <stoza@google.com> BufferQueue: Add producer buffer-released callback

Add a callback to the producer side, onBufferReleased, which will be
called every time the consumer releases a buffer back to the
BufferQueue. This will enable a buffer stream splitter to work
autonomously without having to block on dequeueBuffer.

The binder object used for the callback replaces the generic IBinder
token that was passed into IGraphicBufferProducer::connect to detect
the death of the producer. If a producer does not wish to listen for
buffer release events, it can pass in an instance of the
DummyProducerListener class defined in IProducerListener.h, if it even
cares about death events (BufferQueue doesn't enforce the token being
non-NULL, though perhaps we should).

Change-Id: I23935760673524abeafea2b58dccc3583b368710
irtualDisplaySurface.cpp
irtualDisplaySurface.h
b9b088375d33a87b201cdbe18be71802e2607717 13-Mar-2014 Dan Stoza <stoza@google.com> Remove deprecated BufferQueue constructor

Bug: 13415624
Change-Id: I9fe15e45daa7351f1db34ee75bfee6f19cb347d3
irtualDisplaySurface.cpp
irtualDisplaySurface.h
993146092f8205d9747f082ccd63c09b536caa4e 14-Mar-2014 Mark Salyzyn <salyzyn@google.com> am d4dabf87: am cdbf28b3: Merge "native frameworks: 64-bit compile issues"

* commit 'd4dabf872ac0a12e12aebae9032f7d62762c2aeb':
native frameworks: 64-bit compile issues
73ed82f809a40560fd3a6d53d18e5c846362d764 13-Mar-2014 Jesse Hall <jessehall@google.com> Merge "Add sideband streams to BufferQueue and related classes"
92dc3fc52cf097bd105460cf377779bdcf146d62 12-Mar-2014 Mark Salyzyn <salyzyn@google.com> native frameworks: 64-bit compile issues

- Fix format (print/scanf)
- Suppress unused argument warning messages (bonus)

Change-Id: I05c7724d2aba6da1e82a86000e11f3a8fef4e728
ramebufferSurface.cpp
WComposer.cpp
88a459a9b37f3b4eb3c9a044ad7af30616ad66c9 12-Mar-2014 Dan Stoza <stoza@google.com> VirtualDisplaySurface: no attach/detach support

Change-Id: I630dd6e352940318c33a4e072d2f33a6ec58c556
irtualDisplaySurface.cpp
399184a4cd728ea1421fb0bc1722274a29e38f4a 04-Mar-2014 Jesse Hall <jessehall@google.com> Add sideband streams to BufferQueue and related classes

Sideband streams are essentially a device-specific buffer queue that
bypasses the BufferQueue system. They can be used for situations with
hard real-time requirements like high-quality TV and video playback
with A/V sync. A handle to the stream is provided by the source HAL,
and attached to a BufferQueue. The sink HAL can read buffers via the
stream handle rather than acquiring individual buffers from the
BufferQueue.

Change-Id: Ib3f262eddfc520f4bbe3d9b91753ed7dd09d3a9b
WComposer.cpp
WComposer.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
9f3053de78630815d60cf48a2cf2348cc5867c45 07-Mar-2014 Dan Stoza <stoza@google.com> BufferQueue: Allow detaching/reattaching buffers

Adds detachBuffer and attachBuffer calls to both the producer and
consumer sides of BufferQueue. Buffers may be detached while dequeued
by the producer or acquired by the consumer, and when attached, enter
the dequeued and acquired states, respectively.

Bug: 13173343
Change-Id: Ic152692b0a94d99e0135b9bfa62747dab2a54220
irtualDisplaySurface.cpp
irtualDisplaySurface.h
7143316af216fa92c31a60d4407b707637382da1 05-Feb-2014 Dan Stoza <stoza@google.com> Fix virtual display nesting

This fixes the cycling rendering loop caused by nesting virtual
displays by preventing them from recomposing if their contents
haven't changed.

Bug: 12101046
Change-Id: I600365c0fd5d3ad93e04295d26cf9de177ffc79b
isplaySurface.h
ramebufferSurface.cpp
ramebufferSurface.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
ef11a6c887891be04c4ca9cc60bcad8d022189b3 28-Jan-2014 Jesse Hall <jessehall@google.com> am ade9a911: am f65ebc3b: am f5bcb391: Merge "SurfaceFlinger: mFbProducerSlot initailization"

* commit 'ade9a911d04dbd4bfbd3e80a917ea67a581b4797':
SurfaceFlinger: mFbProducerSlot initailization
fdfde88d0bcd0b293c9deb37f49254bdd97e4dac 23-Jan-2014 mayank parshar <mayankp@broadcom.com> SurfaceFlinger: mFbProducerSlot initailization

b/12487813

SurfaceFlinger crash is observed during simulation of
Secondary display

Note: change 14e8b01a761180250671f3d6494532d8bd04fa8e
removed the initialization leading to the crash when
simulating secondary display. Restore the initialization
to solve the problem.

Change-Id: Iae5845fb82735e01de5cc0dc582d13c27e3c614f
Signed-off-by: mayank parshar <mayankp@broadcom.com>
Signed-off-by: Pierre Couillaud <pierre@broadcom.com>
irtualDisplaySurface.cpp
467113c6fcb1f4714d84d6d097c5525ae0130d00 26-Jan-2014 Jesse Hall <jessehall@google.com> am 25f75c36: am 8c303f7e: am fcf9c1ba: Merge "SurfaceFlinger: mFbFence initialization"

* commit '25f75c361098086ffa2b87dcc3f22ac5f64c05be':
SurfaceFlinger: mFbFence initialization
b988f85fc44efd24f11f2e5ab8fb9b653916f666 10-Jan-2014 mayank parshar <mayankp@broadcom.com> SurfaceFlinger: mFbFence initialization

MobC00383030
b/12487813

SurfaceFlinger crash is observed while connecting
to Wi-Fi display.

Note: change 14e8b01a761180250671f3d6494532d8bd04fa8e
removed the initialization leading to the crash when
running through the HWC composition path. Restore the
initialization to solve the problem.

Change-Id: I581defc7135ac512080c0da06a62b1dae7d218c4
Signed-off-by: mayank parshar <mayankp@broadcom.com>
Signed-off-by: Pierre Couillaud <pierre@broadcom.com>
irtualDisplaySurface.cpp
524672571f1df138eb913e672aaa74e0257aa8c0 03-Jan-2014 Jesse Hall <jessehall@google.com> am 03691218: am e5f7bf74: am b6c21004: Merge "Implement per-display EGLConfig and configless EGLContext"

* commit '03691218ada2fb7e084ad4ae7ddd54f9b28d5611':
Implement per-display EGLConfig and configless EGLContext
19e872912af66c53a4350afcc333bbafaf6a2294 24-Dec-2013 Jesse Hall <jessehall@google.com> Implement per-display EGLConfig and configless EGLContext

Bug: 12230666
Change-Id: Icca608b108cbdcab9cf01a9236d8cdbda000a836
Signed-off-by: Jesse Hall <jessehall@google.com>
WComposer.cpp
324c69b542cf051e86cead592ff6a103ce1dbb34 08-Nov-2013 Jesse Hall <jessehall@google.com> am 1ee45c2d: am 14e8b01a: Don\'t change the framebuffer target until we render a new one

* commit '1ee45c2d2d816ee912624d81ff1b0aaa98e8fa74':
Don't change the framebuffer target until we render a new one
14e8b01a761180250671f3d6494532d8bd04fa8e 07-Nov-2013 Jesse Hall <jessehall@google.com> Don't change the framebuffer target until we render a new one

Continuing to send the last-rendered framebuffer to HWC on subsequent
frames allows the HWC to read partially-composed regions that haven't
changed, instead of re-composing from scratch.

Bug: 11573910
Change-Id: I8829877d2a06001f1e1b3f168cbba71c7b217b2d
irtualDisplaySurface.cpp
ad78055746c9b1b3f0563133971800812bfed1f6 07-Nov-2013 Jesse Hall <jessehall@google.com> am 2d32aa59: am 356c2386: Merge "Provide virtual display output buffer to HWC in prepare" into klp-dev

* commit '2d32aa5918de1c12c54a32e8eb28bbc96d430796':
Provide virtual display output buffer to HWC in prepare
356c23865d588659f1eea55bbe7e2b16b9cff08e 07-Nov-2013 Jesse Hall <jessehall@google.com> Merge "Provide virtual display output buffer to HWC in prepare" into klp-dev
45c9c0477de6d376019d458fbe17c07cf64f72ca 06-Nov-2013 Jesse Hall <jessehall@google.com> am f111ee13: am 49318631: Merge "Don\'t use implementation-defined format with CPU consumers" into klp-dev

* commit 'f111ee13a6f5d8606c5dc7a5cc07cedf929e69a8':
Don't use implementation-defined format with CPU consumers
f7a675837bdad03d398c9b6f0f593b9c51c679b5 06-Nov-2013 Jesse Hall <jessehall@google.com> Provide virtual display output buffer to HWC in prepare

We were already making sure the HWComposer class had the handle before
prepare, but it wasn't passing the handle along to HWC as intended.

Partial fix for bug: 11430248
Change-Id: I25f672c4fdfaa6a81fe0acb24d9ad05153ee17dc
WComposer.cpp
497ba0e08503806571b52ebe27cc7eee4c0e71a7 05-Nov-2013 Jesse Hall <jessehall@google.com> Don't use implementation-defined format with CPU consumers

If the virtual display surface is being consumed by the CPU, it can't
be allowed with HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED since there is
no way for the CPU consumer to find out what format gralloc chose. So
for CPU-consumer surfaces, just use the BufferQueue's default format,
which can be set by the consumer.

A better but more invasive change would be to let the consumer require
a certain format (or set of formats?), and disallow the producer from
requesting a different format.

Bug: 11479817
Change-Id: I5b20ee6ac1146550e8799b806e14661d279670c0
irtualDisplaySurface.cpp
irtualDisplaySurface.h
45cb6ec7158939964f96a2a7ff6dc7591ebf9bb5 25-Oct-2013 Jesse Hall <jessehall@google.com> am 96002be4: am c354effe: Fix handling of undefined TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS

* commit '96002be4bd4b8bbfecba2cc45bdf0b47f06464bc':
Fix handling of undefined TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS
c354effe97be26638618e3bc0da81a3f8b384b20 25-Oct-2013 Jesse Hall <jessehall@google.com> Fix handling of undefined TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS

related to b/8316155 - Implement HWComposer 1.3 w/ virtual display support
Change-Id: I2dc8d65a74174aa833cc491264f97f1f2df49307
irtualDisplaySurface.cpp
6fdaaf5c7cf7c511a5e3cea8aaafdad7ff12e596 24-Oct-2013 Jesse Hall <jessehall@google.com> am a54a8b63: am 93fcb823: Merge "Add a boardconfig to force HWC composition of virtual displays" into klp-dev

* commit 'a54a8b63d191d2c1c4669f89b32c4b8a9c04cd31':
Add a boardconfig to force HWC composition of virtual displays
014dd9f0f28c3992f9fae62a62fa7e8bfe750a06 24-Oct-2013 Jesse Hall <jessehall@google.com> am 48775386: am c5807f90: Merge "Use implementation-defined format when HWC writes to output buffer" into klp-dev

* commit '487753868aa86902f723dbdedd7083783701188d':
Use implementation-defined format when HWC writes to output buffer
6a968462f9ce4d93d81fcc13672073e3e6eb2e0f 04-Oct-2013 Naseer Ahmed <naseer@codeaurora.org> Add a boardconfig to force HWC composition of virtual displays

When this boardconfig is defined, even when all virtual display
composition is done by GLES, the HWC will be forced to copy from the
GLES framebuffer to the output buffer. On some hardware this allows
HWC to do format conversions that would otherwise have to be done by
the consumer, with worse power and/or performance.

Bug: 8316155
Change-Id: If980ecc589f138cef063eafa757f7f748196713e
irtualDisplaySurface.cpp
1e27ba234c5bfd4f6535ee221a6c20407a50f868 27-Sep-2013 Jesse Hall <jessehall@google.com> Use implementation-defined format when HWC writes to output buffer

When GLES isn't writing to the output buffer directly, request an
implementation-defined format with minimal usage flags, leaving the
format choice up to gralloc. On some hardware this allows HWC to do
format conversions during composition that would otherwise need to be
done (with worse power and/or performance) by the consumer.

Bug: 8316155
Change-Id: Iee6ee8404282036f9fd1833067cfe11dbadbf0bf
irtualDisplaySurface.cpp
irtualDisplaySurface.h
adbb3062e1a3d675531367c055572664fc46280d 15-Oct-2013 Jesse Hall <jessehall@google.com> am a04fd39c: am 8e26b28b: Filter out vsync events from HWC with duplicate timestamps

* commit 'a04fd39cb88bb6df5f639464f70795f58cd0aefa':
Filter out vsync events from HWC with duplicate timestamps
8e26b28be62e7c0e093900540db5e5cdcf52a0ff 14-Oct-2013 Jesse Hall <jessehall@google.com> Filter out vsync events from HWC with duplicate timestamps

Bug: 11220224
Change-Id: I4efe0b66ea8969bf0ec3c4fcb325d354c8a0c315
WComposer.cpp
b85d2cf0a20e46261db8fee4839840f0ef715c68 09-Oct-2013 Jamie Gennis <jgennis@google.com> resolved conflicts for merge of 790b6d09 to master
faf77cce9d9ec0238d6999b3bd0d40c71ff403c5 31-Jul-2013 Jamie Gennis <jgennis@google.com> SurfaceFlinger: SW-based vsync events

This change adds the DispSync class, which models the hardware vsync event
times to allow vsync event callbacks to be done at an arbitrary phase offset
from the hardware vsync. This can be used to reduce the minimum latency from
Choreographer wake-up to on-screen image presentation.

Bug: 10624956
Change-Id: I8c7a54ceacaa4d709726ed97b0dcae4093a7bdcf
WComposer.cpp
fee52e20b9fc9a02dbeeb75458972c14682c5400 02-Oct-2013 Jesse Hall <jessehall@google.com> am f3fa0712: am 93573e91: Merge "Treat composition frames with no layers as using GLES composition" into klp-dev

* commit 'f3fa0712282e760c316f44cba05f884f9399b98f':
Treat composition frames with no layers as using GLES composition
10a9ca1c6934092132bb7d5f0073dec68c017294 02-Oct-2013 Jesse Hall <jessehall@google.com> am 72d270c5: am b716e570: Set the outbuf acquire fence after we actually have it.

* commit '72d270c5f0918d1dc7a6a1774b80469c9f28b7ea':
Set the outbuf acquire fence after we actually have it.
93573e91c22ba8329222c69cd7f099f5703fb444 02-Oct-2013 Jesse Hall <jessehall@google.com> Merge "Treat composition frames with no layers as using GLES composition" into klp-dev
b716e57048e945d5bceda33c2434c65d06464dba 02-Oct-2013 Jesse Hall <jessehall@google.com> Set the outbuf acquire fence after we actually have it.

In GLES-only mode, we don't have the outbuf acquire fence until after
GLES composition is done for the frame. We were setting the fence in
HWC's state immediately after dequeueing the buffer from the consumer,
before GLES had started. This fence got passed through HWC and on to
the consumer, so the consumer was reading the buffer before GLES was
done writing to it.

Now we update HWC's state just before set(), when we know we have the
right fence.

Bug: 11000763
Change-Id: Iea9db4c69634c352dc2d600f0bdb6bef2a432636
irtualDisplaySurface.cpp
d05a17fbb3772051d287f1f8830a7f00964f7ec2 01-Oct-2013 Jesse Hall <jessehall@google.com> Treat composition frames with no layers as using GLES composition

When there are no window layers for a display, SurfaceFlinger clears
the undefined region using GLES. Some of the places that check for
GLES composition weren't considering this special case, in particular:

- We were skipping the eglSwapBuffers() on these frames.
- We were putting VirtualDisplaySurface in HWC-only composition mode.

This change centralizes the logic for this special case.

Bug: 10957068
Change-Id: I2deaf2ed101e8ea76708862a6bb67751b6078794
WComposer.cpp
ff98f3e598cc5ccf8daaf18ba93600b5b1a61a26 26-Sep-2013 Mathias Agopian <mathias@google.com> am 338acd68: am 86206b41: Merge "fix initialization of framebuffer target crop rect on hwc 1.3" into klp-dev

* commit '338acd6869532f2684cbd1e4f273eaffc6d4ef6d':
fix initialization of framebuffer target crop rect on hwc 1.3
2b3d0c407987f6f47ccc2e9ebd6c61dbd0c37306 26-Sep-2013 Mathias Agopian <mathias@google.com> am 0ff4b283: am 6da15f46: fix crashers with wifi/virtual displays

* commit '0ff4b28396d77a0ed2f191836895a891108a8b5b':
fix crashers with wifi/virtual displays
86206b41b2ff000e086301c6bafb8da577e563b2 26-Sep-2013 Mathias Agopian <mathias@google.com> Merge "fix initialization of framebuffer target crop rect on hwc 1.3" into klp-dev
8f63c2049b93819c41d390fc4222b9307e3a61c7 26-Sep-2013 Mathias Agopian <mathias@google.com> fix initialization of framebuffer target crop rect on hwc 1.3

Bug: 10936771
Change-Id: If283e5e231ca34b93e0b1784bb4e8e4c7bfd75de
WComposer.cpp
6da15f46f5f8b38e31384d641f8d3db2c3c6ea30 26-Sep-2013 Mathias Agopian <mathias@google.com> fix crashers with wifi/virtual displays

Bug: 10647742
Change-Id: I4b8ed9da52ef95af3a3b3a04b98514a3776a674d
irtualDisplaySurface.cpp
6de9653ac876a4cae03d32c1134c56c795b1b11c 20-Sep-2013 Christopher Ferris <cferris@google.com> Merge "Remove unnecessary include."
d142f4b787abae7a5c392ded0dd2741574a0bce2 20-Sep-2013 Christopher Ferris <cferris@google.com> Remove unnecessary include.

All these files are including utils/CallStack.h, but none of the code
uses any CallStack objects.

Change-Id: I38c3a346a3bd0ddbff368d0f7f8b3f3d78fc0432
WComposer.cpp
365857df8b94c959dea984a63013f6e7730ef976 12-Sep-2013 Mathias Agopian <mathias@google.com> Make sure do disconnect from a BQ when its client dies.

Bug: 5679534

Change-Id: If447e8673df83fe0b1d6210641e0a48522501a53
irtualDisplaySurface.cpp
irtualDisplaySurface.h
8db92553e9e6263cd41eaf1a1ebc9e3f88f92b5f 30-Aug-2013 Jesse Hall <jessehall@google.com> Force async behavior for the virtual display output BufferQueue

Bug: 10551087
Change-Id: I40bbb2b87d64420939a0ea309254f281437dab56
irtualDisplaySurface.cpp
irtualDisplaySurface.h
bef42c50ebda2d63400f92611e1dd857c03bb38c 22-Aug-2013 Mathias Agopian <mathias@google.com> handle several vsync signal correctly

Change-Id: I34935d2197ce8e914fef2f110896e47b44225ad2
WComposer.cpp
WComposer.h
028dc8f2d72bc7cd4fbe7808781443125a742f78 21-Aug-2013 Jesse Hall <jessehall@google.com> Provide HWC prepare with a valid output buffer

We weren't dequeing and setting the output buffer until just before
set(). This didn't allow HWC to make decisions in prepare() based on
the output buffer format, dimensions, etc.

Now we dequeue the output buffer at the beginning of the composition
loop and provide it to HWC in prepare. In GLES-only rendering, we may
have to cancel the buffer and acquire a new one if GLES requests a
buffer with properties different than the one we already dequeued.

Bug: 10365313
Change-Id: I96b4b0a851920e4334ef05080d58097d46467ab8
isplaySurface.h
ramebufferSurface.cpp
ramebufferSurface.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
353ddc6e77816352107537c215dc8302f6e8587a 21-Aug-2013 Jesse Hall <jessehall@google.com> Fix HWComposer dumping of float source crops

Change-Id: I45a9344b5fab17ccb54bebd01382d738a03860e6
WComposer.cpp
90f59bf9eba79b27629505bc2709d84e7c811c8b 19-Aug-2013 Andy McFadden <fadden@android.com> Merge "Re-enable frame dropping for non-auto timestamps" into klp-dev
3c25621ad7d13f64d3ab95a27fa970fbc9998f73 16-Aug-2013 Andy McFadden <fadden@android.com> Re-enable frame dropping for non-auto timestamps

This change adds an entire field to note whether the timestamp was
auto-generated by Surface or supplied by the application.

The value is used when deciding whether or not to drop frames based
on buffer presentation timestamps. If a desired presentation time
was set explicitly, BufferQueue will use that value to decide if a
frame should be dropped. If the timestamp was generated by Surface
at the time the buffer was queued, the timestamp is ignored.

Bug 10151804

Change-Id: Ibd571a7578351063b813cbdad2ddbeed70655ba5
irtualDisplaySurface.cpp
9e663de4fe1dcc872373ee530c60a375624671c3 16-Aug-2013 Jesse Hall <jessehall@google.com> Use new HWC display type/count constants.

Change-Id: I774d0c68906ac6dc69268f708c30a6b0868b8816
WComposer.cpp
WComposer.h
db89edc94bd2a78226b407f9f7261e202e7fa325 02-Aug-2013 Mathias Agopian <mathias@google.com> All consumers now take an IGraphicBufferConsumer instead of a BufferQueue

this means they only have access to the consumer end of
the interface. we had a lot of code that assumed consumers
where holding a BufferQueue (i.e.: both ends), so most of
this change is untangling in fix that

Bug: 9265647
Change-Id: Ic2e2596ee14c7535f51bf26d9a897a0fc036d22c
isplaySurface.h
ramebufferSurface.cpp
ramebufferSurface.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
ad678e18b66f495efa78dc3b9ab99b579945c9e2 24-Jul-2013 Mathias Agopian <mathias@google.com> single buffer mode for BufferQueue

Bug: 9891035
Change-Id: Id1ab5f911a6dc4c1d8235e65775b3d3635231ad4
ramebufferSurface.cpp
7cdd786fa80cf03551291ae8feca7b77583be1c5 19-Jul-2013 Mathias Agopian <mathias@google.com> Make ANW.setSwapInterval(0) work again

we can now queue/dequeue a buffer in asynchrnous mode by using the
async parameter to these calls. async mode is only specified
with those calls (it is not modal anymore).

as a consequence it can only be specified when the buffer count
is not overidden, as error is returned otherwise.

Change-Id: Ic63f4f96f671cb9d65c4cecbcc192615e09a8b6b
irtualDisplaySurface.cpp
irtualDisplaySurface.h
595264f1af12e25dce57d7c5b1d52ed86ac0d0c9 17-Jul-2013 Mathias Agopian <mathias@google.com> BufferQueue improvements and APIs changes

this is the first step of a series of improvements to
BufferQueue. A few things happen in this change:

- setSynchronousMode() goes away as well as the SynchronousModeAllowed flag
- BufferQueue now defaults to (what used to be) synchronous mode
- a new "controlled by app" flag is passed when creating consumers and producers
those flags are used to put the BufferQueue in a mode where it
will never block if both flags are set. This is achieved by:
- returning an error from dequeueBuffer() if it would block
- making sure a buffer is always available by replacing
the previous buffer with the new one in queueBuffer()
(note: this is similar to what asynchrnous mode used to be)

Note: in this change EGL's swap-interval 0 is broken; this will be
fixed in another change.

Change-Id: I691f9507d6e2e158287e3039f2a79a4d4434211d
ramebufferSurface.cpp
irtualDisplaySurface.cpp
irtualDisplaySurface.h
bce7611e8e4514026bf12f96baaf9168f6d5894e 16-Jul-2013 Jesse Hall <jessehall@google.com> Fix build -- update for function signature change

Change-Id: I9c2448d5853c69ec7e962847fdaba9a99906cc42
irtualDisplaySurface.cpp
3bc38408882487dc2a63ba036394addd839b0695 16-Jul-2013 Jesse Hall <jessehall@google.com> Merge "Rewrite VirtualDisplaySurface"
38efe86d9459cf5c96a24a34cc5cbf31fdba7e19 07-Apr-2013 Jesse Hall <jessehall@google.com> Rewrite VirtualDisplaySurface

The previous implementation assumed that the HWC could read and write
the same buffer on frames that involved both GLES and HWC composition.
It turns out some hardware can't do this. The new implementation
maintains a scratch buffer pool to use on these mixed frames, but on
GLES-only or HWC-only frames still does composition directly into the
output buffer.

Bug: 8384764
Change-Id: I7a3addb34fad9bfcbdabbb8b635083e10223df69
isplaySurface.h
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
irtualDisplaySurface.cpp
irtualDisplaySurface.h
c33f9a76b5dff1a9b4e4d0c76459c0d5b36a0d74 11-Jul-2013 Andy McFadden <fadden@android.com> Merge "Pay attention to buffer timestamps"
1585c4d9fbbba3ba70ae625923b85cd02cb8a0fd 28-Jun-2013 Andy McFadden <fadden@android.com> Pay attention to buffer timestamps

When acquiring a buffer, SurfaceFlinger now computes the expected
presentation time and passes it to the BufferQueue acquireBuffer()
method. If it's not yet time to display the buffer, acquireBuffer()
returns PRESENT_LATER instead of a buffer.

The current implementation of the expected-present-time computation
uses approximations and guesswork.

Bug 7900302

Change-Id: If9345611c5983a11a811935aaf27d6388a5036f1
ramebufferSurface.cpp
6b44267a3beb457e220cad0666c039d3a765cdb2 10-Jul-2013 Mathias Agopian <mathias@google.com> fix SF buffer cropping

When a buffer had a crop (meaning its content is scaled to the window size)
and a window crop was defined, the resulting crop couldn't be expressed
properly because h/w composer's API was limited to integers, since
this is fixed in h/w composer 1.3, we take adventage of this to
make sure we get the correct crop.

this bug could result in the buffer being scaled by an incorrect ratio and
be slightly offset; moreover, it would produce different results from the
GL code path, which is always correct.

Change-Id: I8e20e00b6e26177d14f4ab4d2cd581e26c818892
loatRect.h
WComposer.cpp
WComposer.h
c5d7b7d323bba8772a9005f7d300ad983a04733a 03-May-2013 Lajos Molnar <lajos@google.com> BufferQueue: track buffer-queue by instance vs. by reference

Instead of representing the buffer-queue as a vector of buffer
indices, represent them as a vector of BufferItems (copies).
This allows modifying the buffer slots independent of the queued
buffers.

As part of this change, BufferSlot properties that are only
been relevant in the buffer-queue have been removed.

Also, invalid scalingMode in queueBuffer now returns an error.

ConsumerBase has also changed to allow reuse of the same
buffer slots by different buffers.

Change-Id: If2a698fa142b67c69ad41b8eaca6e127eb3ef75b
Signed-off-by: Lajos Molnar <lajos@google.com>
Related-to-bug: 7093648
ramebufferSurface.cpp
2381033ad001960c606d13e3a4198e5da3672ec7 17-May-2013 Mathias Agopian <mathias@google.com> am e6eef6c1: am ea74d3b7: make the warning timout of Fence::waitForever() implicit and longer

* commit 'e6eef6c136b007f3a7e1e19884875b855c0c5f95':
make the warning timout of Fence::waitForever() implicit and longer
ea74d3b78d607cde17790a7bb83e6f68ffd34cfd 17-May-2013 Mathias Agopian <mathias@google.com> make the warning timout of Fence::waitForever() implicit and longer

- timeout is now 3 seconds instead of 1
- simplifies the API a bit
- allows us to change/tweak this timeout globaly

Bug: 8988871

Change-Id: I8d3c6ec43a372f602fb3f29856710339f86c0ec9
WComposer.cpp
c0db61966a172c953b4259bd0501c9b6781f0f31 09-May-2013 Jesse Hall <jessehall@google.com> am dda42952: am 64f3b2fd: Merge "Remove experimental HWC virtual display support" into jb-mr2-dev

* commit 'dda4295221f831560ca9d554cd9b7be1c672d0b6':
Remove experimental HWC virtual display support
e737c11cd83a449d9a544c5c6d4e0dfd42250a56 07-May-2013 Jesse Hall <jessehall@google.com> Remove experimental HWC virtual display support

Bug: 8384764
Change-Id: I97b52ed83ad85466bd91cb9291308994048568a1
ufferQueueInterposer.cpp
ufferQueueInterposer.h
WComposer.cpp
irtualDisplaySurface.cpp
irtualDisplaySurface.h
74d211ae26a0257c6075a823812e40b55aa1e653 22-Apr-2013 Mathias Agopian <mathias@google.com> clean-up/simplify all dump() APIs

remove the scratch buffer parameter and use
String8::appendFormat() instead.

Change-Id: Ib96c91617c8e7292de87433d15cf6232b7d591b0
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
WComposer.h
1df59c93fea8bec21b8084c34aface086f1e0896 06-Apr-2013 Jesse Hall <jessehall@google.com> Merge "Tell HWComposer the dimensions of virtual displays" into jb-mr2-dev
d5e345b0cf5c1c5aaa5c10a1a4c759e74d77fb37 06-Apr-2013 Jesse Hall <jessehall@google.com> Merge "Actually set the virtual display output buffer." into jb-mr2-dev
1c569c4d45f89ec05abf8f8fe3a560e68bf39a8e 05-Apr-2013 Jesse Hall <jessehall@google.com> Tell HWComposer the dimensions of virtual displays

HWComposer queries the HWC for dimensions of physical displays, but
can't do that for virtual displays. The dimensions are used to set the
display frame of the framebuffer target layer passed to HWC, and
implicitly the dimensions of the virtual display.

Bug: 8316155
Change-Id: I9cbd2530d2fa878f86128a1472def520b5d694a5
WComposer.cpp
WComposer.h
6d5b8e600e77164d3b5e51b89bf9c940fd7b4ea2 05-Apr-2013 Jesse Hall <jessehall@google.com> Merge "Clean up HWC state when releasing a DisplayDevice" into jb-mr2-dev
2ba647e9f5249d9ed97739d29d879064e31ba34a 04-Apr-2013 Jesse Hall <jessehall@google.com> Actually set the virtual display output buffer.

Bug: 8316155
Change-Id: Ida1ac47e5a932fdaad3ec862e121cfe55d255699
irtualDisplaySurface.cpp
33ceeb32582739dd74e404593d9ddf8adf5100bb 02-Apr-2013 Mathias Agopian <mathias@google.com> Fix include paths

Change-Id: If5350a3de995cc0cb1afea067e7ce168bc00d3f5
ramebufferSurface.cpp
WComposer.cpp
02d86567d95b99e1142941ed7ec23a4465822813 25-Mar-2013 Jesse Hall <jessehall@google.com> Clean up HWC state when releasing a DisplayDevice

DisplayDevices can be released when DisplayManager removes them from
the display list, or (for virtual displays) when the surface is set to
NULL. We were only cleaning up HWC resources associated with the
display in the first case.

Bug: 8384764
Change-Id: Id3d226dd7178fbe6d0a2ac4e2660b864ee073de3
WComposer.cpp
ffe1f19ca9707f84cb9fdb06209bf36cd8c2ef0a 22-Mar-2013 Jesse Hall <jessehall@google.com> Fix virtual displays for HWC<=1.1

If we're using a HWC that doesn't support virtual displays, or we have
more virtual displays than HWC supports concurrently, the
VirtualDisplaySurface should simply be a passthrough from source
(GLES) to sink.

This change also tries to distinguish between display types and HWC
display IDs a little better, though there's more to do here. Probably
needs a higher-level rethink; it's too error-prone now.

Bug: 8446838
Change-Id: I708d2cf262ec30177042304f174ca5b8da701df1
irtualDisplaySurface.cpp
irtualDisplaySurface.h
851cfe834295224cd64bdd499872b95b19c4de8c 20-Mar-2013 Jesse Hall <jessehall@google.com> Isolate knowledge that fb target == output buffer

HWComposer didn't allow the virtual display output buffer to be set
directly, instead it always used the framebuffer target buffer.
DisplayDevice was only providing the framebuffer release fence to
DisplaySurfaces after a commit.

This change fixes both of these, so both HWComposer and DisplayDevice
should continue to work if VirtualDisplaySurface changes to use
separate framebuffer and output buffers. It's also more correct since
VirtualDisplaySurface uses the correct release fence when queueing the
buffer to the sink.

Bug: 8384764
Change-Id: I95c71e8d4f67705e23f122259ec8dd5dbce70dcf
isplaySurface.h
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
WComposer.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
afaf14b9fbfe8943d845e2f01e8a401ad7a4d854 20-Mar-2013 Jesse Hall <jessehall@google.com> Use descriptive aliases instead of HWC_NUM_DISPLAY_TYPES

Bug: 8384764
Change-Id: Ia2563fab19dbc6e4a95bed03445e609334841cca
WComposer.cpp
13f01cbdbd34779a234bc674df79e23672fd5c0b 20-Mar-2013 Jesse Hall <jessehall@google.com> Pass sp<Fence>s around instead of file descriptors

Change-Id: Iac70584a2207940730e8f803a543e4e9a4000c47
isplaySurface.h
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
WComposer.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
8d8c75976171d194ca8f94727b22e3bf7676b9dd 22-Mar-2013 Jesse Hall <jessehall@google.com> Merge "Release virtual display buffer immediately after HWC set" into jb-mr2-dev
70a6e88dbd52605f35f290eba52a05bdc6fc8042 22-Mar-2013 Mathias Agopian <mathias@google.com> initialize planeAlpha (to 0xFF) for the FB_TARGET

Bug: 8422625
Change-Id: I7b72456c2e01ed92e675cc1bfa0cfd0d2ce5064e
WComposer.cpp
7414965606f82ac2bcace5d3e2c8a4810517bf1e 20-Mar-2013 Jesse Hall <jessehall@google.com> Release virtual display buffer immediately after HWC set

Previously we only queued a virtual display buffer to the sink when
the next frame was about to be displayed. This may delay the "last"
frame of an animation indefinitely. Now we queue the buffer as soon as
HWC set() returns and gives us the release fence.

Bug: 8384764
Change-Id: I3844a188e0f6ef6ff28f3e11477cfa063a924b1a
ufferQueueInterposer.cpp
ufferQueueInterposer.h
isplaySurface.h
ramebufferSurface.cpp
ramebufferSurface.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
ef64b75a936ffd194673dbce6766995f86b42ba9 18-Mar-2013 Jesse Hall <jessehall@google.com> Don't log an error on HWC1.1+ devices with no FB HAL

Change-Id: I015e5a1a1f926181e51f82525f69beff71bd70cd
WComposer.cpp
WComposer.h
80e0a397a4712666661ecc629a64ec26e7f6aac3 15-Mar-2013 Jesse Hall <jessehall@google.com> Add BufferQueueInterposer and use it for virtual displays

BufferQueueInterposer allows a client to tap into a
IGraphicBufferProducer-based buffer queue, and modify buffers as they
pass from producer to consumer. VirtualDisplaySurface uses this to
layer HWC composition on top of GLES composition before passing the
buffer to the virtual display consumer.

Bug: 8384764
Change-Id: I61ae54f3d90de6a35f4f02bb5e64e7cc88e1cb83
ufferQueueInterposer.cpp
ufferQueueInterposer.h
WComposer.cpp
WComposer.h
irtualDisplaySurface.cpp
irtualDisplaySurface.h
99c7dbb24994df2f3e175f7b25dd2c9dd92a72f0 14-Mar-2013 Jesse Hall <jessehall@google.com> Add DisplaySurface abstraction

DisplayDevice now has a DisplaySurface instead of using
FramebufferSurface directly. FramebufferSurface implements
DisplaySurface, and so does the new VirtualDisplaySurface class.
DisplayDevice now always has a surface, not just for virtual displays.

In this change VirtualDisplaySurface is just a stub; buffers still go
directly from GLES to the final consumer.

Bug: 8384764
Change-Id: I57cb668edbc6c37bfebda90b9222d435bf589f37
isplaySurface.h
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
irtualDisplaySurface.cpp
irtualDisplaySurface.h
7adb0f8a9fdb961692ffd2f0c65cacb155143f64 07-Mar-2013 Jesse Hall <jessehall@google.com> Minor cleanups/fixes before virtual display refactoring

None of these should change behavior, except for removing some
incorrect log messages when using a virtual display.

- HWComposer::getAndResetReleaseFenceFd() checks the HWC version, so
no need to do that in the DisplayDevice::onSwapBuffersCompleted().
However, it should check that mFramebufferSurface is not NULL like
it is for virtual displays.
- Comment that FramebufferSurface::dump() overrides the non-virtual
ConsumerBase::dump(), and fix it so the right thing happens
regardless of the static type of the pointer/reference the callee
has. FramebufferSurface::dump() could be removed right now, but I'd
need to bring it back in a later change.
- Use the right enum for validating display type ids.
- Don't try to send hotplug events for virtual displays.
- Mark virtual displays as connected so HWComposer::prepare() doesn't
think something is wrong when it gets a non-NULL layer list.
- Remove unused FramebufferSurface methods.

Bug: 8384764
Change-Id: Id28a2f9be86b45f4bb7915fdf7752157035f4294
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
13127d8921356dff794250e04208c3ed60b3a3df 06-Mar-2013 Mathias Agopian <mathias@google.com> Get rid of LayerBase.

The functionality of LayerBase and Layer is folded
into Layer. There wasn't a need for this abstraction
anymore.

Change-Id: I66511c08cc3d89009ba4deabf47e26cd4cfeaefb
WComposer.cpp
WComposer.h
a9a1b006e48320f5c501473e51e6c4a5f7a17b88 28-Feb-2013 Jesse Hall <jessehall@google.com> Initialize DisplayData fences to NO_FENCE, not NULL

Also fix another place that was checking for NULL fence rather than
Fence::isValid().

Bug 8283950

Change-Id: Ie06db327eb416828d8dac139171d96d4470b2e35
WComposer.cpp
WComposer.h
e3c697fb929c856b59fa56a8e05a2a7eba187c3d 15-Feb-2013 Mathias Agopian <mathias@google.com> Refactoring: Rename SurfaceTextureClient to Surface

Change-Id: Ibed34175ae273608393aaa5f0a7df207dc40d709
ramebufferSurface.cpp
WComposer.cpp
1df8c345854155cbbcb9f80de9d12d66ea70ac08 20-Dec-2012 Jamie Gennis <jgennis@google.com> libgui: disallow NULL Fence pointers

This change eliminates the uses of a NULL sp<Fence> indicating that no waiting
is required. Instead we use a non-NULL but invalid Fence object for which the
wait methods will return immediately.

Bug: 7892871
Change-Id: I5360aebe3090422ef6920d56c99fc4eedc642e48
WComposer.cpp
5fe58b8ba6c5d78481730874236a1be48a90d61d 08-Feb-2013 Mathias Agopian <mathias@google.com> only disable hwc when alpha < 1.0

Bug: 8149181
Change-Id: Ib3c7a44f04871e020adceeae16d002141ac758d4
WComposer.cpp
9f8386e1118c10dd4927f62637ec7162569bdbdc 30-Jan-2013 Mathias Agopian <mathias@google.com> Add support for plane-alpha in HWC

Change-Id: I218e7dd5f23de535aabce61e993002ab6cb46cdd
WComposer.cpp
WComposer.h
51d22007386f171e1c696786ddce957e78fc4a03 14-Jan-2013 Jesse Hall <jessehall@google.com> Remove unused HWCLayer::setPerFrameDefaultState()

Bug: 7977590
Change-Id: Ic49c4e38ef2ee6beaeb268c406347c882135bdf0
WComposer.cpp
WComposer.h
800856a7b7f8d89c1a64955f152549b8f42cd3e0 14-Jan-2013 Jesse Hall <jessehall@google.com> am f3e9d5bd: am cbe51356: Merge "Remove support for legacy HWC version encoding"

* commit 'f3e9d5bde57a41593a7dbc15e6f1fdb1ea64ea74':
Remove support for legacy HWC version encoding
f3e9d5bde57a41593a7dbc15e6f1fdb1ea64ea74 14-Jan-2013 Jesse Hall <jessehall@google.com> am cbe51356: Merge "Remove support for legacy HWC version encoding"

* commit 'cbe5135610cd3c919e6334fada72cc52238bb8b0':
Remove support for legacy HWC version encoding
8f06a8c2c80491465e8742c1bf45315dab7017e3 11-Jan-2013 Andy McFadden <fadden@android.com> Reduce C++11 warnings

A few typecasts to fix "narrowing conversion" complaints.

Change-Id: Ib2118079a2ca33959c748d03d8c6f1722d62e8fe
WComposer.cpp
7296051995fbaea919480a6cc2dabb729dabc95b 11-Jan-2013 Jesse Hall <jessehall@google.com> Remove support for legacy HWC version encoding

Change-Id: If03ae1ebf10d15777310e1449a57473021390582
WComposer.cpp
dd9d192287bcd54b5aef68f201dacca26cfa850e 20-Nov-2012 Mathias Agopian <mathias@google.com> workaround: don't reset compositionType to HWC_FRAMEBUFFER

This workaround a HWC HAL issue in Nexus 7, which causes videos and live
wallpapers to animate slowly.

Bug: 7563862
Change-Id: I87803aaad9751b1fd8392b9732304d4bccec659a
WComposer.cpp
2adaf04fab35cf47c824d74d901b54094e01ccd3 18-Dec-2012 Andy McFadden <fadden@android.com> Rename ISurfaceTexture and SurfaceTexture

The C++ class names don't match what the classes do, so rename
ISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to
GLConsumer.

Bug 7736700

Change-Id: Ia03e468888025b5cae3c0ee1995434515dbea387
ramebufferSurface.h
392edd88cb63d71a21a86a02cf9c56ac97637128 30-Nov-2012 Jamie Gennis <jgennis@google.com> SurfaceFlinger: Move GraphicBufferAlloc to libgui

This change moves the GraphicBufferAlloc class from SurfaceFlinger to libgui.

Change-Id: Idf31d2004efa2651b60590733f73c4a7b831e8a9
ramebufferSurface.cpp
raphicBufferAlloc.cpp
raphicBufferAlloc.h
e64b38fad2cc6686fb6691aaf65c735f505a49a5 20-Nov-2012 Jamie Gennis <jgennis@google.com> Merge "SurfaceFlinger: track the HWC retire fences"
3e095b251503d71bea04d6b707e8188cd30034e2 20-Nov-2012 Mathias Agopian <mathias@google.com> workaround: don't reset compositionType to HWC_FRAMEBUFFER [DO NOT MERGE]

This workaround a HWC HAL issue in Nexus 7, which causes videos and live
wallpapers to animate slowly.

Bug: 7563862
Change-Id: I16ad85317e3e7f47f005e7397357c14186b0a13d
WComposer.cpp
2ec3e0748bff8d75baade2ddda9fbfa21a3b7d3f 12-Nov-2012 Jamie Gennis <jgennis@google.com> SurfaceFlinger: track the HWC retire fences

This change adds functionality to the HWComposer class to track the retire
fences returned by each hwc set call. It adds the HWComposer::getDisplayFence
method to allow other parts of SurfaceFlinger to get a fence that will signal
when the most recent flip takes effect on a display.

Change-Id: I676e0f98440fc58ed70908aa1a1e2ee3e7bf9eb2
WComposer.cpp
WComposer.h
ee932d0ad1a16cc93b4bd9eaf9cb3cc756fb2dfc 14-Nov-2012 Mathias Agopian <mathias@google.com> Reset compositionType to HWC_FRAMEBUFFER before calling prepare()

Honor the documentation. this broke in JB-MR1.

Change-Id: I841a93b409fc940374bc748c4e143d82a192669c
WComposer.cpp
WComposer.h
620685c2e684082c82657732d1e35cefd0c79006 19-Oct-2012 Andy McFadden <fadden@android.com> Fix emulator vsync

The code that reserves display IDs was only run when a hardware
composer was present. The eventControl() function, which handles
enabling of vsync, was ignoring the request because the primary
display didn't appear in its set of allocated IDs. This moves
reservation of IDs for built-in displays outside the HWC-only block.

Also, added a couple of warnings in eventControl().

Bug 7376568

Change-Id: I185ccdf817a25499b5c2668f8f6d594afb8c1568
WComposer.cpp
cdbaecb54152ce98789823420d426077d72aa1e7 12-Oct-2012 Jamie Gennis <jgennis@google.com> SurfaceFlinger: make the num FBs a board config

Bug: 7283132
Change-Id: I38116f39fc18212f2daab94bbfc3daaf89439fc4
ramebufferSurface.cpp
ramebufferSurface.h
9e9689c11148521d2c16a121a0b87b062be0714c 11-Oct-2012 Andy McFadden <fadden@android.com> Fix HDMI unblank behavior

Two issues:

(1) We were announcing the hotplug event before we were ready to
handle blank/unblank events, so we were losing the initial unblank
that power manager sends us when HDMI is first plugged in. This
left the display blank until you toggled the device power off/on.

(2) We were retaining fbTargetHandle for HDMI after the display was
disconnected. The value didn't get updated when HDMI was reconnected
because the display was blank, so we didn't go through that code
path. So, when HDMI was re-connected, we passed stale data into
the HWC.

Bug 7323938

Change-Id: I2335d24fd7b0f00bb23fc63aa7bcf44cb8857c73
WComposer.cpp
cb55857bbde34a06c19dde3db5064d1717a0173e 05-Oct-2012 Mathias Agopian <mathias@google.com> fix dumpsys Layer name when using multiple displays

Bug: 7288401
Change-Id: I14beeef58fac5270cef3b611e18c163060efe6c3
WComposer.cpp
WComposer.h
5a8f9012ee8bb9dc1ad14432b96a821f08802ee3 05-Oct-2012 Andy McFadden <fadden@android.com> Tone down a fatal assert

The new disconnectDisplay function doesn't handle virtual displays,
but it may be called for them. Return without doing anything.

Bug 7281786

Change-Id: I62607f2ae6073fa66b393f55932604aeb8e03566
WComposer.cpp
81cd5d3b94d21253a0be925f4ae58cc7f4afeef7 04-Oct-2012 Mathias Agopian <mathias@google.com> make sure we don't call into the HWC HAL when not needed

when enabling/disabling vsync we now make sure to
not call into the HAL if the state wouldn't change.

Bug: 7274951

Change-Id: Ie24a6d68888a51b577acf9c2a973d85437cbacaf
WComposer.cpp
WComposer.h
27ec5739bc05330e08b02f25b62a8f597bad897a 03-Oct-2012 Andy McFadden <fadden@android.com> Fix crashes after HDMI disconnect

The display was being removed from SurfaceFlinger's list before we
had a chance to reset HWComposer's layer list, so we were passing
stale data into the hardware composer (which has its own per-display
data). This resulted in "invalid gralloc handle" complaints.
We now clear the layer list immediately after removing the display.

The display was being removed while its EGLSurface was still
"current", resulting in "cancelBuffer: BufferQueue has been
abandoned" complaints. We now call makeCurrent on the primary
display before removing the external display.

Bug 7274254

Change-Id: Ia59e3a61d7ec46488b96bf93ec5e4ed3488b70e4
WComposer.cpp
WComposer.h
ba607d53c6a94ea8c4c12571980c4ad159af308b 01-Oct-2012 Jesse Hall <jessehall@google.com> Add Fence::waitForever which logs a warning timeout, and use it

Bug: 7217641
Change-Id: If0c1a613ead307c4045a47824174bf40c72bc7d7
WComposer.cpp
d30b36d1fd0c7ab80553e784a155266be9703e47 01-Oct-2012 Jamie Gennis <jgennis@google.com> SurfaceFlinger: reset the FB_TGT acquire fence

This change makes SurfaceFlinger reset the acquire fence fd to -1 after each
call to HWComposer::commit. The HWComposer implementation is resonsible for
closing the fd, so SurfaceFlinger should make sure not to pass it to HWC
multiple times.

Change-Id: I79554d9f6d6ef2b77d632d40251516c1f5b16ddb
Bug: 7258954
WComposer.cpp
c01a79d77b829e7de86ef137694e8ad708470ca1 28-Sep-2012 Andy McFadden <fadden@android.com> Pass display arg to blank/unblank

This allows us to blank and unblank displays other than the built-in
display (e.g. HDMI).

Bug: 7240511
Change-Id: I89ea13f9e497be74c3e1231d0c62fb558e93e0f8
WComposer.cpp
WComposer.h
9e2463e71796964cfaa06bf09a880875ac3537bc 22-Sep-2012 Mathias Agopian <mathias@google.com> add/remove displays properly on hotplug events

Bug: 7191563
Change-Id: I8f0fbf3b29658c9479443141798e6f288a1f2d52
WComposer.cpp
b4d18ed34e3513f3a14ea0876c7e330bee72a529 21-Sep-2012 Mathias Agopian <mathias@google.com> fix an issue where hotplug events were not dispatched

Change-Id: I527eec77f338cd6f1a9021aa4c9d384dbddd6d2a
WComposer.cpp
38e623bc5c2d7224ebd5b82efaea401bc8e5367a 21-Sep-2012 Mathias Agopian <mathias@google.com> fix a typo preventing pre hwc-1.1 devices from booting

Change-Id: Icf01254689633d04967872749ac947a671e47ed8
WComposer.cpp
f5a33928349bebc8eebc9f466618997e98c24e68 20-Sep-2012 Mathias Agopian <mathias@google.com> we now correctly set-up connected screens during boot

Change-Id: Ie8b1a3b97ad1821cc970e43abe96c8cec7135b66
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
WComposer.h
148994e5f33ce240ff24ceb5bc0500b7f2001959 20-Sep-2012 Mathias Agopian <mathias@google.com> We now report hotplug events to the framework

Change-Id: I2d6b7787d39e5929485a551e4982498c5053c211
WComposer.cpp
WComposer.h
1604f777d11c40daae8ec91d8ea75625996bfbac 19-Sep-2012 Mathias Agopian <mathias@google.com> one more step toward HDMI support

getDisplayInfo() now returns proper information for
HWC managed displays.

hotplug is sitll not supported; so this is not fully correct
as the information returned will be bogus if the HDMI screen
is not plugged in.

Bug: 7191563
Change-Id: If55d8e829fae0443571548155007f486cdf9bc9f
WComposer.cpp
WComposer.h
f33e4b6f13bc3ee2d2a4e1abd1ada171c70d3492 21-Sep-2012 Mathias Agopian <mathias@google.com> GraphicBufferAlloc class was declared twice

this was confusing because the one in FramebufferSurface
wasn't in fact being used

Change-Id: Ied45aec20d804cfbe52440f9b2f2852a85c757cf
ramebufferSurface.cpp
raphicBufferAlloc.cpp
raphicBufferAlloc.h
6ab93290aeed63f139b0e77819ea889bbce9ec8b 18-Sep-2012 Mathias Agopian <mathias@google.com> suppress superfluous log

Change-Id: I838f2de4cf99e885833c4f42e2a69d6e3bb8eea5
WComposer.cpp
d3d35f18345c3ef93217313a583ace473b5a47ad 18-Sep-2012 Jesse Hall <jessehall@google.com> Check that HWC exists before trying to use it

Bug: 7185810
Change-Id: I1271d6ba397f3abf0ef166b8d03b9b26b72e28d7
WComposer.cpp
da27af9832a0170f1fc40ef3f21371c4d30d21b3 14-Sep-2012 Mathias Agopian <mathias@google.com> add support hwc 1.1

Bug: 7124069

Change-Id: I53d705105c4ad8954d3f50ee4f4c8b7ec936b871
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
WComposer.h
cde87a3b9d3f8dc15232d927b56ee9e5e520f58d 13-Sep-2012 Mathias Agopian <mathias@google.com> refactor things a bit

- decouple GL and main display initialization
- ensure that each "supported" display has its own FramebufferSurface
- onScreenAcquired/Released now takes a display

Change-Id: If34a05f3dea40f6c79db77f4dde283a2580daac4
WComposer.cpp
WComposer.h
ae2cfb5746e87f1bf17c446e20274c41ce0a57ce 13-Sep-2012 Andy McFadden <fadden@android.com> Minor tweaks

A couple of minor cleanups I stumbled over while looking at other
things.

Change-Id: I385ecfe1afefd577afbc59d7ef1d98d868073651
WComposer.cpp
db27621e22559a1b16414f890677ef04242fbc3b 07-Sep-2012 Jesse Hall <jessehall@google.com> Initialize new HWC 1.2 fields

Also rename resolution* to width/height.

Change-Id: Ia5f0c50d3f0a349160f314a3257c3b985e13ef1d
ramebufferSurface.cpp
WComposer.cpp
WComposer.h
babba1868773eba5edf8a8e335b8e109a32292e0 12-Sep-2012 Andy McFadden <fadden@android.com> Fix emulator

Emulator has no HWC.

Change-Id: I7810b27034f6772823142e5bf877681db1c8ee49
WComposer.cpp
43601a2dc320a271ff8c3765ff61414a07221635 12-Sep-2012 Andy McFadden <fadden@android.com> Reduce failure uncertainty

This adds a trivial workaround for a one-shot boot time crash, plus
an explicit check and abort for a failure condition that currently
presents as a less obvious failure.

Bug: 7145521, 7147557
Change-Id: I548f6a9caa9f0bd5710aaecea0e1c6c7c8f2f281
WComposer.cpp
b0d1dd36f104c0b581674adc7f830cbf44b7db06 10-Sep-2012 Andy McFadden <fadden@android.com> Reshuffle FramebufferSurface

FramebufferSurface no longer speaks directly to the FB HAL. Now
everything goes through HWComposer (which may or may not be
connected to a hardware composer).

Added display index arg to some query methods.

Change-Id: Id3e157d2d4e3555d33afbb703e518b6e92e2d6d5
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
WComposer.h
b27254154642575dfb4bbfa79fbedde7d7ee23dd 06-Sep-2012 Jamie Gennis <jgennis@google.com> libgui: move fence handling into ConsumerBase

This change moves some common fence handling code into the base class for
BufferQueue consumer classes. It also makes the ConsumerBase class initialize
a buffer slot's fence with the acquire fence every time a buffer is acquired.

Change-Id: I0bd88bc269e919653b659bfb3ebfb04dd61692a0
ramebufferSurface.cpp
55882dea1b1b305f15192b96ff7814f18babb212 06-Sep-2012 Mathias Agopian <mathias@google.com> fix a problem where all hwc layers would have the SKIP flags set

the problem was that LayerBase::setPerFrameData() was always setting
this flag. in fact there was no reason to do this at that point since
the layer is initialized to a default state in setGeometry().

Bug: 7111259
Change-Id: Ib37b0dd7391a6163070e9aca025512159c1705f9
WComposer.cpp
e25d005d91344c500450f01d4a258ca9c3676627 05-Sep-2012 Jesse Hall <jessehall@google.com> Always reset layer acquireFenceFd after commit

If SurfaceFlinger needs to refresh the screen but the dirty region is
empty, it won't set the layer acquire fences, and stale file
descriptors will be passed to HWC commit(). Now we make sure to clear
the stale file descriptors for each layer right after commit().

Bug: 7078301
Change-Id: I6953ff91fc5488f105b30b07306f9c45a4c3f780
WComposer.cpp
c39736088398a9b4367b30fc307ed7de96ac342e 01-Sep-2012 Mathias Agopian <mathias@google.com> the visible region sent to HWC was garbage

we used to have a visibleRegion object per layer, but now
it's per screen; so at somepoint the code got changed to
calculate the per-screen visible region on the stack and that's
what got passed to HWC.

we're now setting the visibleRegionScreen at each frame and
freeing at after the HWC set() call. We use the underlaying
SharedBuffer so that in most cases we don't have to allocate,
free or copy memory around.

Bug: 7089478
Change-Id: I24fa556c76613a225d9fe7a6c6b727bb476144d8
WComposer.cpp
WComposer.h
f90883d6a50688081642855bba43bef0693d5020 31-Aug-2012 Jesse Hall <jessehall@google.com> Merge "HWC 1.1: hook up hotplug event, use new display config queries" into jb-mr1-dev
1bd20e0f9ecd27cc5ad2bdf08b01837ecc10c357 29-Aug-2012 Jesse Hall <jessehall@google.com> HWC 1.1: hook up hotplug event, use new display config queries

Change-Id: I2fd359e5fc7e1948072c6bc6b6fe47ea5e8025c1
WComposer.cpp
WComposer.h
72f096fb1ad0a0deadbfac5f88627461905d38e8 28-Aug-2012 Jamie Gennis <jgennis@google.com> BufferQueue: use max acquired buffer count

This change makes BufferQueue derive the min undequeued buffer count from a max
acquired buffer count that is set by the consumer. This value may be set at
any time that a producer is not connected to the BufferQueue rather than at
BufferQueue construction time.

Change-Id: Icf9f1d91ec612a079968ba0a4621deffe48f4e22
ramebufferSurface.cpp
2b9776982360a234803665cb79e8abcfeb0e3c79 31-Aug-2012 Jamie Gennis <jgennis@google.com> Merge "BufferQueue: clean up buffer counting" into jb-mr1-dev
31a353da225af5329735451c761b430d82dfda1b 25-Aug-2012 Jamie Gennis <jgennis@google.com> BufferQueue: clean up buffer counting

This change is a clean up of some of the handling of the maximum number of
buffers that are allowed at once. It mostly renames a few member variables and
methods, but it includes a couple small refactorings.

Change-Id: I9959310f563d09583548d4291e1050a7bbc7d87d
ramebufferSurface.cpp
9eb1eb5bb55740982ceae9966fc536824edc302a 29-Aug-2012 Jesse Hall <jessehall@google.com> Handle new device api version encoding

Change-Id: I3d36058bd5d31c23b3cc4a7eb5aa033b6f3c1955
WComposer.cpp
13a082e160c2d1d8006b93a555a57035213d568b 24-Aug-2012 Andy McFadden <fadden@android.com> Added display initialization method

The primary display device was being configured to "blank" by
default, which prevented the boot animation from appearing
(unless you got lucky with the hardware composer state).

Bug 6975688

Change-Id: I0fa52e9e719c6e997c5725a7baf15d9718461b78
WComposer.cpp
f435863467ab407f2a482604beed5fa6f0144c62 23-Aug-2012 Mathias Agopian <mathias@google.com> teach HWC about multiple displays

Change-Id: I5e72a83d419a729835cb0e1ec45557b4d3fb56b1
WComposer.cpp
WComposer.h
30bcc61431d8e3bef779472dd52a7b156dcaba09 23-Aug-2012 Mathias Agopian <mathias@google.com> remove support for HWC < 1.0

Change-Id: If7e676a6e3524afeb9af3875125d2131d95db38b
WComposer.cpp
WComposer.h
e60b0687c8d49871d0c8786cabe6851f7a7783b5 22-Aug-2012 Mathias Agopian <mathias@google.com> HWComposer now has its own concept of display IDs

HWComposer can now create IDs representing a display
it can deal with. IDs MAIN and HDMI are reserved.
SurfaceFlinger associate HWComposer IDs with a
DisplayDevice and uses that when it talks to HWComposer.

A DisplayDevice doesn't have to have a HWComposer ID,
in that case it just can't use h/w composer composition.

Change-Id: Iec3d7ac92e0c22bf975052ae2847402f58bade71
WComposer.cpp
WComposer.h
bbd164a3c790a0649dffd2f015e6f47692c72e1c 21-Aug-2012 Jesse Hall <jessehall@google.com> Update for cleanups in hwc interface

Change-Id: I363fd8b085167a1af6c14b68012bda5c62bfe59f
WComposer.cpp
WComposer.h
8f971ff6661c875e7adb3f14731e1579c3c80c62 22-Aug-2012 Jesse Hall <jessehall@google.com> Pass the correct number of displays based on HWC version

Change-Id: I27372f5d3102ad56f6d67722d631ae18d37f8330
WComposer.cpp
WComposer.h
5f20e2d4462da3471f59152b32cd8640fa4a21da 11-Aug-2012 Mathias Agopian <mathias@google.com> reimplement wifi display hack with new external display SF framework

fix a few bugs with external displays

- HWComposer doesn't really handle multiple displays yet
so there is a lot of ugliness there

- We also need to make sure that external displays are not
blanked by default

- due to some EGL limitations surfaces being swapped need
to be current

Change-Id: I82bff05b43bcebd8da863c7c76b4edbc3bc223a9
WComposer.cpp
8b736f138cfd9b239a2c7073347a13c489534ae1 14-Aug-2012 Mathias Agopian <mathias@google.com> xdpi / ydpi were reported as 0

Bug: 6975723
Change-Id: Ia7fa37ec11e2308804f5034959a37e508d292d31
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.cpp
WComposer.h
748f3df66f6695681cde44461e2548e6e1dbc1bb 10-Aug-2012 Mathias Agopian <mathias@google.com> avoid crashing when we don't have an h/w composer

should fix the emulator

Bug: 6956162
Change-Id: I38247b59d276b8db078c4dc2caba7d3fb545912c
WComposer.cpp
1e26087493ac0e7d7dc6dea8ad85cfef08b3271f 09-Aug-2012 Mathias Agopian <mathias@google.com> Add a display parameter to HWComposer where needed

- also replace C casts with C++ casts
- only the interface is changed, HWComposer still doesn't
fully handle multiple displays

Change-Id: I48eb89bff2edb76bf1d4d41f46802b9b2a7166a8
WComposer.cpp
WComposer.h
b685c542836b93c99cd85053e07696406ea37adb 31-Jul-2012 Jesse Hall <jessehall@google.com> Changes to support multi-display HWC

Change-Id: I07efff54f2980dcb013935747b03e099b8f1181b
WComposer.cpp
WComposer.h
1a4d883dcc1725892bfb5c28dec255a233186524 03-Aug-2012 Jamie Gennis <jgennis@google.com> surfaceflinger: refactor FrambufferSurface

This change refactors the FramebufferSurface class to inherit from the new
ConsumerBase class.

Bug: 6620200
Change-Id: I46ec942ddb019658e3c5e79465548b171b2261f2
ramebufferSurface.cpp
ramebufferSurface.h
WComposer.h
888c822c4cb6976aab9256c58bae9e17e3e55c5c 05-Aug-2012 Mathias Agopian <mathias@google.com> remove a dependency of DisplayDevice on the refresh rate

this remove a dependency (not all) on FramebufferSurface

Change-Id: Ie07ce70760cdcedfb41b5b41bea8da45637bf474
WComposer.cpp
WComposer.h
d3ee231eddce0b69ec5e35188dbd0f4a2c3b9ac3 02-Aug-2012 Mathias Agopian <mathias@google.com> cleanups in preparation of bigger changes

- fix typo drawForSreenshot misspelled
- get rid of DisplayDeviceBase
- removed unused or unneeded code
- always pass a DisplayDevice to Layer methods that are called
on a per-display basis (to make it clear that this could be
called more than once per composition).

Change-Id: Id948b7e09fe5c06db0e42d40d6ed75dd095c7f44
isplayDeviceBase.cpp
isplayDeviceBase.h
WComposer.cpp
WComposer.h
0f2f5ff75b7b48ceb64270655ee6b62d09bf4d00 01-Aug-2012 Mathias Agopian <mathias@google.com> rename DisplayHardware to DisplayDevice

Change-Id: I3f7250cd914e0da4f9ec2c9403587bbe12f3cc62
isplayDeviceBase.cpp
isplayDeviceBase.h
isplayHardwareBase.cpp
isplayHardwareBase.h
34a09ba1efd706323a15633da5044b352988eb5f 30-Jul-2012 Jesse Hall <jessehall@google.com> Move eglSwapBuffers out of HWComposer

Commit 8630320 moved the eglSwapBuffers fallback (for devices with no
HWC implementation) from DisplayHardware to HWComposer. But HWComposer
only knows about the framebuffer EGL display and surface handles if
there is a HWC, so it was always passing bogus handles.

This change moves the eglSwapBuffers fallback up to SurfaceFlinger,
which has access to the framebuffer EGL handles.

Bug: 6886613
Change-Id: Iad3f5ff7c90ee48d7053999e6a4548d6794b6ebd
WComposer.cpp
WComposer.h
028508cad5ef63ef9fbd42c14e76658e4fd9ebf2 26-Jul-2012 Mathias Agopian <mathias@google.com> hopefully fixe a race condition in sf initialization

if we received a vsync event during SF init, we could crash
as not all objects were ready to go.

Change-Id: Ie11b46e3eb1b37a709dd8757843d444f93dd0189
WComposer.cpp
8630320433bd15aca239522e54e711ef6372ab07 25-Jul-2012 Mathias Agopian <mathias@google.com> split HWComposer out of DisplayHardware

we will only ever have a single instance of HWComposer, so
it's now an attribute of SurfaceFlinger, instead of being part
of DisplayHardware.

DisplayHardware now just represents a "display" (it should be renamed).

Change-Id: Iec191e57686868e1df6daa8b880a286c9fefde56
WComposer.cpp
921e6ac4b7610a178285898d191eb0e3afe906c0 24-Jul-2012 Mathias Agopian <mathias@google.com> SurfaceFlinger cleanup

mostly refactored SurfaceFlinger.h, but also removed dead code.
cleaned-up a few includes as well.

Change-Id: Ib15f4ffe567912b61ee98aa076c6a283b72811b5
isplayHardwareBase.cpp
isplayHardwareBase.h
WComposer.cpp
WComposer.h
a49126087b4494f4ef50873f3a3f6727265f6621 12-Jul-2012 Mathias Agopian <mathias@google.com> factor EGL/GL and surface creation out of DisplayHardware

Change-Id: Icd85a6a4caad06f056578008af3e21666fa8b1f4
ramebufferSurface.cpp
ramebufferSurface.h
10fbdb6059755f009e02f0ccc2b9d289beb6b086 13-Jul-2012 Colin Cross <ccross@android.com> surfaceflinger: call into hardware composer to blank screen

Call into the new HWC blank operation to blank or unblank the screen.
Legacy systems may have already blanked the screen via early suspend,
and can choose to not implement the blank operation in their hardware
composer implementation.

Change-Id: Ib403c8c0e36367a2cfef3e1d124872fcfeb9e7cb
WComposer.cpp
WComposer.h
dc5b485f74edf2d2f31c62054eb6c180421a3ade 30-Jun-2012 Jesse Hall <jessehall@google.com> Pass fence to HWC on first use of buffer

Also do a CPU-wait on the fence before using it for GL composition.

Change-Id: I0f645a42a44803276cae11b904e5a26d65871562
WComposer.cpp
WComposer.h
b42b1ac1587aebda5e2f334d95b620271fafba4e 28-Jun-2012 Jesse Hall <jessehall@google.com> Return fence from acquireBuffer

Change-Id: Iab22054c1dc4fd84affab3cc5bbdcd5a1e689666
ramebufferSurface.cpp
1b03149f3533db04e72e088d3fdd09d0087ca594 21-Jun-2012 Mathias Agopian <mathias@google.com> get rid of GraphicPlane

its functionality is now folded into DisplayHardware
there will be more changes in that area.
isplayHardware.cpp
isplayHardware.h
3094df359d1e6e2ae8ca4e935cc093f563804c96 19-Jun-2012 Mathias Agopian <mathias@google.com> First prototype atttempting to support an external display

both API and implementation will change, this is just a prototype
intended to show feasability.

SurfaceFlinger is passed an ISurfaceTexture through a new
callback, it is in turn used to create an EGLSurface which
surfaceflinger will draw into in addition to the main screen.

Change-Id: Id0bbb0b854bb7bae44d57246a90b65d4567f9a21
isplayHardware.cpp
isplayHardware.h
ef19414bd8b77a26f5751f3845be79025a8263fe 14-Jun-2012 Jesse Hall <jessehall@google.com> Transfer HWC release fences to BufferQueue

After a HWC set, each SurfaceFlinger Layer retrieves the release fence
HWC returned and gives it to the layer's SurfaceTexture. The
SurfaceTexture accumulates the fences into a merged fence until the
next updateTexImage, then passes the merged fence to the BufferQueue
in releaseBuffer.

In a follow-on change, BufferQueue will return the fence along with
the buffer slot in dequeueBuffer. For now, dequeueBuffer waits for the
fence to signal before returning.

The releaseFence default value for BufferQueue::releaseBuffer() is
temporary to avoid transient build breaks with a multi-project
checkin. It'll disappear in the next change.

Change-Id: Iaa9a0d5775235585d9cbf453d3a64623d08013d9
ramebufferSurface.cpp
WComposer.cpp
WComposer.h
549646d29fccfb2366cc9ca4d894d39c55351fae 19-Jun-2012 Jesse Hall <jessehall@google.com> Merge "Add support for HWC_DEVICE_API_VERSION_1_0"
d3076aca0f6106dbc6c5a1588f560c62567752a4 16-Jun-2012 Mathias Agopian <mathias@google.com> Merge "Implement SurfaceFlinger's ANW on top of BufferQueue"
5880cc573823148237eac9ab7bc586b8e4eb7160 06-Jun-2012 Jesse Hall <jessehall@google.com> Add support for HWC_DEVICE_API_VERSION_1_0

The acquire and release fences aren't yet used; this is just support
for the new version and temporary backwards compatibility for older
versions.

Change-Id: Ia5ccc05a97c86f649042b9a35e11042fa0187e84
WComposer.cpp
WComposer.h
3e8b853d67c737abdb363f9c978e7d83eac4d888 14-May-2012 Mathias Agopian <mathias@google.com> refactor HWComposer to break dependency with the HAL headers

HWComposer must abstract the HWC HAL entirely, so that the
HAL can continue to evolve (and break binary compatibility)
without breaking SurfaceFlinger. The HWC data structure had
leaked outside of HWComposer, this is now fixed.

We now have an abstract interface that provide all the
needed functionality, HWCompose provides concrete
implementations of it based on the the HWC version.

Change-Id: I40c4676dc986b682ede5520a1c60efe64037b0bb
WComposer.cpp
WComposer.h
3e87601170141229d661df93e2f59e1ced73474b 08-Jun-2012 Mathias Agopian <mathias@google.com> Implement SurfaceFlinger's ANW on top of BufferQueue

SF now has its own implementation of ANW for the
framebuffer and it uses BufferQueue. FramebufferNativeWindow
is now only used by stand-alone apps.

Change-Id: Iddeb24087df62bd92b0f78e391dda9b97ddc859c
isplayHardware.cpp
isplayHardware.h
ramebufferSurface.cpp
ramebufferSurface.h
8e533069e5721e55cb9768e140e16546c3a4a8b6 07-Jun-2012 Colin Cross <ccross@android.com> surfaceflinger: replace early suspend with binder call from PowerManager

SurfaceFlinger will no longer directly synchronize with early suspend.
Instead, PowerManagerService will synchronize with SurfaceFlinger to
ensure that a black frame has been drawn on the display, and then
trigger all early suspend handlers.

Change-Id: I07acdd628440d23fdb69db94319ec5d65d3f4919
isplayHardwareBase.cpp
06e51a0aaf76fe53cef20c3345cf1ebda2b3461e 27-Apr-2012 Mathias Agopian <mathias@google.com> don't actuate vsync hint when not needed

Change-Id: I61c43dd76041816ab8cbe9aeaa55c11c1479ed03
owerHAL.cpp
owerHAL.h
03e407270c7ad76632f982c886d0776bed9e9b4c 27-Apr-2012 Mathias Agopian <mathias@google.com> set vsync power hint

Change-Id: I28c2faf9ff584df3e74392712971cbcf75eb9e98
isplayHardware.cpp
isplayHardware.h
WComposer.cpp
WComposer.h
owerHAL.cpp
owerHAL.h
a2f4e56fec0fb36c4a370eb23d6e9dc57f250b59 16-Apr-2012 Mathias Agopian <mathias@google.com> get rid off preserve backbuffer optimization in SF

this optimization didn't improve performance and in fact
seemed to hurt more than anything else. it also made
things a lot more complex as it introduced edges cases
when switching to/from h/w composer.

Change-Id: Iaafc235e175f5740cd98bff914d706e02ab88bb8
isplayHardware.cpp
isplayHardware.h
22ffb117b0c2a906bd04aef9738a52223cdd1dce 11-Apr-2012 Mathias Agopian <mathias@google.com> make sure to disable VSYNC while screen is off

Change-Id: If1894c43b0a39a2851e1280a35ae77bccd6d9abd
WComposer.cpp
b60314a12f3336b27d73920805ab07cbc498d857 11-Apr-2012 Mathias Agopian <mathias@google.com> rework screen on/off code

Change-Id: I13f71e850592a588bbd4805b1830c503bd4decb4
isplayHardwareBase.cpp
isplayHardwareBase.h
e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8 11-Apr-2012 Mathias Agopian <mathias@google.com> Added vsync debugging information in dumpsys log

Change-Id: I20ef05a73d89caaf6a70dc9ca25ada6e6a1f6ff9
WComposer.cpp
WComposer.h
3a77871383bc1a03cc866686d81628493d14de7c 09-Apr-2012 Mathias Agopian <mathias@google.com> start VSYNC thread when HWC doesn't handle it

Change-Id: I853a822ea9ec13870ae25af55a89ad9a8cc3936a
WComposer.cpp
2965b26022f95051f65b09d7eac47cbe923855c9 09-Apr-2012 Mathias Agopian <mathias@google.com> VSYNC handling cleanup

Change-Id: I1376bf864c4e03c11fb6d1333a8b7cfdda08c9e4
WComposer.cpp
WComposer.h
1a3bf41b7165ba294af46bc32483eaad61e707ea 06-Apr-2012 Erik Gilling <konkers@android.com> Fix SurfaceFlinger crash in HWC::eventControl

eventControl was not checking if there was a hwc before callingi
hwc->eventControl

Change-Id: I4d739fc9c0d47da131f4ffc5d50e274de156d012
WComposer.cpp
3eb38cb33e41ce40dd1094bdec850f0fca9f8a53 04-Apr-2012 Mathias Agopian <mathias@google.com> SurfaceFlinger now uses the new VSYNC HAL API.

If h/w composer doesn't support vsync (version < 0.3) we
"fake" it with a timer.

Change-Id: I1e3be79f43c9631d1293ad7d6cf52f9bfc42d65b
isplayHardware.cpp
isplayHardware.h
WComposer.cpp
WComposer.h
SyncBarrier.cpp
SyncBarrier.h
31d2843b45ebdb69ec3355111b7567363fd2a6b7 04-Apr-2012 Mathias Agopian <mathias@google.com> Add HWC vsync hook. Currently unused.

Change-Id: I849d56f375813a044c5e2d0b25f791476a60fa01
WComposer.cpp
WComposer.h
b5dd9c0fee3b3d6d35035dfb992951ebea3e0e4e 22-Mar-2012 Mathias Agopian <mathias@google.com> rewrite density calculation code so it's understandable

Change-Id: I1016cd5fd75355abe4ab879d04f4849bd2dd4122
isplayHardware.cpp
6fc0a9bd4bdd3ae4a09ae033f68c04fecfc35991 22-Mar-2012 Dima Zavin <dima@android.com> displayhardware: fix not obeying ro.sf.lcd_density when specified

Change-Id: I71efd6aebfdb0323b07327f5e448a5cb5eb0fad6
Signed-off-by: Dima Zavin <dima@android.com>
isplayHardware.cpp
1b15e1e26b3d410b6bd51feeb7077251a464fee0 15-Mar-2012 Dima Zavin <dima@android.com> surfaceflinger: use display dpi if not forced with ro.sf.lcd_nensity

Change-Id: I52c4b872e0f2c088c2a6ada7a5bb15db071f0002
Signed-off-by: Dima Zavin <dima@android.com>
isplayHardware.cpp
90ac799241f077a7b7e6c1875fd933864c8dd2a7 26-Feb-2012 Mathias Agopian <mathias@google.com> fix libgui header location

Change-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe
isplayHardware.cpp
isplayHardware.h
870b8aa15cb5c722b5d8eb7726eaa5f1a7c23d69 25-Feb-2012 Mathias Agopian <mathias@google.com> remove libui dependency on libEGL

Change-Id: I1194f04085637d5c384e134967249430cc43b6ee
isplayHardware.cpp
f6de1c04ffc2c7a739578b7612944fddb7011ab7 05-Feb-2012 Mathias Agopian <mathias@google.com> fix a crasher when starting SF with the screen off

SF could end-up in an infinite crash-loop during startup if it
was stopped while the screen was off. This happened because
the thread that manages screen blanking was started before
other important pieces of SF were initialized.

Change-Id: I0dded11dbf2395fdd57b673859a7aa0fa9eb32b6
isplayHardwareBase.cpp
isplayHardwareBase.h
67016af1e480a5f338555355638fc2a23e15c746 03-Feb-2012 Mathias Agopian <mathias@google.com> fix an issue where SF would spin if /sys/power/wait_for_fb_xxx don't exist

we now exit the Display thread on any error happening on these files.
also refactor the code and remove a lot of unused stuff.

Change-Id: I8d080c35b211890ca20ae09fa36fbdccdf5669a8
isplayHardwareBase.cpp
isplayHardwareBase.h
82d7ab6c7e0cf971e515134ccf072682dd1a2cdb 20-Jan-2012 Mathias Agopian <mathias@google.com> improve SurfaceFlinger dumpsys

It is now possible to say:

dumpsys SurfaceFlinger --latency

to print latency information about all windows

dumpsys SurfaceFlinger --latency window-name

to print the latency stats of the specified window

for instance: dumpsys SurfaceFlinger --latency SurfaceView

The data consists of one line containing global stats, followed by
128 lines of tab separated timestamps in nanosecond.

The first line currently contains the refresh period in nanosecond.
Each 128 following line contains 3 timestamps, of respectively
the app draw time, the vsync timestamp just prior the call to set and
the timestamp of the call to set.

Change-Id: Ib6b6da1d7e2e6ba49c282bdbc0b56a7dc203343a
isplayHardware.cpp
isplayHardware.h
55ef343331f5efbfe3e01bc9993d94faea236048 07-Jan-2012 Mathias Agopian <mathias@google.com> remove dead/usnused code

Change-Id: I6fa2bc6ee01790abd2c1533f043d61a5e5c8d26e
isplayHardware.cpp
isplayHardware.h
e6f43ddce78d6846af12550ff9193c5c6fe5844b 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
isplayHardware.cpp
WComposer.cpp
32397c1cd3327905173b36baa6fd1c579bc328ff 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
isplayHardware.cpp
isplayHardwareBase.cpp
WComposer.cpp
a19954ab377b46dbcb9cbe8a6ab6d458f2e32bca 04-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156801

Bug: 5449033
Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
isplayHardware.cpp
9d4536835248525f32f1504a3d28d5bbfa0a2910 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
isplayHardwareBase.cpp
d0566bc26fcf6ca396118701fa11900b627f2c09 18-Nov-2011 Mathias Agopian <mathias@google.com> Add support for sending VSYNC events to the framework

use gui/DisplayEvent to receive the events. Events are
dispatched through a unix pipe, so the API is compatible
with utils/Looper. see gui/DisplayEvent.h for more info.

Bug: 1475048
Change-Id: Ia720f64d1b950328b47b22c6a86042e481d35f09
isplayHardware.cpp
isplayHardware.h
SyncBarrier.cpp
SyncBarrier.h
439cf8576d3b846c0aa0944d84372259bf075d51 29-Nov-2011 Mathias Agopian <mathias@google.com> Fix build.

Revert "Add support for sending VSYNC events to the framework"

This reverts commit f3918c5bd4bc9f02f74da42995564150ca2dd382.

Change-Id: I998e3e1aa3fa310829ae973b64fe11b01f6f468f
isplayHardware.cpp
isplayHardware.h
461afeb9fde149f9455acbadf1257d08d33e8eb3 18-Nov-2011 Mathias Agopian <mathias@google.com> Add support for sending VSYNC events to the framework

use gui/DisplayEvent to receive the events. Events are
dispatched through a unix pipe, so the API is compatible
with utils/Looper. see gui/DisplayEvent.h for more info.

Bug: 1475048
Change-Id: If4126023fc9c067e56087ec7d16a8fd542ce1794
isplayHardware.cpp
isplayHardware.h
4b9511c16195a646242eff833b0af212933b6eca 14-Nov-2011 Mathias Agopian <mathias@google.com> rework a bit how we manage EGL extensions

- don't advertise extensions that are not supported
by any implementation

- remove EGL_ANDROID_swap_rectangle which is not
implemented by anybody and confuses people

- add some comments about mandatory extensions

Bug: 5428001
Change-Id: Id8dc48116ac1d1eb79ec9ef55d03e29d4257c1f3
isplayHardware.cpp
385977f6d6c4e76379df384d50695a10cb3757f2 05-Nov-2011 Mathias Agopian <mathias@google.com> workaround to set the WM refresh rate to 48 Hz for tuna devices only

this is TEMPORARY until we can do this properly.

Bug: 5572464
Change-Id: I6537706d636a83a4a50e2900d6b829dd89b6f245
isplayHardware.cpp
f7cdd053fe1fee093f6b0973ad5723765f98a48d 11-Oct-2011 Mathias Agopian <mathias@google.com> fix an issue where the screen could stay off

this would happen when toggling on/off/on very fast, the screen
could stay black (while the panel is on).

Bug: 5429724
Change-Id: Ic8aa6aff066e6267923c0d47ef65e314e7bb6d41
isplayHardwareBase.cpp
isplayHardwareBase.h
e2c2f9213f936f98db604dc9c126ff22f725a824 06-Oct-2011 Mathias Agopian <mathias@google.com> Force a repaint when hwc invalidate hook is called

without this prepare() would be called but not set() since the
dirty region is empty.

Change-Id: I038acfbdad4c16015357ccde4d1949391d6f989d
WComposer.cpp
aebac5f34a098f733f887c993bd617a393e10db8 30-Sep-2011 Mathias Agopian <mathias@google.com> improve hwc log output

we now print the handle of each buffer

Change-Id: I70884ae458a9dcf10cfc403258d48eaa4618b7f4
WComposer.cpp
fc60b94db9081adb4835bd44eacdd0573fc4d644 23-Sep-2011 Mathias Agopian <mathias@google.com> fix dumpsys wording for h/w composer

Change-Id: Iaa1094964f2fb83da491e23b9309f7690079c17e
WComposer.cpp
9c6e297271ec9af9d974242d89cfa08cb6ceaa0a 21-Sep-2011 Mathias Agopian <mathias@google.com> fix transition from full overlays to fb

we need to clear the whole framebuffer in that situation because
we can't trust the content of the FB when partial (fb preserving)
updates are used.

Bug: 5318492

Change-Id: I3f0e01b0fb665a34e44d88ad9f0f54a5d990060b
isplayHardware.h
WComposer.cpp
WComposer.h
fb4d5d5726c172adbe62341d99a2148685a98379 21-Sep-2011 Mathias Agopian <mathias@google.com> improve hwc dumpsys

we now log the buffer's format

Change-Id: I9d3ad8018e884240a153de3baefb6331cb014d0f
WComposer.cpp
22da60c3e64cd57535cbba063c07127814a2b52f 09-Sep-2011 Mathias Agopian <mathias@google.com> Improve SF dumpsys output wrt HWC

Change-Id: Ibdb7930fa3b521bfd3f44750ed98cfd75f9a01fe
WComposer.cpp
WComposer.h
7ee4cd5556cef1878e1d4729f1b389f186311027 02-Sep-2011 Mathias Agopian <mathias@google.com> fix a bug that caused the off animation to not show sometimes

this happened when the overlays were in use, since the animation
is rendered in the FB and the FB is not used.

we now have a way to turn hwc off temporarily.

Change-Id: I3385f0c25bb9cc91948e7b26e7cd31ed18c36ace
WComposer.cpp
WComposer.h
c7d14e247117392fbd44aa454622778a25c076ae 02-Aug-2011 Mathias Agopian <mathias@google.com> Add a h/w composer API to allow the HAL to trigger a redraw

This is useful in various situations, for instance if the HAL
wants to change its compositing strategy.

Bug: 4488017
Change-Id: I5afc14e5917c6db7926d7417d48677d5aba50caa
isplayHardware.cpp
isplayHardware.h
isplayHardwareBase.h
WComposer.cpp
WComposer.h
6163091a2c366f8311fc3ee627dc7deb9681236e 07-Jul-2011 Mathias Agopian <mathias@google.com> Fix EGLUtils::selectConfigForPixelFormat()

- renderscript now calls EGL directly instead of relying on this function
- surfaceflinger also does its own EGLConfig selection
- selectConfigForPixelFormat stays for legacy reason (many tests use it) but
it now only tries to match the alpha channel of the format rather than the
format itself.

this will allow implementations who don't support the exact formats
defined in the HAL to work properly.

Bug: 4998223

Change-Id: Ic664dfc14d5072a514b6f77a115d1521bfc1578f
isplayHardware.cpp
1f339ff3875afad128a8e16ee6395c5fad295826 02-Jul-2011 Mathias Agopian <mathias@google.com> don't kill surfaceflinger when system process dies

Change-Id: I2d3ed87b590f9ccea3fa4af41d92911de070b315
isplayHardware.cpp
d9071ad304b20e6d0ddf8473bc1f12ce3d7feb11 20-Apr-2011 Mathias Agopian <mathias@google.com> Merge "remove support for console in SurfaceFlinger"
3d031507e9fe249ca9f51314fe9613ff5ed262bf 19-Apr-2011 Mathias Agopian <mathias@google.com> remove support for console in SurfaceFlinger

the only supported screen management api now is
/sys/power/wait_for_fb_{sleep|wake}

Change-Id: I6c7d8d54843da4980b1b38ee3d46cf19be275240
isplayHardwareBase.cpp
isplayHardwareBase.h
3d64e738b91b2a4a9d81fae1991e6f6eae9ac8c8 19-Apr-2011 Mathias Agopian <mathias@google.com> fix memory corruption when retriving GL_MAX_VIEWPORT_DIMS

Change-Id: I2e0b1eac6dbc6a4ecbbaf31013aa02cf2369fce2
isplayHardware.cpp
isplayHardware.h
a5529c8778c2f407f482fc12165aeb76c0f505c2 08-Dec-2010 Mathias Agopian <mathias@google.com> remove support for PUSH_BUFFER surfaces and overlays

the same functionality is now supported through
the h/w composer HAL, and YUV support in the GPU.

Change-Id: I8146605449954b8e8fd7f78810b7d873c2d8f5bf
isplayHardware.cpp
isplayHardware.h
1d21a9cafc534c34a2f28c985c4c7aa176d0e67b 02-Dec-2010 Erik Gilling <konkers@android.com> surfaceflinger: add support for gralloc dump hooks

Change-Id: Ib6f539ed0132b70d040d653c03d52cc04249ac3c
isplayHardware.cpp
isplayHardware.h
WComposer.cpp
47a79466a72715d57934016a3cad19444dad0642 21-Oct-2010 Mathias Agopian <mathias@google.com> am fb31036f: am 583fefc8: Merge "Use the context_priority extension when present." into gingerbread

Merge commit 'fb31036fd844444c395a2ae9c97439eec9f774e4'

* commit 'fb31036fd844444c395a2ae9c97439eec9f774e4':
Use the context_priority extension when present.
3c85e4ad5a14a49fffcd458886cf7519276daed5 21-Oct-2010 Mathias Agopian <mathias@google.com> Merge "Use the context_priority extension when present." into gingerbread
e33a35f02576b482a5ac4891a78f6e72fb4c0dea 15-Oct-2010 Mathias Agopian <mathias@google.com> am 5bfa3a34: am 011b5bcc: Merge "implement part of [3094280] New animation for screen on and screen off add support for screen on animation" into gingerbread

Merge commit '5bfa3a34eaef759c3ec4def76f646eb1c0bf997f'

* commit '5bfa3a34eaef759c3ec4def76f646eb1c0bf997f':
implement part of [3094280] New animation for screen on and screen off
503d2d4a08370209dc83330bd00997ba9512f46f 14-Oct-2010 Joe Onorato <joeo@google.com> am 9a12a3c8: am ba799098: Merge changes I76513387,I335fb671 into gingerbread

Merge commit '9a12a3c8d4bb20042cf69e07d268e3a04ac71f96'

* commit '9a12a3c8d4bb20042cf69e07d268e3a04ac71f96':
Remove dead code, and make the animation a setting.
turn off the electron beam
9daa5c9b9dd286cbbf5d43f7e45a5e9e4048e855 13-Oct-2010 Mathias Agopian <mathias@google.com> implement part of [3094280] New animation for screen on and screen off
add support for screen on animation

Change-Id: If50cf52ae04b95b42da7d74cf7fa96d5cb54d238
isplayHardwareBase.cpp
59119e658a12279e8fff508f8773843de2d90917 11-Oct-2010 Mathias Agopian <mathias@google.com> turn off the electron beam

Change-Id: I335fb6719f1d5a3f1c6f37a046fd1c2c4ed2bbc6
isplayHardwareBase.cpp
isplayHardwareBase.h
67226814e1b6d1c02079635608444e73ec658837 12-Oct-2010 Mathias Agopian <mathias@google.com> Use the context_priority extension when present.

Change-Id: I12eadf1e32d576de5d811fba44afa73263e13eef
isplayHardware.cpp
58959343dbdb6157fa5f5463262d4842b8954353 07-Oct-2010 Mathias Agopian <mathias@google.com> Fix a null dereference

Change-Id: I3df446b90c1607782778749de7ba0f8c00698c33
WComposer.cpp
8372785879d329f592f6883620b5a32d80d74691 24-Sep-2010 Mathias Agopian <mathias@google.com> dump HWC state in dumpsys

Change-Id: Ifbb38ca1ac9685776250e01c8d02021b35af72cf
WComposer.cpp
WComposer.h
c479e18db0216f7096fefe85ffa71ab00329aef3 15-Sep-2010 Mathias Agopian <mathias@google.com> resolved conflicts for merge of 48a86240 to master

Change-Id: I2305fef9f4dd46183337217d822df3c675b6b6e5
35b48d10bc9e064201d3d54d2d476314684a7a05 14-Sep-2010 Mathias Agopian <mathias@google.com> Add logging of various important graphics events

There are 16 events logged in the event log:
SF_APP_DEQUEUE_BEFORE
SF_APP_DEQUEUE_AFTER
SF_APP_LOCK_BEFORE
SF_APP_LOCK_AFTER
SF_APP_QUEUE

SF_REPAINT
SF_COMPOSITION_COMPLETE
SF_UNLOCK_CLIENTS
SF_SWAP_BUFFERS
SF_REPAINT_DONE

SF_FB_POST_BEFORE
SF_FB_POST_AFTER
SF_FB_DEQUEUE_BEFORE
SF_FB_DEQUEUE_AFTER
SF_FB_LOCK_BEFORE
SF_FB_LOCK_AFTER

all events log the buffer conserned and a timestamp in microseconds.

by default the logging is not enabled, to turn it on:
adb shell service call SurfaceFlinger 1006 i31 1
adb shell setprop debug.graphic_log 1

The effect is immediate in SurfaceFlinger, but applications need to be
restarted.

Change-Id: Ifc2e31f7aed072d9a7dede20ff2ce59231edbec1
isplayHardware.cpp
isplayHardware.h
f5f2712854599b4970643c6000fe6ae950a08ba9 09-Sep-2010 Antti Hatala <ahatala@nvidia.com> surfaceflinger: give hwcomposer a chance to release buffers

Change-Id: I605fa779702022865dd58df3b36f37c2644ade36
isplayHardware.cpp
WComposer.cpp
WComposer.h
000ca8fa9a1a92aa2f132ba41d11ece6d01cdadd 18-Aug-2010 Mathias Agopian <mathias@google.com> revert hwcomposer HAL changes. DO NOT MERGE.

This reverts commit:
94364b91a2894bf037b8beb027132fbb812e1434
f8e705dea48f77f1c2532fdbadd4997dd1851af0
b59beb5ca68d0228f60dda60d85e2d0226b33215
e0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20
isplayHardware.cpp
isplayHardware.h
WComposer.cpp
WComposer.h
45721773e1a68e96da4b6cc04cef276bae7ca3e9 13-Aug-2010 Mathias Agopian <mathias@google.com> Fix a couple issues with the new hwcomposer HAL

- we now clear the framebuffer upon request from the HAL
- the HAL list size could get out of sync with reality
- there was also an issue where sometime we could run past the list

Change-Id: Ic3a34314aed24181f2d8cc787096af83c046ef27
WComposer.cpp
WComposer.h
f1352df47fe20aed23c216a78923c7d248f2bb91 12-Aug-2010 Mathias Agopian <mathias@google.com> should fix sim build, hopefully

Change-Id: I5390bd34dcca36fef43b5169386fff1b04cc842b
WComposer.cpp
a350ff98692b3a50cad5cc93f9f83221242ca86a 11-Aug-2010 Mathias Agopian <mathias@google.com> call into hwcomposer HAL when present

Change-Id: I70f31c69a9436a43860e78977442863ecba6d27b
isplayHardware.cpp
isplayHardware.h
WComposer.cpp
WComposer.h
81bac09fa6b01dd1495644d9c825c3666762fced 15-Jul-2010 Mathias Agopian <mathias@google.com> move native services under services/

moved surfaceflinger, audioflinger, cameraservice

all native services should now reside in this location.

Change-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8
isplayHardware.cpp
isplayHardware.h
isplayHardwareBase.cpp
isplayHardwareBase.h