drm_hwcomposer: Create intermediate enum for colorspace and samplerange

Part of "frontend" isolation activities.
Also allows to additionally simplify atomic commit.

Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
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;