Add gem5 display finder mode to hwc3

Change-Id: I33d63607f11cdb072c970838893903bfc780ff08
diff --git a/system/hwc3/Common.cpp b/system/hwc3/Common.cpp
index 9de1c82..edbe93c 100644
--- a/system/hwc3/Common.cpp
+++ b/system/hwc3/Common.cpp
@@ -36,6 +36,7 @@
              std::string::npos;
 }
 
+
 bool IsInNoOpCompositionMode() {
   const std::string mode = ::android::base::GetProperty("ro.vendor.hwcomposer.mode", "");
   DEBUG_LOG("%s: sysprop ro.vendor.hwcomposer.mode is %s", __FUNCTION__, mode.c_str());
@@ -48,6 +49,14 @@
   return mode == "client";
 }
 
+bool IsInGem5DisplayFinderMode() {
+  const std::string mode =
+    ::android::base::GetProperty("ro.vendor.hwcomposer.display_finder_mode", "");
+  DEBUG_LOG("%s: sysprop ro.vendor.hwcomposer.display_finder_mode is %s",
+            __FUNCTION__, mode.c_str());
+  return mode == "gem5";
+}
+
 bool IsInNoOpDisplayFinderMode() {
   const std::string mode =
     ::android::base::GetProperty("ro.vendor.hwcomposer.display_finder_mode", "");
diff --git a/system/hwc3/Common.h b/system/hwc3/Common.h
index eca9b7a..bca365b 100644
--- a/system/hwc3/Common.h
+++ b/system/hwc3/Common.h
@@ -49,6 +49,7 @@
 bool IsInNoOpCompositionMode();
 bool IsInClientCompositionMode();
 
+bool IsInGem5DisplayFinderMode();
 bool IsInNoOpDisplayFinderMode();
 bool IsInDrmDisplayFinderMode();
 
diff --git a/system/hwc3/DisplayFinder.cpp b/system/hwc3/DisplayFinder.cpp
index 1b45d0a..1bbb56c 100644
--- a/system/hwc3/DisplayFinder.cpp
+++ b/system/hwc3/DisplayFinder.cpp
@@ -248,7 +248,7 @@
 HWC3::Error findDisplays(const DrmClient* drm,
                          std::vector<DisplayMultiConfigs>* outDisplays) {
   HWC3::Error error = HWC3::Error::None;
-  if (IsInNoOpCompositionMode()) {
+  if (IsInGem5DisplayFinderMode() || IsInNoOpCompositionMode()) {
     error = findNoOpDisplays(outDisplays);
   } else if (IsInDrmDisplayFinderMode()) {
     if (drm == nullptr) {