hwc2: Add support for GetDisplayConnectionType for composer 2.4

Change-Id: I0914a7e064663f7ed10c562c5a3849bf633743a2
diff --git a/sdm/libs/hwc2/hwc_session.cpp b/sdm/libs/hwc2/hwc_session.cpp
index 80d02fe..9e2d8d6 100644
--- a/sdm/libs/hwc2/hwc_session.cpp
+++ b/sdm/libs/hwc2/hwc_session.cpp
@@ -1311,6 +1311,8 @@
       return AsFP<HWC2_PFN_GET_DISPLAY_BRIGHTNESS_SUPPORT>(HWCSession::GetDisplayBrightnessSupport);
     case HWC2::FunctionDescriptor::SetDisplayBrightness:
       return AsFP<HWC2_PFN_SET_DISPLAY_BRIGHTNESS>(HWCSession::SetDisplayBrightness);
+    case HWC2::FunctionDescriptor::GetDisplayConnectionType:
+      return AsFP<HWC2_PFN_GET_DISPLAY_CONNECTION_TYPE>(HWCSession::GetDisplayConnectionType);
     default:
       DLOGD("Unknown/Unimplemented function descriptor: %d (%s)", int_descriptor,
             to_string(descriptor).c_str());
@@ -3305,6 +3307,31 @@
   }
 }
 
+int32_t HWCSession::GetDisplayConnectionType(hwc2_device_t* device, hwc2_display_t display,
+                                             uint32_t *outType) {
+  if (!outType || !device) {
+    return HWC2_ERROR_BAD_PARAMETER;
+  }
+
+  if (display >= HWCCallbacks::kNumDisplays) {
+    return HWC2_ERROR_BAD_DISPLAY;
+  }
+
+  HWCSession *hwc_session = static_cast<HWCSession *>(device);
+  HWCDisplay *hwc_display = hwc_session->hwc_display_[display];
+  if (!hwc_display) {
+    DLOGE("Expected valid hwc_display");
+    return HWC2_ERROR_BAD_PARAMETER;
+  }
+
+  *outType = HWC2_DISPLAY_CONNECTION_TYPE_EXTERNAL;
+  if (hwc_display->GetDisplayClass() == DISPLAY_CLASS_BUILTIN) {
+    *outType = HWC2_DISPLAY_CONNECTION_TYPE_INTERNAL;
+  }
+
+  return HWC2_ERROR_NONE;
+}
+
 
 int32_t HWCSession::GetDisplayBrightnessSupport(hwc2_device_t *device, hwc2_display_t display,
                                                 bool *outSupport) {
diff --git a/sdm/libs/hwc2/hwc_session.h b/sdm/libs/hwc2/hwc_session.h
index dfc3bbb..e0d9821 100644
--- a/sdm/libs/hwc2/hwc_session.h
+++ b/sdm/libs/hwc2/hwc_session.h
@@ -210,6 +210,8 @@
                                              bool *outSupport);
   static int32_t SetDisplayBrightness(hwc2_device_t *device, hwc2_display_t display,
                                       float brightness);
+  static int32_t GetDisplayConnectionType(hwc2_device_t *device, hwc2_display_t display,
+                                          uint32_t *outType);
 
   // HWCDisplayEventHandler
   virtual void DisplayPowerReset();