composer: populate doze mode if the panel supports command mode
Change-Id: I09956d011674410ce03cfeba31ca58e727ac12ea
diff --git a/sdm/libs/hwc2/hwc_display.h b/sdm/libs/hwc2/hwc_display.h
index c1d464a..5c6bce9 100644
--- a/sdm/libs/hwc2/hwc_display.h
+++ b/sdm/libs/hwc2/hwc_display.h
@@ -204,6 +204,10 @@
return false;
}
+ virtual bool HasSmartPanelConfig(void) {
+ return false;
+ }
+
// Display Configurations
static uint32_t GetThrottlingRefreshRate() { return HWCDisplay::throttling_refresh_rate_; }
static void SetThrottlingRefreshRate(uint32_t newRefreshRate)
diff --git a/sdm/libs/hwc2/hwc_display_builtin.cpp b/sdm/libs/hwc2/hwc_display_builtin.cpp
index e25e40c..e1543b9 100644
--- a/sdm/libs/hwc2/hwc_display_builtin.cpp
+++ b/sdm/libs/hwc2/hwc_display_builtin.cpp
@@ -1045,4 +1045,14 @@
return false;
}
+bool HWCDisplayBuiltIn::HasSmartPanelConfig(void) {
+ for (auto &config : variable_config_map_) {
+ if (config.second.smart_panel) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
} // namespace sdm
diff --git a/sdm/libs/hwc2/hwc_display_builtin.h b/sdm/libs/hwc2/hwc_display_builtin.h
index 5c75dc7..d3b0661 100644
--- a/sdm/libs/hwc2/hwc_display_builtin.h
+++ b/sdm/libs/hwc2/hwc_display_builtin.h
@@ -100,6 +100,7 @@
virtual HWC2::Error UpdatePowerMode(HWC2::PowerMode mode);
virtual HWC2::Error PostCommitLayerStack(int32_t *out_retire_fence);
virtual bool IsSmartPanelConfig(uint32_t config_id);
+ virtual bool HasSmartPanelConfig(void);
virtual HWC2::Error SetPowerMode(HWC2::PowerMode mode, bool teardown);
private:
diff --git a/sdm/libs/hwc2/hwc_session.cpp b/sdm/libs/hwc2/hwc_session.cpp
index 45bce77..8a51ea7 100644
--- a/sdm/libs/hwc2/hwc_session.cpp
+++ b/sdm/libs/hwc2/hwc_session.cpp
@@ -1142,9 +1142,18 @@
}
*out_support = 0;
- uint32_t config = 0;
- hwc_session->GetActiveConfigIndex(INT(display), &config);
- *out_support = hwc_session->isSmartPanelConfig(UINT32(display), config) ? 1 : 0;
+
+ if (display != qdutils::DISPLAY_PRIMARY) {
+ return HWC2_ERROR_NONE;
+ }
+
+ SCOPE_LOCK(locker_[display]);
+ if (!hwc_session->hwc_display_[display]) {
+ DLOGE("Display %d is not created yet.", INT32(display));
+ return HWC2_ERROR_NONE;
+ }
+
+ *out_support = hwc_session->hwc_display_[display]->HasSmartPanelConfig() ? 1 : 0;
return HWC2_ERROR_NONE;
}