Update setHdrConversionStrategy to return the preferredHdrOutput type
Bug: 268336382
Test: atest VtsHalGraphicsComposer3_TargetTest
Change-Id: I6ac912ac8a0329f4ea32acad657e44b473660c42
diff --git a/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Hdr.aidl b/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Hdr.aidl
index 128ef49..71927b6 100644
--- a/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Hdr.aidl
+++ b/graphics/common/aidl/aidl_api/android.hardware.graphics.common/current/android/hardware/graphics/common/Hdr.aidl
@@ -35,6 +35,7 @@
/* @hide */
@Backing(type="int") @VintfStability
enum Hdr {
+ INVALID = 0,
DOLBY_VISION = 1,
HDR10 = 2,
HLG = 3,
diff --git a/graphics/common/aidl/android/hardware/graphics/common/Hdr.aidl b/graphics/common/aidl/android/hardware/graphics/common/Hdr.aidl
index 407b54f..6107c4c 100644
--- a/graphics/common/aidl/android/hardware/graphics/common/Hdr.aidl
+++ b/graphics/common/aidl/android/hardware/graphics/common/Hdr.aidl
@@ -24,6 +24,10 @@
@Backing(type="int")
enum Hdr {
/**
+ * Invalid HDR type
+ */
+ INVALID = 0,
+ /**
* Device supports Dolby Vision HDR
*/
DOLBY_VISION = 1,
diff --git a/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/IComposerClient.aidl b/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/IComposerClient.aidl
index af82b83..cb85a88 100644
--- a/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/IComposerClient.aidl
+++ b/graphics/composer/aidl/aidl_api/android.hardware.graphics.composer3/current/android/hardware/graphics/composer3/IComposerClient.aidl
@@ -77,7 +77,7 @@
void setIdleTimerEnabled(long display, int timeoutMs);
android.hardware.graphics.composer3.OverlayProperties getOverlaySupport();
android.hardware.graphics.common.HdrConversionCapability[] getHdrConversionCapabilities();
- void setHdrConversionStrategy(in android.hardware.graphics.common.HdrConversionStrategy conversionStrategy);
+ android.hardware.graphics.common.Hdr setHdrConversionStrategy(in android.hardware.graphics.common.HdrConversionStrategy conversionStrategy);
void setRefreshRateChangedCallbackDebugEnabled(long display, boolean enabled);
const int EX_BAD_CONFIG = 1;
const int EX_BAD_DISPLAY = 2;
diff --git a/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl b/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl
index fe6483e..4e77f86 100644
--- a/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl
+++ b/graphics/composer/aidl/android/hardware/graphics/composer3/IComposerClient.aidl
@@ -17,6 +17,7 @@
package android.hardware.graphics.composer3;
import android.hardware.graphics.common.DisplayDecorationSupport;
+import android.hardware.graphics.common.Hdr;
import android.hardware.graphics.common.HdrConversionCapability;
import android.hardware.graphics.common.HdrConversionStrategy;
import android.hardware.graphics.common.Transform;
@@ -844,12 +845,13 @@
/**
* Sets the of HDR conversion strategy.
*
- *
+ * @return the chosen HDR type in case HdrConversionStrategy has autoAllowedHdrTypes set. In
+ * other cases, return HDR type INVALID.
* @exception EX_UNSUPPORTED when not supported by the underlying HAL
*
* @see getHdrConversionCapabilities
*/
- void setHdrConversionStrategy(in HdrConversionStrategy conversionStrategy);
+ Hdr setHdrConversionStrategy(in HdrConversionStrategy conversionStrategy);
/*
* Sets either the callback for the refresh rate change is enabled or disabled
diff --git a/graphics/composer/aidl/vts/VtsComposerClient.cpp b/graphics/composer/aidl/vts/VtsComposerClient.cpp
index 2e2b193..e03ef25 100644
--- a/graphics/composer/aidl/vts/VtsComposerClient.cpp
+++ b/graphics/composer/aidl/vts/VtsComposerClient.cpp
@@ -344,9 +344,11 @@
hdrConversionCapability};
}
-ScopedAStatus VtsComposerClient::setHdrConversionStrategy(
+std::pair<ScopedAStatus, common::Hdr> VtsComposerClient::setHdrConversionStrategy(
const common::HdrConversionStrategy& conversionStrategy) {
- return mComposerClient->setHdrConversionStrategy(conversionStrategy);
+ common::Hdr preferredHdrOutputType;
+ return {mComposerClient->setHdrConversionStrategy(conversionStrategy, &preferredHdrOutputType),
+ preferredHdrOutputType};
}
std::pair<ScopedAStatus, common::Transform> VtsComposerClient::getDisplayPhysicalOrientation(
diff --git a/graphics/composer/aidl/vts/VtsComposerClient.h b/graphics/composer/aidl/vts/VtsComposerClient.h
index aee46d2..81a62b3 100644
--- a/graphics/composer/aidl/vts/VtsComposerClient.h
+++ b/graphics/composer/aidl/vts/VtsComposerClient.h
@@ -166,7 +166,8 @@
std::pair<ScopedAStatus, std::vector<common::HdrConversionCapability>>
getHdrConversionCapabilities();
- ScopedAStatus setHdrConversionStrategy(const common::HdrConversionStrategy& conversionStrategy);
+ std::pair<ScopedAStatus, common::Hdr> setHdrConversionStrategy(
+ const common::HdrConversionStrategy& conversionStrategy);
std::pair<ScopedAStatus, common::Transform> getDisplayPhysicalOrientation(int64_t display);
diff --git a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
index 55e0a13..70c4e4c 100644
--- a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
+++ b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp
@@ -637,8 +637,10 @@
}
common::HdrConversionStrategy hdrConversionStrategy;
hdrConversionStrategy.set<common::HdrConversionStrategy::Tag::passthrough>(true);
- const auto& status = mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
+ const auto& [status, preferredHdrOutputType] =
+ mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
EXPECT_TRUE(status.isOk());
+ EXPECT_EQ(common::Hdr::INVALID, preferredHdrOutputType);
}
TEST_P(GraphicsComposerAidlTest, SetHdrConversionStrategy_Force) {
@@ -652,9 +654,10 @@
common::HdrConversionStrategy hdrConversionStrategy;
hdrConversionStrategy.set<common::HdrConversionStrategy::Tag::forceHdrConversion>(
conversionCapability.outputType->hdr);
- const auto& statusSet =
+ const auto& [statusSet, preferredHdrOutputType] =
mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
- EXPECT_TRUE(status.isOk());
+ EXPECT_TRUE(statusSet.isOk());
+ EXPECT_EQ(common::Hdr::INVALID, preferredHdrOutputType);
}
}
}
@@ -674,8 +677,10 @@
common::HdrConversionStrategy hdrConversionStrategy;
hdrConversionStrategy.set<common::HdrConversionStrategy::Tag::autoAllowedHdrTypes>(
autoHdrTypes);
- const auto& statusSet = mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
- EXPECT_TRUE(status.isOk());
+ const auto& [statusSet, preferredHdrOutputType] =
+ mComposerClient->setHdrConversionStrategy(hdrConversionStrategy);
+ EXPECT_TRUE(statusSet.isOk());
+ EXPECT_NE(common::Hdr::INVALID, preferredHdrOutputType);
}
TEST_P(GraphicsComposerAidlTest, SetAutoLowLatencyMode_BadDisplay) {