DO NOT MERGE - Skip qt-dev-plus-aosp-without-vendor (5713463) in stage-aosp-master

Bug: 134405016
Change-Id: I1ab329a1adc5402180ae5b97bf0ad49c05d24e3b
diff --git a/drm/drmconnector.cpp b/drm/drmconnector.cpp
index ead9312..543827d 100644
--- a/drm/drmconnector.cpp
+++ b/drm/drmconnector.cpp
@@ -89,7 +89,8 @@
 
 bool DrmConnector::internal() const {
   return type_ == DRM_MODE_CONNECTOR_LVDS || type_ == DRM_MODE_CONNECTOR_eDP ||
-         type_ == DRM_MODE_CONNECTOR_DSI || type_ == DRM_MODE_CONNECTOR_VIRTUAL;
+         type_ == DRM_MODE_CONNECTOR_DSI ||
+         type_ == DRM_MODE_CONNECTOR_VIRTUAL || type_ == DRM_MODE_CONNECTOR_DPI;
 }
 
 bool DrmConnector::external() const {
diff --git a/platform/platformdrmgeneric.cpp b/platform/platformdrmgeneric.cpp
index 2fcbe40..9ac601f 100644
--- a/platform/platformdrmgeneric.cpp
+++ b/platform/platformdrmgeneric.cpp
@@ -24,6 +24,7 @@
 #include <xf86drm.h>
 #include <xf86drmMode.h>
 
+#include <cutils/properties.h>
 #include <gralloc_handle.h>
 #include <hardware/gralloc.h>
 #include <log/log.h>
@@ -47,7 +48,8 @@
 }
 #endif
 
-DrmGenericImporter::DrmGenericImporter(DrmDevice *drm) : drm_(drm) {
+DrmGenericImporter::DrmGenericImporter(DrmDevice *drm)
+    : drm_(drm), exclude_non_hwfb_(false) {
 }
 
 DrmGenericImporter::~DrmGenericImporter() {
@@ -64,6 +66,10 @@
   ALOGI("Using %s gralloc module: %s\n", gralloc_->common.name,
         gralloc_->common.author);
 
+  char exclude_non_hwfb_prop[PROPERTY_VALUE_MAX];
+  property_get("hwc.drm.exclude_non_hwfb_imports", exclude_non_hwfb_prop, "0");
+  exclude_non_hwfb_ = static_cast<bool>(strncmp(exclude_non_hwfb_prop, "0", 1));
+
   return 0;
 }
 
@@ -168,6 +174,12 @@
 bool DrmGenericImporter::CanImportBuffer(buffer_handle_t handle) {
   if (handle == NULL)
     return false;
+
+  if (exclude_non_hwfb_) {
+    gralloc_handle_t *hnd = gralloc_handle(handle);
+    return hnd->usage & GRALLOC_USAGE_HW_FB;
+  }
+
   return true;
 }
 
diff --git a/platform/platformdrmgeneric.h b/platform/platformdrmgeneric.h
index c6d2be6..88bff5f 100644
--- a/platform/platformdrmgeneric.h
+++ b/platform/platformdrmgeneric.h
@@ -43,6 +43,7 @@
 
  private:
   const gralloc_module_t *gralloc_;
+  bool exclude_non_hwfb_;
 };
 }  // namespace android