Merge "drm_hwcomposer: Add support for GetColorModes & SetCursorPosition"
am: b2a9617bc8

Change-Id: I34f7ae957ba8256199a6b969669145b8c9ce19fd
diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp
index b13fce1..8c853f4 100644
--- a/drmhwctwo.cpp
+++ b/drmhwctwo.cpp
@@ -315,8 +315,13 @@
 HWC2::Error DrmHwcTwo::HwcDisplay::GetColorModes(uint32_t *num_modes,
                                                  int32_t *modes) {
   supported(__func__);
-  // TODO: android_color_mode_t isn't defined yet!
-  return unsupported(__func__, num_modes, modes);
+  if (!modes)
+    *num_modes = 1;
+
+  if (modes)
+    *modes = HAL_COLOR_MODE_NATIVE;
+
+  return HWC2::Error::None;
 }
 
 HWC2::Error DrmHwcTwo::HwcDisplay::GetDisplayAttribute(hwc2_config_t config,
@@ -626,8 +631,12 @@
 
 HWC2::Error DrmHwcTwo::HwcDisplay::SetColorMode(int32_t mode) {
   supported(__func__);
-  // TODO: android_color_mode_t isn't defined yet!
-  return unsupported(__func__, mode);
+
+  if (mode != HAL_COLOR_MODE_NATIVE)
+    return HWC2::Error::Unsupported;
+
+  color_mode_ = mode;
+  return HWC2::Error::None;
 }
 
 HWC2::Error DrmHwcTwo::HwcDisplay::SetColorTransform(const float *matrix,
@@ -702,8 +711,9 @@
 
 HWC2::Error DrmHwcTwo::HwcLayer::SetCursorPosition(int32_t x, int32_t y) {
   supported(__func__);
-  // TODO: Implement proper cursor support
-  return unsupported(__func__, x, y);
+  cursor_x_ = x;
+  cursor_y_ = y;
+  return HWC2::Error::None;
 }
 
 HWC2::Error DrmHwcTwo::HwcLayer::SetLayerBlendMode(int32_t mode) {
diff --git a/drmhwctwo.h b/drmhwctwo.h
index 038412d..0490e2a 100644
--- a/drmhwctwo.h
+++ b/drmhwctwo.h
@@ -118,6 +118,8 @@
     hwc_rect_t display_frame_;
     float alpha_ = 1.0f;
     hwc_frect_t source_crop_;
+    int32_t cursor_x_;
+    int32_t cursor_y_;
     HWC2::Transform transform_ = HWC2::Transform::None;
     uint32_t z_order_ = 0;
     android_dataspace_t dataspace_ = HAL_DATASPACE_UNKNOWN;
@@ -205,6 +207,7 @@
     HwcLayer client_layer_;
     UniqueFd retire_fence_;
     UniqueFd next_retire_fence_;
+    int32_t color_mode_;
 
     uint32_t frame_no_ = 0;
   };