History log of /external/drm_hwcomposer/drmcomposition.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
aa18d918e24d63b650791fe021f41761d8a33d3b 12-May-2016 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Use Planner interface to provision planes

Use the new Planner interface to handle the layer->plane mapping.
This allows us to simplify the Plan() function by offloading the
plane provisioning to the platform specific code.

BUG=b/28117135
TEST=Tested on ryu with a variety of window layouts/workloads

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Change-Id: I75a0c5d87a9096e7a83ecbc848c75fee42ee1131
/external/drm_hwcomposer/drmcomposition.h
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/drmcomposition.h
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/drmcomposition.h
5757e82631820372382d3369c54cc3a1ffef812f 17-Oct-2015 Zach Reizner <zachr@google.com> drm_hwcomposer: implement squashing

Change-Id: Ifd4feaa0de303ddfd519d4415ab31d2a72f26022
/external/drm_hwcomposer/drmcomposition.h
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/drmcomposition.h
573554106db499d323bea12ff00363b1816f8c8a 19-Sep-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Process modesets via compositor

This patch queues modeset in the compositor for application on
the next frame. This allows us to perform the modeset atomically
with the first frame that comes in after the mode is changed.

Change-Id: I6bb9edd17bbdd6dbee5c0474f2e43599781cc7a7
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/drmcomposition.h
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/drmcomposition.h
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/drmcomposition.h
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/drmcomposition.h
459a5a9ccd014224882e5522d2957aba10413691 01-Aug-2015 Zach Reizner <zachr@google.com> Revert "Revert "drm_hwcomposer: remove compositor interface""

This reverts commit 1c5e55680d9165d8f9bb2bc6e2c4261574b5d41d.
/external/drm_hwcomposer/drmcomposition.h
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/drmcomposition.h
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/drmcomposition.h
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/drmcomposition.h
9099aa5e280c094154fd312f415336c1aabb4b8e 09-Jul-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Use vector for overlay planes

For two reasons:
1- Because we don't need to use deque
2- Because we'll need to erase from the middle in the future,
and deque makes that difficult while iterating

BUG=chrome-os-parter:42311
TEST=Tested on smaug, turned on/off bunch of times, no dup icons

Change-Id: I306bdea15d7165f63afeb3b1e06774e2e9a1785f
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/drmcomposition.h
db7a17d28ca48f81be3091e99564e47fa0503e9e 25-Jun-2015 Sean Paul <seanpaul@chromium.org> drm_hwcomposer: Process DPMS requests through compositor

This patch changes the behavior of DPMS in hwcomposer from
applying asynchronously/immediately, to queuing in the
compositor and being processed in order. This is desirable
for a couple of reasons:
1- It ensures all frames set before set_power_mode are
shown on the screen before it turns off
2- We make sure we don't rmfb a framebuffer that is
currently applied to a disabled crtc.

The second reason above can cause the display to turn back
off once it's on since the fb will dereference to zero in
the kernel and it will disable the pipe without notifying
us.

Change-Id: I2aab9ee0353b12fecced46766ed2dbb64f0aef4b
Signed-off-by: Sean Paul <seanpaul@chromium.org>
/external/drm_hwcomposer/drmcomposition.h
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/drmcomposition.h
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/drmcomposition.h