drm_hwcomposer: add properties to disable overlays or to use HWC_FRAMEBUFFER
To use SurfaceFlinger's GL compositor, use the setprop command:
$ adb shell setprop hwc.drm.use_framebuffer_target 1
A side effect of using the above property is that drm_hwcomposer will only be
compositing one primary plane.
To disable overlays (to force the GL compositor to be used more often):
$ adb shell setprop hwc.drm.use_overlay_planes 0
The default behavior is the opposite of the above properties.
Change-Id: I86afb533c10a8caa15931e8c292f52bb94e5f6c5
diff --git a/drmcomposition.cpp b/drmcomposition.cpp
index 0c0f394..fad131d 100644
--- a/drmcomposition.cpp
+++ b/drmcomposition.cpp
@@ -24,20 +24,23 @@
#include <stdlib.h>
#include <cutils/log.h>
+#include <cutils/properties.h>
#include <sw_sync.h>
#include <sync/sync.h>
namespace android {
-static const bool kUseOverlayPlanes = true;
-
DrmComposition::DrmComposition(DrmResources *drm, Importer *importer)
: drm_(drm), importer_(importer) {
+ char use_overlay_planes_prop[PROPERTY_VALUE_MAX];
+ property_get("hwc.drm.use_overlay_planes", use_overlay_planes_prop, "1");
+ bool use_overlay_planes = atoi(use_overlay_planes_prop);
+
for (DrmResources::PlaneIter iter = drm_->begin_planes();
iter != drm_->end_planes(); ++iter) {
if ((*iter)->type() == DRM_PLANE_TYPE_PRIMARY)
primary_planes_.push_back(*iter);
- else if (kUseOverlayPlanes && (*iter)->type() == DRM_PLANE_TYPE_OVERLAY)
+ else if (use_overlay_planes && (*iter)->type() == DRM_PLANE_TYPE_OVERLAY)
overlay_planes_.push_back(*iter);
}
}