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
|