diff --git a/composer/hwc_display.h b/composer/hwc_display.h
index ccece96..c082578 100644
--- a/composer/hwc_display.h
+++ b/composer/hwc_display.h
@@ -229,6 +229,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/composer/hwc_display_builtin.cpp b/composer/hwc_display_builtin.cpp
index b132572..0fc1cf0 100644
--- a/composer/hwc_display_builtin.cpp
+++ b/composer/hwc_display_builtin.cpp
@@ -1264,6 +1264,16 @@
   return false;
 }
 
+bool HWCDisplayBuiltIn::HasSmartPanelConfig(void) {
+  for (auto &config : variable_config_map_) {
+    if (config.second.smart_panel) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
 int HWCDisplayBuiltIn::Deinit() {
   // Destory color convert instance. This destroys thread and underlying GL resources.
   if (gl_layer_stitch_) {
diff --git a/composer/hwc_display_builtin.h b/composer/hwc_display_builtin.h
index fb7e918..3eff942 100644
--- a/composer/hwc_display_builtin.h
+++ b/composer/hwc_display_builtin.h
@@ -131,6 +131,7 @@
   virtual HWC2::Error SetClientTarget(buffer_handle_t target, shared_ptr<Fence> acquire_fence,
                                       int32_t dataspace, hwc_region_t damage);
   virtual bool IsSmartPanelConfig(uint32_t config_id);
+  virtual bool HasSmartPanelConfig(void);
   virtual int Deinit();
   virtual bool IsQsyncCallbackNeeded(bool *qsync_enabled, int32_t *refresh_rate,
                                      int32_t *qsync_refresh_rate);
diff --git a/composer/hwc_session.cpp b/composer/hwc_session.cpp
index 179a820..3896df4 100644
--- a/composer/hwc_session.cpp
+++ b/composer/hwc_session.cpp
@@ -1128,9 +1128,18 @@
   }
 
   *out_support = 0;
-  uint32_t config = 0;
-  GetActiveConfigIndex(display, &config);
-  *out_support = isSmartPanelConfig(display, config) ? 1 : 0;
+
+  if (display != qdutils::DISPLAY_PRIMARY) {
+    return HWC2_ERROR_NONE;
+  }
+
+  SCOPE_LOCK(locker_[display]);
+  if (!hwc_display_[display]) {
+    DLOGE("Display %d is not created yet.", INT32(display));
+    return HWC2_ERROR_NONE;
+  }
+
+  *out_support = hwc_display_[display]->HasSmartPanelConfig() ? 1 : 0;
 
   return HWC2_ERROR_NONE;
 }
