OSDN Git Service

drm_hwcomposer: ground work for squashing
authorZach Reizner <zachr@google.com>
Tue, 13 Oct 2015 00:47:13 +0000 (17:47 -0700)
committerZach Reizner <zachr@google.com>
Thu, 15 Oct 2015 17:45:17 +0000 (10:45 -0700)
commit92f8e6399c0829c6ba6db77d5ea1bbd22f510bb1
tree7252d6be74505a58bf8e7f3a191bbc5a70921124
parent0436173f2e3ba646078baf33208fa3ea54113bde
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
drmcomposition.cpp
drmcomposition.h
drmcompositor.cpp
drmdisplaycomposition.cpp
drmdisplaycomposition.h
drmdisplaycompositor.cpp
drmdisplaycompositor.h
glworker.cpp
glworker.h