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>
diff --git a/drmresources.h b/drmresources.h
index f329bd9..1261956 100644
--- a/drmresources.h
+++ b/drmresources.h
@@ -17,6 +17,7 @@
#ifndef ANDROID_DRM_H_
#define ANDROID_DRM_H_
+#include "drmcompositor.h"
#include "drmconnector.h"
#include "drmcrtc.h"
#include "drmencoder.h"
@@ -46,6 +47,7 @@
DrmConnector *GetConnectorForDisplay(int display) const;
DrmCrtc *GetCrtcForDisplay(int display) const;
DrmPlane *GetPlane(uint32_t id) const;
+ DrmCompositor *compositor();
int GetPlaneProperty(const DrmPlane &plane, const char *prop_name,
DrmProperty *property);
@@ -68,6 +70,7 @@
std::vector<DrmEncoder *> encoders_;
std::vector<DrmCrtc *> crtcs_;
std::vector<DrmPlane *> planes_;
+ DrmCompositor compositor_;
};
}