OSDN Git Service

drm_hwcomposer: Fix SetColorMode() and SetColorModeWithIntent()
authorRoman Stratiienko <r.stratiienko@gmail.com>
Sat, 26 Sep 2020 20:59:19 +0000 (23:59 +0300)
committerRoman Stratiienko <r.stratiienko@gmail.com>
Sat, 3 Oct 2020 07:54:15 +0000 (10:54 +0300)
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>
DrmHwcTwo.cpp

index 81bb96d..38ca663 100644 (file)
@@ -783,7 +783,7 @@ HWC2::Error DrmHwcTwo::HwcDisplay::SetColorMode(int32_t mode) {
   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::GetRenderIntents(
 
 HWC2::Error DrmHwcTwo::HwcDisplay::SetColorModeWithIntent(int32_t mode,
                                                           int32_t intent) {
-  if (mode != HAL_COLOR_MODE_NATIVE)
+  if (intent < HAL_RENDER_INTENT_COLORIMETRIC ||
+      intent > HAL_RENDER_INTENT_TONE_MAP_ENHANCE)
     return HWC2::Error::BadParameter;
-  if (intent != HAL_RENDER_INTENT_COLORIMETRIC)
+
+  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::Unsupported;
+
+  if (intent != HAL_RENDER_INTENT_COLORIMETRIC)
+    return HWC2::Error::Unsupported;
+
   color_mode_ = mode;
   return HWC2::Error::None;
 }