drm_hwcomposer: Fix SetColorMode() and SetColorModeWithIntent()
SetColorMode() should return HWC2_ERROR_UNSUPPORTED [1]
SetColorModeWithIntent() should return HWC2_ERROR_UNSUPPORTED [2]
Parameters range shoud be also checked to pass VTS.
Fixes VtsHalGraphicsComposerV2_2TargetTest:
- PerInstance/GraphicsComposerHidlTest#SetColorMode_2_2*
============================================
================= Results ==================
arm64-v8a VtsHalGraphicsComposerV2_2TargetTest: 39s
armeabi-v7a VtsHalGraphicsComposerV2_2TargetTest: 36s
=============== Summary ===============
2/2 modules completed
Total Tests : 78
PASSED : 78
FAILED : 0
============================================
[1] - https://cs.android.com/android/platform/superproject/+/master:hardware/libhardware/include/hardware/hwcomposer2.h;l=1925;drc=d5f2f67cd2ae63abeccabd0d5339dacd469569cd
[2] - https://cs.android.com/android/platform/superproject/+/master:hardware/libhardware/include/hardware/hwcomposer2.h;l=1952;drc=d5f2f67cd2ae63abeccabd0d5339dacd469569cd
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
diff --git a/DrmHwcTwo.cpp b/DrmHwcTwo.cpp
index 81bb96d..38ca663 100644
--- a/DrmHwcTwo.cpp
+++ b/DrmHwcTwo.cpp
@@ -783,7 +783,7 @@
supported(__func__);
if (mode != HAL_COLOR_MODE_NATIVE)
- return HWC2::Error::BadParameter;
+ return HWC2::Error::Unsupported;
color_mode_ = mode;
return HWC2::Error::None;
@@ -950,10 +950,19 @@
HWC2::Error DrmHwcTwo::HwcDisplay::SetColorModeWithIntent(int32_t mode,
int32_t intent) {
+ if (intent < HAL_RENDER_INTENT_COLORIMETRIC ||
+ intent > HAL_RENDER_INTENT_TONE_MAP_ENHANCE)
+ return HWC2::Error::BadParameter;
+
+ if (mode < HAL_COLOR_MODE_NATIVE || mode > HAL_COLOR_MODE_BT2100_HLG)
+ return HWC2::Error::BadParameter;
+
if (mode != HAL_COLOR_MODE_NATIVE)
- return HWC2::Error::BadParameter;
+ return HWC2::Error::Unsupported;
+
if (intent != HAL_RENDER_INTENT_COLORIMETRIC)
- return HWC2::Error::BadParameter;
+ return HWC2::Error::Unsupported;
+
color_mode_ = mode;
return HWC2::Error::None;
}