History log of /external/drm_hwcomposer/hwcomposer.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0e89268266a8754f5fc09595d6d7545bccb88017 01-Mar-2017 Adrian Salido <salidoa@google.com> drm_hwcomposer: introduce QueueWorker

Current method to queue work such as display compositions relies on
spinning the CPU until there is space in the queue. This is inefficient
for the time in which the queue happens to fill up.

Introduce a new QueueWorker class to simplify queueing work and handle
blocking for available space more efficiently.

Change-Id: Ida7aa612931700a56ecae3efc7ddd1c86efec699
/external/drm_hwcomposer/hwcomposer.cpp
e5c7565114b786bdf1bacc8c8ff3cb9517d17b92 16-Feb-2017 Adrian Salido <salidoa@google.com> drm_hwcomposer: refactor Worker

Make use of standard library mutex and conditions which simplifies use
of condition variables and benefits from things like scoped locking.

Also add tests to make sure it runs as expected.

Change-Id: Iaf92e17e1f6757dce490eddee61f84cb1f953b0c
/external/drm_hwcomposer/hwcomposer.cpp
637699644d49ef96e2243ddab67ee6a795800b1b 21-Apr-2016 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Move importer.h to platform.h

We're going to need more platform-specific stuff, so lump it
all in the same header.

BUG=b/28117135
TEST=compiles

Change-Id: Idfe82e9a29a0bcd284a02b2e58af0e620fdc542b
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
5325e10e691d56d5d6ae3173b55216833dc7d144 29-Mar-2016 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Fix build warnings

A cleanup patch to fix the build warnings that have surfaced
from the new build system.

BUG=None
TEST=Builds without warnings

Change-Id: I2ad898e627d451f87705d2bdf06a315b8e1c7a1c
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
3a69f73205d4da12c1de16d06d0589e443a65812 26-Oct-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Add hotplug event handler

Add a hotplug event handler to handle hotplug events. Upon
hotplug, the handler is responsible for finding and setting
the preferred mode of the new display.

BUG=chrome-os-partner:41682
TEST=Tested on ryu with DP

Change-Id: Ide57382624c7839ed81a712bc29ea2e1cc19dcae
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
55584b51b27481f7219c7c95a0a6350f43443457 29-Mar-2016 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Set DPMS ON when setting active config

Ensure we turn the connector on after we set the active mode.

BUG=chrome-os-partner:41682
TEST=Tested on smaug with DP

Change-Id: I3410a1ac261fb0848d668c5baef2d77eb860017b
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
b1008373244ff109cadb8b5d443e95d98d034124 24-Nov-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Skip layers which aren't on-screen

Don't composite layers whose bounds are entirely off screen, or
which have width or height of 0.

Bug: chrome-os-partner:47938
Test: Swipe between videos in Google Photos

Change-Id: I29671db6763caf3cb764b06d1ff955276ebecd80
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
04b47ea435834b4373d57dae6485986b9f0918ae 20-Nov-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Allow for multiple transforms at once

Because sometimes one just ain't enough, allow more than
one transform at a time.

Bug: chrome-os-partner:46710
Test: Tested with the CTS Verifier "Camera Orientation" test

Change-Id: Ie5f9bbbc7c89964feafc78150e18512861c85b69
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
db81fce67419d82d828eebec25e57284e90dd93a 28-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: always put protected layers on hardware planes

Protected layers will not work inside of the GLWorker, so we are forced to put
them into planes directly.

Because we can now receive display contents which can never be properly
composited (e.g. 4 protected layers on hardware with only 3 planes), some
compromises had to be made for the composition planning algorithm. First all
protected layers are given a plane. Then the remaining planes are used by the
remaining layers, pre-composite buffer, and squash buffer. In the case where
there are too few planes for both a pre-composite buffer and squash buffer,
everything gets pushed into the pre-composite buffer and the squash buffer
will not be composited onto the screen. Another major limitation is that any
unprotected layers appearing behind a protected layer will actually appear on
top of that protected layer.

BUG=chrome-os-partner:43674
TEST=run protected content with lots of other layers

Change-Id: I94620d93f68ca14dc1966422dc89035ab84e3ff4
/external/drm_hwcomposer/hwcomposer.cpp
bd61c8dc8a5a5198b5a35cae9908787209607a28 29-Oct-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Handle HWC_SKIP_LAYER properly

Instead of ignoring skip layers, set all layers between the first
and last skip layer as HWC_FRAMEBUFFER in prepare(). In set(), substitute
the HWC_FRAMEBUFFER_TARGET in place of those layers.

Bug: 25366235
Test: Tested with gmail modal and rotation

Change-Id: Ife0fd569caf505263b00e5d0e8217a339aa09031
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
7642c9230a7a5e30bd8e47d656d0d8f3162323f9 29-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: update #include's for drm_hwcomposer.h

That's the second most important part of renaming a file.

Change-Id: If9280f3b360389ef17b798e162a9c3b0c0a3133b
/external/drm_hwcomposer/hwcomposer.cpp
ff30b52303cdbeb9cbfb054e2a12da1135ea49c9 29-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: polish for old DRM wrapper code

- deleted private copy constructors
- replace delete with unique_ptr
- use in-class assignment
- remove default constructors/destructors when no longer needed
- remove most iterators used in for loops
- move UniqueFd to its own header so drmresources can use it

Change-Id: Ib20cc0949cf4d381a58548b8156c5cb368ca3efe
/external/drm_hwcomposer/hwcomposer.cpp
36d7c6e7ddb2e941f8611502ca938189290ff4b2 20-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: get gralloc buffer usage during hwc_set

This is needed during the layer composition planning phase to determine if a
layer is protected and therefore needs to be in its own overlay.

BUG=chrome-os-partner:43674

Change-Id: I33510a5a56b57aaaf55732149ae3e3d2f92ada79
/external/drm_hwcomposer/hwcomposer.cpp
aa467a869ce178f7b5869c01049b815792fd54ff 22-Oct-2015 Haixia Shi <hshi@chromium.org> drm_hwcomposer: remove unused and confusing HWC_FB_BUFFERS definition.

BUG=none
TEST=builds

Change-Id: I5f143f93ebb82405320d4f0aaf03db4201380f8e
/external/drm_hwcomposer/hwcomposer.cpp
5757e82631820372382d3369c54cc3a1ffef812f 17-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: implement squashing

Change-Id: Ifd4feaa0de303ddfd519d4415ab31d2a72f26022
/external/drm_hwcomposer/hwcomposer.cpp
6f82f1d69d1194ee43dd9f36c0314afb6634cbbb 22-Oct-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Remove hwc.drm.use_framebuffer_target property

Remove the redundant property hwc.drm.use_framebuffer_target from
drm_hwcomposer. The same can be achieved by using the "Disable HW
overlays" toggle in Developer Options.

Change-Id: I3283a8931d84113d8dc63cc818598a7f9556a171
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
2fddd37d1f8eeb410aa2499ff582220b55dd80d6 16-Oct-2015 Haixia Shi <hshi@chromium.org> drm_hwcomposer: do not queue layers map for virtual display

It is invalid to add a DrmCompositionDisplayLayersMap for the virtual
display because the corresponding physical display resources (such as
crtc, connector, etc.) do not exist.

BUG=24985282
TEST=verify that no crash occurs

Change-Id: I24a6671e7f94032a38104ae7ed3eb0da79479601
/external/drm_hwcomposer/hwcomposer.cpp
fd6dc339551e5aa041daec7abffc3ff8eaeca138 14-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: reimplement Dump for DrmDisplayCompositor

Also fixes hwc_dump sometimes failing to null terminate its output buffer.

TEST=dumpsys SurfaceFlinger

Change-Id: Ibf93cfd496a07a9375d78a8b239c2c7876aff986
/external/drm_hwcomposer/hwcomposer.cpp
acba14be77a39f6a1336f5751e99ff83f2df8ec1 14-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: set the composition map's display field

Change-Id: I67842cdfd0afab67a81448c1b64da47d2f933db3
/external/drm_hwcomposer/hwcomposer.cpp
7e88be90cf44838fd183ee3d4981c19d7171e501 13-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: improve logging and reliability of some error paths

Change-Id: I4a955c6261a9674009eec2264eb2ef4a161da9c4
/external/drm_hwcomposer/hwcomposer.cpp
f99d53f6f9535055710f17ff7573f9b52d54e07f 09-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: fix small class consistency issues

This also fixes a typo in an error message.

Change-Id: Ie6c369f5eb2496ac3ebb342dbdcdd70f3a176495
/external/drm_hwcomposer/hwcomposer.cpp
d21f528156b17c9e069bfb4e215d7e399c94795b 05-Oct-2015 Haixia Shi <hshi@chromium.org> drm_hwcomposer: support virtual displays

Virtual display support is mandatory for HWC version 1.4.

As a minimal implementation, we use frambuffer target and let SF take care of
GLES composition. We still need to handle the acquire and release fences for
both the virtual display and all layers in a separate worker thread.

BUG=24609829
TEST=screen casting to chromecast

Change-Id: Idb962f4b5bb852c9ec9ebcaa1679a653c01737fb
/external/drm_hwcomposer/hwcomposer.cpp
566da2bb02ea8ef6f817a702ecc73061c700fcdd 07-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: fill hwc_display_contents retireFenceFd

This restores the behavior of "drm_hwcomposer: Populate retireFenceFd"

The retire fence is triggered when all releaseFenceFd's of the display's
layers are triggered.

Change-Id: Id06f2df03dcb9638ccbae23f46c42b05551fae6d
/external/drm_hwcomposer/hwcomposer.cpp
7acc59be7f12ad45b9abfa56c2d21726edf6224e 30-Sep-2015 Haixia Shi <hshi@chromium.org> drm_hwcomposer: fix crash in hwc_set()

For each display context we need to unconditionally call emplace_back()
on layers_indices to ensure that entries in layers_indices correspond to
the correct display.

BUG=24506167
TEST=still builds and boots ok
Change-Id: I6bc0858471c9ec51615c8ed7d8613529f77cb1ab
/external/drm_hwcomposer/hwcomposer.cpp
4a253659cef3d82bfb0b25b3ff4c7b073d7a0460 11-Sep-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: implement the safe handling of layers

This is a sweeping change to discard our usage of struct hwc_layer_t outside
hwcomposer.cpp. That was a dangerous struct that was a source of many of our
errors. Replacing it with safer RAII-style classes reduces the amount and
complexity of our code.

Change-Id: I580cafdf89bd1e7e6583f3073858b8e78e6018ba
/external/drm_hwcomposer/hwcomposer.cpp
1034bb7eef0582d8a641e455a6867aa5c99eaf2d 09-Sep-2015 Haixia Shi <hshi@chromium.org> drm_hwcomposer: use HWC_FRAMEBUFFER_TARGET if all HWC_OVERLAY layers are skipped

Apparently there are cases (such as during rotation) where SF will put content
in framebuffer target and set HWC_SKIP_LAYER on all other layers. In this case
we need to use the HWC_FRAMEBUFFER_TARGET layer.

BUG=23936827
TEST=verify on ryu that rotation works

Change-Id: Ice8ee5a023a92fc286dbf837a822fa6f6c0fde6b
/external/drm_hwcomposer/hwcomposer.cpp
1946fa79833304216f7d8997250f6c6a7092cae4 14-Aug-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: add properties to disable overlays or to use HWC_FRAMEBUFFER

To use SurfaceFlinger's GL compositor, use the setprop command:
$ adb shell setprop hwc.drm.use_framebuffer_target 1

A side effect of using the above property is that drm_hwcomposer will only be
compositing one primary plane.

To disable overlays (to force the GL compositor to be used more often):
$ adb shell setprop hwc.drm.use_overlay_planes 0

The default behavior is the opposite of the above properties.

Change-Id: I86afb533c10a8caa15931e8c292f52bb94e5f6c5
/external/drm_hwcomposer/hwcomposer.cpp
098070590ae648ede5f2ef846298de178ccd3637 13-Aug-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: enhance stability using various wrapper classes

This commit contains a lot of churn because it changes code to use automatic
resource lifetimes as much as possible. As more things get changed, this is
essential to maintaining stability.

In addition, this change changes how layers are passed through the compositor
API. Before each layer was passed down one at a time. Now they are passed in
all at once. This is simpler for the implementation because it makes errors
more atomic and makes decisions easier for the compositors.

Change-Id: Ic3e6b5d0089fb1631ea256adcce9910ed8f38366
/external/drm_hwcomposer/hwcomposer.cpp
c6520e488fa82accb1882381bb5540ea419a0276 13-Aug-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: style fixes

Change-Id: Id04a088a895f8372a32623713589d43d5e0495ef
/external/drm_hwcomposer/hwcomposer.cpp
459a5a9ccd014224882e5522d2957aba10413691 01-Aug-2015 Zach Reizner <zachr@google.com> Revert "Revert "drm_hwcomposer: remove compositor interface""

This reverts commit 1c5e55680d9165d8f9bb2bc6e2c4261574b5d41d.
/external/drm_hwcomposer/hwcomposer.cpp
810ecc67ae408e752325497c836cf6fdccd5ce55 01-Aug-2015 Zach Reizner <zachr@google.com> Revert "Revert "drm_hwcomposer: remove GLCompositor and the GLWorker thread""

This reverts commit d078e4cab78f81057cd25355199caba5a147342e.
/external/drm_hwcomposer/hwcomposer.cpp
d078e4cab78f81057cd25355199caba5a147342e 30-Jul-2015 Puneet Kumar <puneetster@google.com> Revert "drm_hwcomposer: remove GLCompositor and the GLWorker thread"

This reverts commit abebc7a78fe8a4df6495c8e5064719dc92b04004.

For now until we figure out a more stable solution for SF/hwc

Change-Id: I7a505fc67873f943704e8b48db4167b9beca7691
/external/drm_hwcomposer/hwcomposer.cpp
abebc7a78fe8a4df6495c8e5064719dc92b04004 22-Jul-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: remove GLCompositor and the GLWorker thread

They are dead code now that DrmDisplayCompositor uses GL directly.

Change-Id: Ie4beeab60440a51bd87486847b5453e20288d1d8
/external/drm_hwcomposer/hwcomposer.cpp
04206124b8977a49ce99f782bc121017622c06d8 16-Jul-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Populate retireFenceFd

Join all layer releaseFenceFd fences together to get the
retireFenceFd for the display.

Change-Id: I431ee227a62397b1900adb0caaf8b16b319a99cd
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
fd1382895821a40310da9a22d7e0dce5bef4373b 10-Jul-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Free failed composition in QueueComposition

Rather than maintaining ownership of the composition in the
caller, free the DrmComposition in QueueComposition on failure.

Change-Id: Id70e98ae1a8eef400bc29460bfc5a89c4707d617
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
be98c8cb94511d374238e4a02c92b545b6e5fde2 24-Jun-2015 Stéphane Marchesin <marcheu@chromium.org> drm_hwcomposer: Add tracing for the main functions

This will help the profiling efforts, now that all the low-hanging
fruit is gone.

BUG=none
TEST=run systrace, see tracing

Change-Id: I9a149afdea8b84837c19f8e224ce8a7e2db1dd9a
/external/drm_hwcomposer/hwcomposer.cpp
cb3f984b07cde381bf4847426ef3b9ed1f956524 19-Jun-2015 Stéphane Marchesin <marcheu@chromium.org> drm_hwcomposer: Switch to triple buffering

This increases the performance of the UI (30->40 fps).

BUG=none
TEST=boot to UI, swipe between desktops, measure fps

Change-Id: Ie0ff4b51c3db402a40c9676d3f09d48d85097bce
/external/drm_hwcomposer/hwcomposer.cpp
877be974a2d4fc518700be8ffe803a50cb716ead 03-Jun-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Use atomic modeset to set crtc timing

Use the new drm blob ioctl and atomic modeset properties to
do atomic modesetting, as opposed to the old setCrtc call.

This allows us to set timing as soon as the system layer requests
a new active config, as opposed to delaying it until we have
an fb. Aside from reducing complexity, this should help with
event control requests as we'll be able to service them with
hw vblanks instead of synthesized sleeps.

Change-Id: I9c80d44f52f52881a3a25b2ae518973d468bc110
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
1f4ff5aec7bec305558228adb65ba56bd0b9f366 12-Jun-2015 Zach Reizner <zachr@google.com> Merge "drm_hwcomposer: integrate GLCompositor with hwcomposer" into mnc-dev
45624d3b2fb4ab6bec6d3fde56e3e2f0c21a9d7f 11-Jun-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: integrate GLCompositor with hwcomposer

This patch makes it such that HWC will always composite all layers even if
there are too few HW planes. Any layers that do not fit in a plane get
rendered into a screen sized buffer by GLCompositor, the result of which uses
up one of the available HW planes.

Change-Id: Ibd560ae4c536632ac32d965152ceacd92bbba39f
/external/drm_hwcomposer/hwcomposer.cpp
9046c64fcb9a504a04dbaa32718b2fb0503c843b 10-Jun-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Add Dump() to the Compositor interface

Add a Dump() function to the Compositor base class and pipe it
through hwcomposer. This can be invoked from the shell by
running "dumpsys SurfaceFlinger".

Change-Id: I87646f4e926ac6d52a04ba130957abdfab99c491
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
4057be36a805d90b622a86c0073f4e275d3837ed 13-May-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Move event worker into VSyncWorker

Using the new Worker interface, split out the event worker
now that it just handles vsyncs.

Change-Id: I7ebc6237b10411fdba3b8826935921b8c83c4b6c
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
b386f1b1b3716c06831d82493e9ba5a156094701 13-May-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Use hw planes + drm atomic interface

Replace the basic, single overlay, modeset/flip implementation with
a new Compositor instantiation for drm. The new compositor uses the
drm atomic interface to composite layers to multiple hardware planes.

This change also introduces an importer argument in
Compositor::CreateComposition. By specifying the importer, Compositor
instances are responsible for cleaning up buffer objects submitted
via Composition::AddLayer.

Change-Id: Ic292829cd93475d754294b00428de132301092b2
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
da6270d4882eb0463717405bcadab3ac8fe902ea 01-Jun-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Wrap the importers in a class

This will allow us to move the importer functionality into the
drmcompositor.

Change-Id: I4274ebd1776c4d7879342c54a2b7c4095ebc50f4
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
c002794bc04a1e6b64070d33754a49022a30aadb 13-May-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Set requires_modeset() to false after modeset

Reset requires_modeset on a crtc once the initial modeset is
completed. Without this, we'll just do modesets instead of flips.

Change-Id: I998914c914ccb97346ed194a993c703f387bf93b
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
e42febfa7feedb74ec239413820008bb38804505 07-May-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Store displays in std::map

Instead of a fixed length array, use a std::map for
displays.

Change-Id: I77a4893f3051d6af4030e3208d096b5796796c84
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
5ad302cef21fe8080bf3fa5a544945a23f9b7b84 11-May-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Fix up #include ordering

Change-Id: I9d808389c60b9d77c8e03a09aeaf3f309353cde8
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
e41702f3ad11f2c1ce63b87850b8f4b8fd1d89f6 11-May-2015 Sean Paul <seanpaul@google.com> Merge "drm_hwcomposer: Wrap libdrm ops (minus modeset/flip) in C++ classes" into mnc-dev
6a55e9fb8e16c63c2e42bde31814f963205f722d 30-Apr-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Wrap libdrm ops (minus modeset/flip) in C++ classes

This allows us to compartmentalize a bunch of code/logic from
hwcomposer.cpp into drm classes.

Signed-off-by: Sean Paul <seanpaul@chromium.org>

Change-Id: Id3f912126f1fdcd44d32c3eb4fba646f77590278
/external/drm_hwcomposer/hwcomposer.cpp
c5255b33e252af6d38c871576ce2778663717457 08-May-2015 Dan Albert <danalbert@google.com> Add missing include for calloc/free.

Bug: http://b/15193147
Change-Id: Ibb2fb6fef4ca6a23eb2f53111c4b01847fe468b2
/external/drm_hwcomposer/hwcomposer.cpp
ef8f1f9905dbd1f49735f6df47f3128ecbc71c1e 29-Apr-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Update style to conform with Google Style Guide

Change-Id: I9b1a7dbcb9b8c6b0a6eb3c6416b5e4898a5097d8
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
814bddbc4b7867da6801e60b27e1fd8040feac5d 03-Mar-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Introduce a new event worker to handle vblanks/flips

Instead of having a dedicated vsync worker for each display, factor out
the drm fd wait from the set workers into a global event worker. This
worker will dispatch vsync() callbacks to SurfaceFlinger, as well as
unblock the appropriate set worker when flips complete.

Change-Id: I169132b2a93a2c9feabcab116aab4e61861166e1
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
77d6d7a907dc23a1de7c5544fc0db79bf462ff6f 23-Feb-2015 Lauri Peltonen <lpeltonen@nvidia.com> drm_hwcomposer: Cache FB and gem in gralloc buffer

Move drm fb object creation to the importer.

In NV importer, use GRALLOC_MODULE_PERFORM_SET_IMPORTER_PRIVATE
and GRALLOC_MODULE_PERFORM_GET_IMPORTER_PRIVATE to cache the hwc_drm_bo
in the gralloc buffer. This avoids the need to recreate fb objects
again each frame, and also greatly simplifies managing the lifetime of
the gem handles.

The drm_gralloc importer does not support caching at this point. In an
attempt to keep it somewhat working, add hwc_import_bo_release function
that hwc calls when it's ok to rm fb. If hwc_import_bo_release returns
true, then hwc will clean up gem handles as it did before.

We should consider doing a follow-up patch that adds fb/gem caching to
drm_gralloc importer also. Then some of the code that is kept in this
patch for backwards compatibility can be removed.

Change-Id: I92857dcaddf8cea219ebc041e16ef76087a1b696
Reviewed-on: https://chrome-internal-review.googlesource.com/200895
Reviewed-by: Stéphane Marchesin <marcheu@google.com>
Commit-Queue: Stéphane Marchesin <marcheu@google.com>
Tested-by: Stéphane Marchesin <marcheu@google.com>
/external/drm_hwcomposer/hwcomposer.cpp
e147a2a71f7c7f0b3cc925199fe68951cb311379 22-Feb-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Initialize timeline_next to 1

Initialize timeline_next to 1, because point 0 will be the very first
set operation. Since we increment every time set() is called,
initializing to 0 would cause an off-by-one error where
surfaceflinger would always composite on the front buffer.

Change-Id: I1e67c36864716595eb489286a7db3f1dcb04f67e
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chrome-internal-review.googlesource.com/200735
Tested-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Allen Martin <amartin@nvidia.com>
Reviewed-by: Sean Paul <seanpaul@google.com>
/external/drm_hwcomposer/hwcomposer.cpp
a99534ab0ddf258a46b7a680a6bc56b128c6ae48 22-Feb-2015 Allen Martin <amartin@nvidia.com> drm_hwcomposer: initialize timeline_next

Initialize timeline_next to 0

Change-Id: I5d9f051ac659b06be19f5e5eaaab8a665f10832c
Reviewed-on: https://chrome-internal-review.googlesource.com/200646
Reviewed-by: Sean Paul <seanpaul@google.com>
Commit-Queue: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
/external/drm_hwcomposer/hwcomposer.cpp
91fa3f84806a6de5ad26da95ecf883b664562407 22-Feb-2015 Allen Martin <amartin@nvidia.com> drm_hwcomposer: move AddFb/RmFb to reference gem handles

Move drmModeAddFB2 and drmModeRmFB to ensure a reference to the gem
handles are taken while the buffer is in use.

Change-Id: Ib9afdb91144850480ecaac9d73601d887af5fa12
Reviewed-on: https://chrome-internal-review.googlesource.com/200686
Reviewed-by: Stéphane Marchesin <marcheu@google.com>
Commit-Queue: Stéphane Marchesin <marcheu@google.com>
Tested-by: Stéphane Marchesin <marcheu@google.com>
/external/drm_hwcomposer/hwcomposer.cpp
f4e49b8d453e6de7f81a6a029487210fe785979c 22-Feb-2015 Allen Martin <amartin@nvidia.com> drm_hwcomposer: Check against gem handles for popped buffer

Add check before closing gem handle for most recently popped buffer in
addition to buffers in queue.

Change-Id: Icb096bd4db439b1195a123e28468142829fc61ea
Reviewed-on: https://chrome-internal-review.googlesource.com/200725
Reviewed-by: Stéphane Marchesin <marcheu@google.com>
Commit-Queue: Stéphane Marchesin <marcheu@google.com>
Tested-by: Stéphane Marchesin <marcheu@google.com>
/external/drm_hwcomposer/hwcomposer.cpp
3d3f70acc0d4934743271e0571a7c9a132da4a10 22-Feb-2015 Allen Martin <amartin@nvidia.com> drm_hwcomposer: Do not close gem handle if queued

Fix an issue where if the same gem handle was queued twice we would
close the handle when the first one came out of the queue, leading to
a failure when calling drmModeAddFB2() on the second buffer.

Change-Id: I0bd35158215f74b51111d2e259bca3ba5125b203
Reviewed-on: https://chrome-internal-review.googlesource.com/200715
Tested-by: Allen Martin <amartin@nvidia.com>
Reviewed-by: Stéphane Marchesin <marcheu@google.com>
/external/drm_hwcomposer/hwcomposer.cpp
64717b22fe9c1203f7feb607ce3e4cecc0818bb7 04-Feb-2015 Lauri Peltonen <lpeltonen@nvidia.com> drm_hwcomposer: Support other drm nodes than card0

On dragon, card0 = Nouveau, card1 = TegraDRM.

Change-Id: Ie69639e40162ceb4ab99025dd9406ae44b7204c8
Reviewed-on: https://chrome-internal-review.googlesource.com/196021
Reviewed-by: Stéphane Marchesin <marcheu@google.com>
Commit-Queue: Stéphane Marchesin <marcheu@google.com>
Tested-by: Stéphane Marchesin <marcheu@google.com>
/external/drm_hwcomposer/hwcomposer.cpp
132e010f2394379b6e077a8dcb4d6f1e9204946e 12-Feb-2015 Lauri Peltonen <lpeltonen@nvidia.com> drm_hwcomposer: Fix fence leak

Hwcomposer is responsible for closing the acquire fences passed
in during hwc_set. Make sure that it does so, even if there is
an error condition.

Change-Id: I5c9096804c2613ec317c306dd361cb5f1a2ba5b2
Signed-off-by: Lauri Peltonen <lpeltonen@nvidia.com>
Reviewed-on: https://chrome-internal-review.googlesource.com/198356
Tested-by: Stéphane Marchesin <marcheu@google.com>
Commit-Queue: Stéphane Marchesin <marcheu@google.com>
Reviewed-by: Stéphane Marchesin <marcheu@google.com>
/external/drm_hwcomposer/hwcomposer.cpp
7c34cf640fb6810d56e735e7cef8c348e1406e8f 10-Feb-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Remove drmSetMaster call

Now that gralloc is using a render node, we can remove
this call. This allows us to run as a non-root user as
well.

Change-Id: I46c9c16c7a9a169378e567d4973172f8392d441b
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
aea15c2c769965c67cb18272d3f87dc3be2392b4 09-Feb-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Use prime to import gem handles

Change-Id: Id5d5f9a61f092f33130fed4d8b8d00fcaf401dea
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/hwcomposer.cpp
24a26e3e5f975c6552e30a946792821ba69b654e 04-Feb-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Set display config on initialization

We shouldn't wait for surfaceflinger to set active config, initialize
the display with a config. For now we just choose the first config in
the list. This should change to a more sane choice, such as the preferred
mode or something similar.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: Ib063080c282cec28c9b0218c0ba5151d48b367ce
/external/drm_hwcomposer/hwcomposer.cpp
dffca95b7b29cbaf3a7ca2dcdc077b283d8004b1 04-Feb-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Ignore NULL display_contents

surfaceflinger will send in NULL display_contents in prepare/set,
make sure we don't blow up.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: Ia5085d4bd5e5928b52d81d14d027d0a162995946
/external/drm_hwcomposer/hwcomposer.cpp
a4283c5cc8b86227f998ee7827e6c5d3cfbdfa67 04-Feb-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Don't try to get configs for a disconnected connector

Short circuit getting the configs for connectors which are disconnected.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: Ieabbf08f4d4a6c8b03f948399113e3ad04a2d93a
/external/drm_hwcomposer/hwcomposer.cpp
fa406a10d4db9f58c822e20c60ea902aa2d56ccc 04-Feb-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Store active mode instead of config index

Since the config indices can change out from under us, store the
actual mode instead of an index. This avoids having to
reset active_config when we get a new list from the driver.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I09a1ffbdde16c44ccc8a1d2865f09a5da22c2e26
/external/drm_hwcomposer/hwcomposer.cpp
efb20cb773314e53a185d80454906243d7b9fb70 04-Feb-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Always perform a setcrtc initially

Always do a setcrtc on the first set(), this ensures things
are set up the way we expect them to be.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I4279d4de64339e72f0e7f9b315b2b9695704c78c
/external/drm_hwcomposer/hwcomposer.cpp
eb9e75c1bf7f7118d4877103c17523a7efdffda5 26-Jan-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Implement eventControl with vsync worker

Adds a new worker to handle events requested by eventControl.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I6d63bb43b5f112e2efb0c426e7fd59910fc98953
/external/drm_hwcomposer/hwcomposer.cpp
f1dc19141903d9c71f392eccdca568b80568f17b 24-Jan-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Implement release and retire fences using sw_sync

Once drm supports passing sync through, we'll move onto that.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I78bd5d380212b4aaec4b41dcba6cc882f1e5cc20
/external/drm_hwcomposer/hwcomposer.cpp
3bc48e852d7c0f6770d9cd43fa865593e4f2d5ab 23-Jan-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Reduce time spent in display_lock

This reduces the amount of time set will block on the
worker.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: If5d110ce78e98642265ffa7dcc25710bc227330b
/external/drm_hwcomposer/hwcomposer.cpp
9b1bb8466ebdfa9a3064523b4ec75ba396423b68 23-Jan-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Use queue buffer for pending sets

Instead of just using a front and back buffer, use a queue buffer
to allow more than one pending set.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I451acbcb08fac5191b76ec2e372fe612d227167c
/external/drm_hwcomposer/hwcomposer.cpp
cd36a9e3864aaba47ba22af36fad97fe6c782637 23-Jan-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Split gralloc out into an importer

Add the concept of an importer so we can plug in different
sources of bo.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I4f741ef4fa7c44e9cb31db61a146aed273854a69
/external/drm_hwcomposer/hwcomposer.cpp
9aa5ad3e2e25610c86ffc0714302b5905fbb8451 22-Jan-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Add a new set thread to post bo's

Adds a new set thread to wait on acquire fence, flip the bo,
and wait for it to be presented on screen.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: Ia931a7cbe287f4c744068fc80e476f81880bf608
/external/drm_hwcomposer/hwcomposer.cpp
e0c4c3d719ba0758fc0e1369de71b34f9442407b 20-Jan-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Initial implementation

This adds a very basic hwcomposer implementation on top of
libdrm.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I472feb9bc08a4c4cd9849370c849d266ea58da9c
/external/drm_hwcomposer/hwcomposer.cpp