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>
diff --git a/drmdisplaycomposition.h b/drmdisplaycomposition.h
index 06784f1..57e8521 100644
--- a/drmdisplaycomposition.h
+++ b/drmdisplaycomposition.h
@@ -35,6 +35,7 @@
DRM_COMPOSITION_TYPE_EMPTY,
DRM_COMPOSITION_TYPE_FRAME,
DRM_COMPOSITION_TYPE_DPMS,
+ DRM_COMPOSITION_TYPE_MODESET,
};
struct DrmCompositionLayer {
@@ -79,6 +80,7 @@
std::vector<DrmPlane *> *overlay_planes);
int AddPlaneDisable(DrmPlane *plane);
int SetDpmsMode(uint32_t dpms_mode);
+ int SetDisplayMode(const DrmMode &display_mode);
void RemoveNoPlaneLayers();
int SignalPreCompositionDone();
@@ -87,6 +89,7 @@
std::vector<DrmCompositionLayer> *GetCompositionLayers();
int pre_composition_layer_index() const;
uint32_t dpms_mode() const;
+ const DrmMode &display_mode() const;
uint64_t frame_no() const;
@@ -116,6 +119,7 @@
std::vector<DrmCompositionLayer> layers_;
int pre_composition_layer_index_;
uint32_t dpms_mode_;
+ DrmMode display_mode_;
uint64_t frame_no_;
};