diff options
author | Ram Indani <ramindani@google.com> | 2022-03-18 19:04:40 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-03-18 19:04:40 +0000 |
commit | 4f7f81c855a8613dbfcdd7f0cca8675c67a27966 (patch) | |
tree | 1bf71145514ac86281b7e84253ff64b8b7430969 /graphics | |
parent | 06d5f095be5b962373d998956a9cf0c20c0c444a (diff) | |
parent | 476314cc5430df02796609db905f0c835804a769 (diff) |
Merge "[HWC3.0] Add capability BOOT_DISPLAY_CONFIG" into tm-dev
Diffstat (limited to 'graphics')
4 files changed, 61 insertions, 0 deletions
diff --git a/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/Capability.aidl b/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/Capability.aidl index 9c49583fd2..b89f7d5105 100644 --- a/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/Capability.aidl +++ b/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/Capability.aidl @@ -39,4 +39,5 @@ enum Capability { SKIP_CLIENT_COLOR_TRANSFORM = 2, PRESENT_FENCE_IS_NOT_RELIABLE = 3, SKIP_VALIDATE = 4, + BOOT_DISPLAY_CONFIG = 5, } diff --git a/graphics/composer/aidl/android/hardware/graphics/composer3/Capability.aidl b/graphics/composer/aidl/android/hardware/graphics/composer3/Capability.aidl index ea619aeaf3..2f9eab937c 100644 --- a/graphics/composer/aidl/android/hardware/graphics/composer3/Capability.aidl +++ b/graphics/composer/aidl/android/hardware/graphics/composer3/Capability.aidl @@ -57,4 +57,13 @@ enum Capability { * validateDisplay step is needed. */ SKIP_VALIDATE = 4, + + /** + * Specifies that the device supports setting a display configuration that + * the device should boot at. + * @see IComposerClient.setBootDisplayConfig + * @see IComposerClient.clearBootDisplayConfig + * @see IComposerClient.getPreferredBootDisplayConfig + */ + BOOT_DISPLAY_CONFIG = 5, } diff --git a/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl b/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl index bbc9c4620a..a4ea64f815 100644 --- a/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl +++ b/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl @@ -590,6 +590,7 @@ interface IComposerClient { * * @exception EX_BAD_DISPLAY when an invalid display handle was passed in. * @exception EX_BAD_CONFIG when an invalid config id was passed in. + * @exception EX_UNSUPPORTED when not supported by the underlying HAL * * @see getDisplayConfigs * @see clearBootDisplayConfig @@ -605,6 +606,7 @@ interface IComposerClient { * @param display is the display for which the cached boot config is cleared. * * @exception EX_BAD_DISPLAY when an invalid display handle was passed in. + * @exception EX_UNSUPPORTED when not supported by the underlying HAL * * @see getDisplayConfigs * @see setBootDisplayConfig @@ -622,6 +624,7 @@ interface IComposerClient { * @return the implementation's preferred display config. * * @exception EX_BAD_DISPLAY when an invalid display handle was passed in. + * @exception EX_UNSUPPORTED when not supported by the underlying HAL * * @see getDisplayConfigs * @see setBootDisplayConfig diff --git a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp index bfb6b85d12..2d08ac611b 100644 --- a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp +++ b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp @@ -495,6 +495,10 @@ TEST_P(GraphicsComposerAidlTest, SetActiveConfigWithConstraints_BadConfig) { } TEST_P(GraphicsComposerAidlTest, SetBootDisplayConfig_BadDisplay) { + if (!hasCapability(Capability::BOOT_DISPLAY_CONFIG)) { + GTEST_SUCCEED() << "Boot Display Config not supported"; + return; + } const auto& status = mComposerClient->setBootDisplayConfig(getInvalidDisplayId(), /*config*/ 0); EXPECT_FALSE(status.isOk()); @@ -502,6 +506,10 @@ TEST_P(GraphicsComposerAidlTest, SetBootDisplayConfig_BadDisplay) { } TEST_P(GraphicsComposerAidlTest, SetBootDisplayConfig_BadConfig) { + if (!hasCapability(Capability::BOOT_DISPLAY_CONFIG)) { + GTEST_SUCCEED() << "Boot Display Config not supported"; + return; + } for (VtsDisplay& display : mDisplays) { int32_t constexpr kInvalidConfigId = IComposerClient::INVALID_CONFIGURATION; const auto& status = @@ -513,6 +521,10 @@ TEST_P(GraphicsComposerAidlTest, SetBootDisplayConfig_BadConfig) { } TEST_P(GraphicsComposerAidlTest, SetBootDisplayConfig) { + if (!hasCapability(Capability::BOOT_DISPLAY_CONFIG)) { + GTEST_SUCCEED() << "Boot Display Config not supported"; + return; + } const auto& [status, configs] = mComposerClient->getDisplayConfigs(getPrimaryDisplayId()); EXPECT_TRUE(status.isOk()); for (const auto& config : configs) { @@ -521,6 +533,10 @@ TEST_P(GraphicsComposerAidlTest, SetBootDisplayConfig) { } TEST_P(GraphicsComposerAidlTest, ClearBootDisplayConfig_BadDisplay) { + if (!hasCapability(Capability::BOOT_DISPLAY_CONFIG)) { + GTEST_SUCCEED() << "Boot Display Config not supported"; + return; + } const auto& status = mComposerClient->clearBootDisplayConfig(getInvalidDisplayId()); EXPECT_FALSE(status.isOk()); @@ -528,10 +544,18 @@ TEST_P(GraphicsComposerAidlTest, ClearBootDisplayConfig_BadDisplay) { } TEST_P(GraphicsComposerAidlTest, ClearBootDisplayConfig) { + if (!hasCapability(Capability::BOOT_DISPLAY_CONFIG)) { + GTEST_SUCCEED() << "Boot Display Config not supported"; + return; + } EXPECT_TRUE(mComposerClient->clearBootDisplayConfig(getPrimaryDisplayId()).isOk()); } TEST_P(GraphicsComposerAidlTest, GetPreferredBootDisplayConfig_BadDisplay) { + if (!hasCapability(Capability::BOOT_DISPLAY_CONFIG)) { + GTEST_SUCCEED() << "Boot Display Config not supported"; + return; + } const auto& [status, _] = mComposerClient->getPreferredBootDisplayConfig(getInvalidDisplayId()); EXPECT_FALSE(status.isOk()); @@ -539,6 +563,10 @@ TEST_P(GraphicsComposerAidlTest, GetPreferredBootDisplayConfig_BadDisplay) { } TEST_P(GraphicsComposerAidlTest, GetPreferredBootDisplayConfig) { + if (!hasCapability(Capability::BOOT_DISPLAY_CONFIG)) { + GTEST_SUCCEED() << "Boot Display Config not supported"; + return; + } const auto& [status, preferredDisplayConfig] = mComposerClient->getPreferredBootDisplayConfig(getPrimaryDisplayId()); EXPECT_TRUE(status.isOk()); @@ -549,6 +577,26 @@ TEST_P(GraphicsComposerAidlTest, GetPreferredBootDisplayConfig) { EXPECT_NE(configs.end(), std::find(configs.begin(), configs.end(), preferredDisplayConfig)); } +TEST_P(GraphicsComposerAidlTest, BootDisplayConfig_Unsupported) { + if (!hasCapability(Capability::BOOT_DISPLAY_CONFIG)) { + const auto& [configStatus, config] = + mComposerClient->getActiveConfig(getPrimaryDisplayId()); + EXPECT_TRUE(configStatus.isOk()); + + auto status = mComposerClient->setBootDisplayConfig(getPrimaryDisplayId(), config); + EXPECT_FALSE(status.isOk()); + EXPECT_EQ(IComposerClient::EX_UNSUPPORTED, status.getServiceSpecificError()); + + status = mComposerClient->getPreferredBootDisplayConfig(getPrimaryDisplayId()).first; + EXPECT_FALSE(status.isOk()); + EXPECT_EQ(IComposerClient::EX_UNSUPPORTED, status.getServiceSpecificError()); + + status = mComposerClient->clearBootDisplayConfig(getPrimaryDisplayId()); + EXPECT_FALSE(status.isOk()); + EXPECT_EQ(IComposerClient::EX_UNSUPPORTED, status.getServiceSpecificError()); + } +} + TEST_P(GraphicsComposerAidlTest, SetAutoLowLatencyMode_BadDisplay) { auto status = mComposerClient->setAutoLowLatencyMode(getInvalidDisplayId(), /*isEnabled*/ true); EXPECT_FALSE(status.isOk()); |