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.cpp b/drmresources.cpp
index 3da0f04..3429abc 100644
--- a/drmresources.cpp
+++ b/drmresources.cpp
@@ -33,7 +33,7 @@
namespace android {
-DrmResources::DrmResources() : fd_(-1), mode_id_(0) {
+DrmResources::DrmResources() : fd_(-1), mode_id_(0), compositor_(this) {
}
DrmResources::~DrmResources() {
@@ -235,7 +235,7 @@
if (ret)
return ret;
- return 0;
+ return compositor_.Init();
}
int DrmResources::fd() const {
@@ -383,6 +383,10 @@
return 0;
}
+DrmCompositor *DrmResources::compositor() {
+ return &compositor_;
+}
+
int DrmResources::GetProperty(uint32_t obj_id, uint32_t obj_type,
const char *prop_name, DrmProperty *property) {
drmModeObjectPropertiesPtr props;