diff --git a/DrmHwcTwo.cpp b/DrmHwcTwo.cpp
index 968d3ce..2e47083 100644
--- a/DrmHwcTwo.cpp
+++ b/DrmHwcTwo.cpp
@@ -1084,7 +1084,34 @@
 
 HWC2::Error DrmHwcTwo::HwcLayer::SetLayerDataspace(int32_t dataspace) {
   supported(__func__);
-  dataspace_ = static_cast<android_dataspace_t>(dataspace);
+  switch (dataspace & HAL_DATASPACE_STANDARD_MASK) {
+    case HAL_DATASPACE_STANDARD_BT709:
+      color_space_ = DrmHwcColorSpace::kItuRec709;
+      break;
+    case HAL_DATASPACE_STANDARD_BT601_625:
+    case HAL_DATASPACE_STANDARD_BT601_625_UNADJUSTED:
+    case HAL_DATASPACE_STANDARD_BT601_525:
+    case HAL_DATASPACE_STANDARD_BT601_525_UNADJUSTED:
+      color_space_ = DrmHwcColorSpace::kItuRec601;
+      break;
+    case HAL_DATASPACE_STANDARD_BT2020:
+    case HAL_DATASPACE_STANDARD_BT2020_CONSTANT_LUMINANCE:
+      color_space_ = DrmHwcColorSpace::kItuRec2020;
+      break;
+    default:
+      color_space_ = DrmHwcColorSpace::kUndefined;
+  }
+
+  switch (dataspace & HAL_DATASPACE_RANGE_MASK) {
+    case HAL_DATASPACE_RANGE_FULL:
+      sample_range_ = DrmHwcSampleRange::kFullRange;
+      break;
+    case HAL_DATASPACE_RANGE_LIMITED:
+      sample_range_ = DrmHwcSampleRange::kLimitedRange;
+      break;
+    default:
+      sample_range_ = DrmHwcSampleRange::kUndefined;
+  }
   return HWC2::Error::None;
 }
 
@@ -1164,7 +1191,8 @@
   layer->alpha = lround(65535.0F * alpha_);
   layer->source_crop = source_crop_;
   layer->SetTransform(static_cast<int32_t>(transform_));
-  layer->dataspace = dataspace_;
+  layer->color_space = color_space_;
+  layer->sample_range = sample_range_;
 }
 
 void DrmHwcTwo::HandleDisplayHotplug(hwc2_display_t displayid, int state) {
diff --git a/DrmHwcTwo.h b/DrmHwcTwo.h
index 111c664..807ad25 100644
--- a/DrmHwcTwo.h
+++ b/DrmHwcTwo.h
@@ -143,7 +143,8 @@
     hwc_color_t layer_color_;
     HWC2::Transform transform_ = HWC2::Transform::None;
     uint32_t z_order_ = 0;
-    android_dataspace_t dataspace_ = HAL_DATASPACE_UNKNOWN;
+    DrmHwcColorSpace color_space_ = DrmHwcColorSpace::kUndefined;
+    DrmHwcSampleRange sample_range_ = DrmHwcSampleRange::kUndefined;
   };
 
   class HwcDisplay {
diff --git a/drm/DrmPlane.cpp b/drm/DrmPlane.cpp
index fd08379..1de1fce 100644
--- a/drm/DrmPlane.cpp
+++ b/drm/DrmPlane.cpp
@@ -337,40 +337,38 @@
   }
 
   if (color_encoding_propery_) {
-    switch (layer.dataspace & HAL_DATASPACE_STANDARD_MASK) {
-      case HAL_DATASPACE_STANDARD_BT709:
+    switch (layer.color_space) {
+      case DrmHwcColorSpace::kItuRec709:
         std::tie(color_encoding,
                  ret) = color_encoding_propery_
                             .GetEnumValueWithName("ITU-R BT.709 YCbCr");
         break;
-      case HAL_DATASPACE_STANDARD_BT601_625:
-      case HAL_DATASPACE_STANDARD_BT601_625_UNADJUSTED:
-      case HAL_DATASPACE_STANDARD_BT601_525:
-      case HAL_DATASPACE_STANDARD_BT601_525_UNADJUSTED:
+      case DrmHwcColorSpace::kItuRec601:
         std::tie(color_encoding,
                  ret) = color_encoding_propery_
                             .GetEnumValueWithName("ITU-R BT.601 YCbCr");
         break;
-      case HAL_DATASPACE_STANDARD_BT2020:
-      case HAL_DATASPACE_STANDARD_BT2020_CONSTANT_LUMINANCE:
+      case DrmHwcColorSpace::kItuRec2020:
         std::tie(color_encoding,
                  ret) = color_encoding_propery_
                             .GetEnumValueWithName("ITU-R BT.2020 YCbCr");
         break;
+      default:
+        break;
     }
   }
 
-  if (color_range_property_) {
-    switch (layer.dataspace & HAL_DATASPACE_RANGE_MASK) {
-      case HAL_DATASPACE_RANGE_FULL:
-        std::tie(color_range, ret) = color_range_property_.GetEnumValueWithName(
-            "YCbCr full range");
-        break;
-      case HAL_DATASPACE_RANGE_LIMITED:
-        std::tie(color_range, ret) = color_range_property_.GetEnumValueWithName(
-            "YCbCr limited range");
-        break;
-    }
+  switch (layer.sample_range) {
+    case DrmHwcSampleRange::kFullRange:
+      std::tie(color_range, ret) = color_range_property_.GetEnumValueWithName(
+          "YCbCr full range");
+      break;
+    case DrmHwcSampleRange::kLimitedRange:
+      std::tie(color_range, ret) = color_range_property_.GetEnumValueWithName(
+          "YCbCr limited range");
+      break;
+    default:
+      break;
   }
 
   if (!crtc_property_.AtomicSet(pset, crtc_id) ||
diff --git a/include/drmhwcomposer.h b/include/drmhwcomposer.h
index 22af12b..8abf840 100644
--- a/include/drmhwcomposer.h
+++ b/include/drmhwcomposer.h
@@ -32,6 +32,19 @@
 
 class DrmFbIdHandle;
 
+enum class DrmHwcColorSpace : int32_t {
+  kUndefined,
+  kItuRec601,
+  kItuRec709,
+  kItuRec2020,
+};
+
+enum class DrmHwcSampleRange : int32_t {
+  kUndefined,
+  kFullRange,
+  kLimitedRange,
+};
+
 enum DrmHwcTransform {
   kIdentity = 0,
   kFlipH = 1 << 0,
@@ -58,7 +71,8 @@
   uint16_t alpha = 0xffff;
   hwc_frect_t source_crop;
   hwc_rect_t display_frame;
-  android_dataspace_t dataspace;
+  DrmHwcColorSpace color_space;
+  DrmHwcSampleRange sample_range;
 
   UniqueFd acquire_fence;
 
