92f8e6399c0829c6ba6db77d5ea1bbd22f510bb1 |
|
13-Oct-2015 |
Zach Reizner <zachr@google.com> |
drm_hwcomposer: ground work for squashing This patch rearranges things to make squashing possible. The high-level changes: - A new Plan phase that happens in QueueComposition. This is where the overlay allocation is moved to. It's also the only safe time that the composition can try to plan squashing. This is because squashing depends on the exact ordering of compositions. - GLWorker now renders regions rather than layers. A region in this case is a clipping rectange and set of layers that are to be rendered in that rectangle. This is always what GLWorker did in the end, but now the work to seperate layers into regions is done externally. This was changed because the output of SquashState is a list of stable regions that need to be put through GLWorker The Plan methods of the Compositions are responsible for updating per-display SquashState and for allocation regions/layers to squashing, pre-composition, or hardware overlay. Because of the drastic changes to how composition planning works, it was necessary to bundle it with the GLWorker change. This change also includes plenty of other refactorings that were deemed to be too painful to try and seperate into another change. Change-Id: Ie7bfe077067e936a0862a07cbe87b525eab8d4f8
/external/drm_hwcomposer/drmcompositor.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/drmcompositor.cpp
|
bdc67bffcffaa838836b1111f6dcf07cba5ff134 |
|
21-Sep-2015 |
Sean Paul <seanpaul@chromium.org> |
drm_hwcomposer: Plumb frame number through display composition Having frame number in the composition is very useful for debugging transient issues, plumb it through the drm compositor stack. Change-Id: Ibc7555c89bea79c580b3201b11db4ced6360efb9 Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/drmcompositor.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/drmcompositor.cpp
|
459a5a9ccd014224882e5522d2957aba10413691 |
|
01-Aug-2015 |
Zach Reizner <zachr@google.com> |
Revert "Revert "drm_hwcomposer: remove compositor interface"" This reverts commit 1c5e55680d9165d8f9bb2bc6e2c4261574b5d41d.
/external/drm_hwcomposer/drmcompositor.cpp
|
1c5e55680d9165d8f9bb2bc6e2c4261574b5d41d |
|
30-Jul-2015 |
Puneet Kumar <puneetster@google.com> |
Revert "drm_hwcomposer: remove compositor interface" This reverts commit 7912438911de042dc035cf1ea39daaf4e56bf9f3. For now until we can get back to a stable SF/compositor. Change-Id: I2ba7cab4f1cccfe44b3d35fb18c7784125e88fd6
/external/drm_hwcomposer/drmcompositor.cpp
|
7912438911de042dc035cf1ea39daaf4e56bf9f3 |
|
23-Jul-2015 |
Zach Reizner <zachr@google.com> |
drm_hwcomposer: remove compositor interface The compositor interface had only one implementation and one user. The compositor interface also needs to change to accomodate some changes for fences to work optimally. Change-Id: I02d21b0a0e86fa21b3c5f4ad84ff571611643994
/external/drm_hwcomposer/drmcompositor.cpp
|
2e46fbd90b1aae158ec0437f564dd610e7392f7a |
|
09-Jul-2015 |
Sean Paul <seanpaul@chromium.org> |
drm_hwcomposer: Disable unused planes Right before queuing up a composition, go through the list of unused planes and add disable markers such that they don't remain active when the new frame is posted. BUG=chrome-os-parter:42311 TEST=Tested on smaug, turned on/off bunch of times, no dup icons Change-Id: Ic2e5e210873efb6dc41fd43682fe00db33c2a28e Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/drmcompositor.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/drmcompositor.cpp
|
98e73c89a683a92f44c99fb8dc85e51bdda243ba |
|
24-Jun-2015 |
Sean Paul <seanpaul@chromium.org> |
drm_hwcomposer: Split the drm compositor into per-display threads This patch splits out the current single drm compositor with per-display compositors, each with their own thread. The per-display compositors are hidden behind a singleton drm compositor. This allows us to maintain a whole-world view of all displays involved in a frame. This becomes useful if we start switching up crtcs/encoders for the displays. This also allows us to issue one DrmComposition when the frame is being assembled. The single DrmComposition handles the plane allocation (since they might switch between displays), and contains per-display compositions which are used to store the layer->plane/crtc information for each frame. The display compositors use the per-display compositions to display the frame on their output. Each display compositor receives a shared pointer to the frame's DrmComposition on QueueComposition. As a result, both the composition, and the per-display compositions, live for as long as any one display is still using it. While this is sub-optimal (since a display might never update again), this is probably fine for now. Finally, splitting things up per-display will allow us to inject non-compositing jobs into the composite queue. An example would be turning the display off, or setting the mode. This ensures that all frames in the composite queue are displayed before the mode changes or the display is disabled. Signed-off-by: Sean Paul <seanpaul@chromium.org> Change-Id: I8a233ea64710b238f70acbcde1f6d771e297b069
/external/drm_hwcomposer/drmcompositor.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/drmcompositor.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/drmcompositor.cpp
|
c8dcfe0ccf170ab7cef45d5ddec288fffd39b397 |
|
10-Jun-2015 |
Sean Paul <seanpaul@chromium.org> |
drm_hwcomposer: Implement Dump() for DrmCompositor Output simple fps information from the DrmCompositor on Dump(). Change-Id: Ic1f4f922fa2cd15e1fc7c6fdb412baa33611676f Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/drmcompositor.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/drmcompositor.cpp
|