diff --git a/graphics/composer/2.4/vts/functional/VtsHalGraphicsComposerV2_4TargetTest.cpp b/graphics/composer/2.4/vts/functional/VtsHalGraphicsComposerV2_4TargetTest.cpp index 8077f082f4..50f282f3b3 100644 --- a/graphics/composer/2.4/vts/functional/VtsHalGraphicsComposerV2_4TargetTest.cpp +++ b/graphics/composer/2.4/vts/functional/VtsHalGraphicsComposerV2_4TargetTest.cpp @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include #include @@ -285,6 +287,59 @@ TEST_P(GraphicsComposerHidlTest, GetDisplayAttribute_2_4) { } } +TEST_P(GraphicsComposerHidlTest, GetDisplayAttribute_2_4_ConfigsInAGroupDifferOnlyByVsyncPeriod) { + struct Resolution { + int32_t width, height; + }; + struct Dpi { + int32_t x, y; + }; + for (const auto& display : mDisplays) { + std::vector configs = mComposerClient->getDisplayConfigs(display.get()); + std::unordered_map configGroupToResolutionMap; + std::unordered_map configGroupToDpiMap; + for (auto config : configs) { + const auto configGroup = mComposerClient->getDisplayAttribute_2_4( + display.get(), config, IComposerClient::Attribute::CONFIG_GROUP); + const auto width = mComposerClient->getDisplayAttribute_2_4( + display.get(), config, IComposerClient::Attribute::WIDTH); + const auto height = mComposerClient->getDisplayAttribute_2_4( + display.get(), config, IComposerClient::Attribute::HEIGHT); + if (configGroupToResolutionMap.find(configGroup) == configGroupToResolutionMap.end()) { + configGroupToResolutionMap[configGroup] = {width, height}; + } + EXPECT_EQ(configGroupToResolutionMap[configGroup].width, width); + EXPECT_EQ(configGroupToResolutionMap[configGroup].height, height); + + int32_t dpiX = -1; + mComposerClient->getRaw()->getDisplayAttribute_2_4( + display.get(), config, IComposerClient::Attribute::DPI_X, + [&](const auto& tmpError, const auto& value) { + if (tmpError == Error::NONE) { + dpiX = value; + } + }); + int32_t dpiY = -1; + mComposerClient->getRaw()->getDisplayAttribute_2_4( + display.get(), config, IComposerClient::Attribute::DPI_Y, + [&](const auto& tmpError, const auto& value) { + if (tmpError == Error::NONE) { + dpiY = value; + } + }); + if (dpiX == -1 && dpiY == -1) { + continue; + } + + if (configGroupToDpiMap.find(configGroup) == configGroupToDpiMap.end()) { + configGroupToDpiMap[configGroup] = {dpiX, dpiY}; + } + EXPECT_EQ(configGroupToDpiMap[configGroup].x, dpiX); + EXPECT_EQ(configGroupToDpiMap[configGroup].y, dpiY); + } + } +} + TEST_P(GraphicsComposerHidlTest, getDisplayVsyncPeriod_BadDisplay) { VsyncPeriodNanos vsyncPeriodNanos; EXPECT_EQ(Error::BAD_DISPLAY,