From da5839cf9258f7b06b78c8a22e5749e390603b11 Mon Sep 17 00:00:00 2001 From: Kalyan Kondapally Date: Thu, 10 Nov 2016 10:59:50 -0800 Subject: drm_hwcomposer: Add support for GetColorModes & SetCursorPosition 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 --- drmhwctwo.cpp | 22 ++++++++++++++++------ drmhwctwo.h | 3 +++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp index 138f5fa..e57d842 100644 --- a/drmhwctwo.cpp +++ b/drmhwctwo.cpp @@ -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) { diff --git a/drmhwctwo.h b/drmhwctwo.h index 038412d..0490e2a 100644 --- a/drmhwctwo.h +++ b/drmhwctwo.h @@ -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; }; -- cgit v1.2.3