diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index 34740a9..ee2fe44 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -1523,28 +1523,28 @@
 DisplayError DisplayBase::GetClientTargetSupport(uint32_t width, uint32_t height,
                                                  LayerBufferFormat format,
                                                  const ColorMetaData &color_metadata) {
-  DisplayError error = kErrorNone;
-
   if (format != kFormatRGBA8888 && format != kFormatRGBA1010102) {
     DLOGW("Unsupported format = %d", format);
-    error = kErrorNotSupported;
+    return kErrorNotSupported;
   } else if (ValidateScaling(width, height) != kErrorNone) {
     DLOGW("Unsupported width = %d height = %d", width, height);
-    error = kErrorNotSupported;
-  } else {
-    error = ValidateDataspace(color_metadata);
+    return kErrorNotSupported;
+  } else if (color_metadata.transfer && color_metadata.colorPrimaries) {
+    DisplayError error = ValidateDataspace(color_metadata);
     if (error != kErrorNone) {
+      DLOGW("Unsupported Transfer Request = %d Color Primary = %d",
+             color_metadata.transfer, color_metadata.colorPrimaries);
       return error;
     }
 
     // Check for BT2020 support
     if (color_metadata.colorPrimaries == ColorPrimaries_BT2020) {
-      DLOGW("Unsupported dataspace");
-      error = kErrorNotSupported;
+      DLOGW("Unsupported Color Primary = %d", color_metadata.colorPrimaries);
+      return kErrorNotSupported;
     }
   }
 
-  return error;
+  return kErrorNone;
 }
 
 DisplayError DisplayBase::ValidateScaling(uint32_t width, uint32_t height) {
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index 0c305be..2255c45 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -732,11 +732,13 @@
 HWC2::Error HWCDisplay::GetClientTargetSupport(uint32_t width, uint32_t height, int32_t format,
                                                int32_t dataspace) {
   ColorMetaData color_metadata = {};
-  LayerBufferFormat sdm_format = GetSDMFormat(format, 0);
-  GetColorPrimary(dataspace, &(color_metadata.colorPrimaries));
-  GetTransfer(dataspace, &(color_metadata.transfer));
-  GetRange(dataspace, &(color_metadata.range));
+  if (dataspace != HAL_DATASPACE_UNKNOWN) {
+    GetColorPrimary(dataspace, &(color_metadata.colorPrimaries));
+    GetTransfer(dataspace, &(color_metadata.transfer));
+    GetRange(dataspace, &(color_metadata.range));
+  }
 
+  LayerBufferFormat sdm_format = GetSDMFormat(format, 0);
   if (display_intf_->GetClientTargetSupport(width, height, sdm_format,
                                             color_metadata) != kErrorNone) {
     return HWC2::Error::Unsupported;
