Check board config for wide-color color spaces
Check that board config allows wide-color color
spaces.
Test: make tests in libs/gui/tests/
Test: adb sync
Test: adb shell /data/nativetest/libgui_test/libgui_test --gtest_filter="SurfaceTest.GetWideColorSupport"
bug #35996305
Change-Id: Ia5b8116bc25befb6491e72e67cd8ed3c90ca5698
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 429e837..06fc31d 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -37,6 +37,9 @@
#include <gui/ISurfaceComposer.h>
#include <private/gui/ComposerService.h>
+#include <android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h>
+#include <configstore/Utils.h>
+
namespace android {
Surface::Surface(
@@ -289,6 +292,9 @@
return NO_ERROR;
}
+using namespace android::hardware::configstore;
+using namespace android::hardware::configstore::V1_0;
+
status_t Surface::getWideColorSupport(bool* supported) {
ATRACE_CALL();
@@ -301,13 +307,19 @@
if (err)
return err;
+ bool wideColorBoardConfig =
+ getBool<ISurfaceFlingerConfigs,
+ &ISurfaceFlingerConfigs::hasWideColorDisplay>(false);
+
*supported = false;
for (android_color_mode_t colorMode : colorModes) {
switch (colorMode) {
case HAL_COLOR_MODE_DISPLAY_P3:
case HAL_COLOR_MODE_ADOBE_RGB:
case HAL_COLOR_MODE_DCI_P3:
- *supported = true;
+ if (wideColorBoardConfig) {
+ *supported = true;
+ }
break;
default:
break;