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();