OSDN Git Service

drm_hwcomposer: Add support for GetColorModes & SetCursorPosition
authorKalyan Kondapally <kalyan.kondapally@intel.com>
Thu, 10 Nov 2016 18:59:50 +0000 (10:59 -0800)
committerRobert Foss <robert.foss@collabora.com>
Tue, 25 Apr 2017 16:52:57 +0000 (12:52 -0400)
For now we just return HAL_COLOR_MODE_NATIVE and store cursor
position.

BUG=None.
TEST=None.

Change-Id: Id6a7e157dbd9fc41fc53c0e33a6eb523632b9b7a
Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com>
drmhwctwo.cpp
drmhwctwo.h

index 138f5fa..e57d842 100644 (file)
@@ -319,8 +319,13 @@ HWC2::Error DrmHwcTwo::HwcDisplay::GetClientTargetSupport(uint32_t width,
 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,
@@ -630,8 +635,12 @@ HWC2::Error DrmHwcTwo::HwcDisplay::SetClientTarget(buffer_handle_t target,
 
 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,
@@ -706,8 +715,9 @@ HWC2::Error DrmHwcTwo::HwcDisplay::ValidateDisplay(uint32_t *num_types,
 
 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) {
index 038412d..0490e2a 100644 (file)
@@ -118,6 +118,8 @@ class DrmHwcTwo : public hwc2_device_t {
     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 @@ class DrmHwcTwo : public hwc2_device_t {
     HwcLayer client_layer_;
     UniqueFd retire_fence_;
     UniqueFd next_retire_fence_;
+    int32_t color_mode_;
 
     uint32_t frame_no_ = 0;
   };