From 2f3553e1ed5f2e492e9725028108bf0b8e2a536f Mon Sep 17 00:00:00 2001 From: Valerie Hau Date: Tue, 16 Jul 2019 09:16:58 -0700 Subject: [PATCH] DO NOT MERGE: Fixing SRGB for devices that do not support SRGB color mode Bug: 135375302 Test: build, boot, VtsHalGraphicsComposerV2_2TargetTest Change-Id: Ie8f53effe3e6e29a4523ebfa450c79fdf96ed585 Merged-In: Ie8f53effe3e6e29a4523ebfa450c79fdf96ed585 --- ...VtsHalGraphicsComposerV2_2ReadbackTest.cpp | 86 ++++++++++++------- 1 file changed, 53 insertions(+), 33 deletions(-) diff --git a/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2ReadbackTest.cpp b/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2ReadbackTest.cpp index 0648b3456a..02c4c9cec9 100644 --- a/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2ReadbackTest.cpp +++ b/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2ReadbackTest.cpp @@ -182,6 +182,14 @@ class GraphicsComposerReadbackTest : public ::testing::VtsHalHidlTargetTestBase mReader = std::make_unique(); mGralloc = std::make_shared(); + std::vector colorModes = mComposerClient->getColorModes(mPrimaryDisplay); + if (std::find(colorModes.begin(), colorModes.end(), ColorMode::SRGB) == colorModes.end()) { + mHasReadbackBuffer = false; + return; + } + mWriter->selectDisplay(mPrimaryDisplay); + ASSERT_NO_FATAL_FAILURE(mComposerClient->setColorMode(mPrimaryDisplay, ColorMode::SRGB, + RenderIntent::COLORIMETRIC)); mComposerClient->getRaw()->getReadbackBufferAttributes( mPrimaryDisplay, [&](const auto& tmpError, const auto& tmpPixelFormat, const auto& tmpDataspace) { @@ -471,12 +479,12 @@ class TestBufferLayer : public TestLayer { TEST_F(GraphicsComposerReadbackTest, SingleSolidColorLayer) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - ASSERT_NO_FATAL_FAILURE(mComposerClient->setColorMode(mPrimaryDisplay, ColorMode::SRGB, - RenderIntent::COLORIMETRIC)); auto layer = std::make_shared(mComposerClient, mPrimaryDisplay); IComposerClient::Rect coloredSquare({0, 0, mDisplayWidth, mDisplayHeight}); @@ -515,12 +523,13 @@ TEST_F(GraphicsComposerReadbackTest, SingleSolidColorLayer) { TEST_F(GraphicsComposerReadbackTest, SetLayerBuffer) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - ReadbackBuffer readbackBuffer(mPrimaryDisplay, mComposerClient, mGralloc, mDisplayWidth, mDisplayHeight, mPixelFormat, mDataspace); ASSERT_NO_FATAL_FAILURE(readbackBuffer.setReadbackBuffer()); @@ -562,13 +571,13 @@ TEST_F(GraphicsComposerReadbackTest, SetLayerBuffer) { TEST_F(GraphicsComposerReadbackTest, SetLayerBufferNoEffect) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - ASSERT_NO_FATAL_FAILURE(mComposerClient->setColorMode(mPrimaryDisplay, ColorMode::SRGB, - RenderIntent::COLORIMETRIC)); auto layer = std::make_shared(mComposerClient, mPrimaryDisplay); IComposerClient::Rect coloredSquare({0, 0, mDisplayWidth, mDisplayHeight}); @@ -611,12 +620,13 @@ TEST_F(GraphicsComposerReadbackTest, SetLayerBufferNoEffect) { TEST_F(GraphicsComposerReadbackTest, ClientComposition) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - std::vector expectedColors(mDisplayWidth * mDisplayHeight); fillColorsArea(expectedColors, mDisplayWidth, {0, 0, mDisplayWidth, mDisplayHeight / 4}, RED); fillColorsArea(expectedColors, mDisplayWidth, @@ -690,11 +700,13 @@ TEST_F(GraphicsComposerReadbackTest, ClientComposition) { TEST_F(GraphicsComposerReadbackTest, DeviceAndClientComposition) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); ASSERT_NO_FATAL_FAILURE( mComposerClient->setClientTargetSlotCount(mPrimaryDisplay, kClientTargetSlotCount)); @@ -776,12 +788,13 @@ TEST_F(GraphicsComposerReadbackTest, DeviceAndClientComposition) { TEST_F(GraphicsComposerReadbackTest, SetLayerDamage) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelformat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - IComposerClient::Rect redRect = {0, 0, mDisplayWidth / 4, mDisplayHeight / 4}; std::vector expectedColors(mDisplayWidth * mDisplayHeight); @@ -842,14 +855,13 @@ TEST_F(GraphicsComposerReadbackTest, SetLayerDamage) { TEST_F(GraphicsComposerReadbackTest, SetLayerPlaneAlpha) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - ASSERT_NO_FATAL_FAILURE(mComposerClient->setColorMode(mPrimaryDisplay, ColorMode::SRGB, - RenderIntent::COLORIMETRIC)); - auto layer = std::make_shared(mComposerClient, mPrimaryDisplay); layer->setColor(RED); layer->setDisplayFrame({0, 0, mDisplayWidth, mDisplayHeight}); @@ -886,12 +898,13 @@ TEST_F(GraphicsComposerReadbackTest, SetLayerPlaneAlpha) { TEST_F(GraphicsComposerReadbackTest, SetLayerSourceCrop) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - std::vector expectedColors(mDisplayWidth * mDisplayHeight); fillColorsArea(expectedColors, mDisplayWidth, {0, 0, mDisplayWidth, mDisplayHeight / 4}, RED); fillColorsArea(expectedColors, mDisplayWidth, @@ -931,14 +944,13 @@ TEST_F(GraphicsComposerReadbackTest, SetLayerSourceCrop) { TEST_F(GraphicsComposerReadbackTest, SetLayerZOrder) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - ASSERT_NO_FATAL_FAILURE(mComposerClient->setColorMode(mPrimaryDisplay, ColorMode::SRGB, - RenderIntent::COLORIMETRIC)); - IComposerClient::Rect redRect = {0, 0, mDisplayWidth, mDisplayHeight / 2}; IComposerClient::Rect blueRect = {0, mDisplayHeight / 4, mDisplayWidth, mDisplayHeight}; auto redLayer = std::make_shared(mComposerClient, mPrimaryDisplay); @@ -1081,12 +1093,13 @@ class GraphicsComposerBlendModeReadbackTest : public GraphicsComposerReadbackTes TEST_P(GraphicsComposerBlendModeReadbackTest, None) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - std::vector expectedColors(mDisplayWidth * mDisplayHeight); setBackgroundColor(BLACK); @@ -1118,12 +1131,13 @@ TEST_P(GraphicsComposerBlendModeReadbackTest, None) { // alpha of .2, expected 10.2 TEST_P(GraphicsComposerBlendModeReadbackTest, DISABLED_Coverage) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - std::vector expectedColors(mDisplayWidth * mDisplayHeight); setBackgroundColor(BLACK); @@ -1153,12 +1167,13 @@ TEST_P(GraphicsComposerBlendModeReadbackTest, DISABLED_Coverage) { TEST_P(GraphicsComposerBlendModeReadbackTest, Premultiplied) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } - mWriter->selectDisplay(mPrimaryDisplay); - std::vector expectedColors(mDisplayWidth * mDisplayHeight); setBackgroundColor(BLACK); @@ -1193,10 +1208,6 @@ class GraphicsComposerTransformReadbackTest : public GraphicsComposerReadbackTes void SetUp() override { GraphicsComposerReadbackTest::SetUp(); - mWriter->selectDisplay(mPrimaryDisplay); - ASSERT_NO_FATAL_FAILURE(mComposerClient->setColorMode(mPrimaryDisplay, ColorMode::SRGB, - RenderIntent::COLORIMETRIC)); - auto backgroundLayer = std::make_shared(mComposerClient, mPrimaryDisplay); backgroundLayer->setColor({0, 0, 0, 0}); backgroundLayer->setDisplayFrame({0, 0, mDisplayWidth, mDisplayHeight}); @@ -1230,6 +1241,9 @@ class GraphicsComposerTransformReadbackTest : public GraphicsComposerReadbackTes TEST_F(GraphicsComposerTransformReadbackTest, FLIP_H) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } @@ -1262,6 +1276,9 @@ TEST_F(GraphicsComposerTransformReadbackTest, FLIP_H) { TEST_F(GraphicsComposerTransformReadbackTest, FLIP_V) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; } @@ -1295,6 +1312,9 @@ TEST_F(GraphicsComposerTransformReadbackTest, FLIP_V) { TEST_F(GraphicsComposerTransformReadbackTest, ROT_180) { if (!mHasReadbackBuffer) { + std::cout << "Readback not supported or unsuppported pixelFormat/dataspace or SRGB not a " + "valid color mode" + << std::endl; GTEST_SUCCEED() << "Readback not supported or unsupported pixelFormat/dataspace"; return; }