summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kriti Dang <kritidang@google.com> 2023-02-28 13:35:00 +0100
committer Kriti Dang <kritidang@google.com> 2023-03-03 10:01:04 +0000
commit53fa453b932e30e6eefbfa34145b2107b6325a5c (patch)
tree6936f39863605211bd79961e825efc2460d56264
parent236f36de43d85d03ce0648e70af1ca06373248a6 (diff)
Use HdrConversionMode FORCE with preferredHdrType INVALID for a casee
when SDR FORCE conversion is chosen. SDR force conversion is handled as PASSTHROUGH internally, but for differenciating it extrenally, use FORCE with INVALID HDR type. Test: m Bug: 251168530 Change-Id: Ie1e64b155fe714aa04d2d07c3cd89dde4ca17417
-rw-r--r--core/java/android/hardware/display/DisplayManager.java5
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java18
2 files changed, 16 insertions, 7 deletions
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 50dd7a0bc1be..6ae71d2bb25e 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -1409,9 +1409,10 @@ public final class DisplayManager {
* @param hdrConversionMode The {@link HdrConversionMode} to set.
* Note, {@code HdrConversionMode.preferredHdrOutputType} is only applicable when
* {@code HdrConversionMode.conversionMode} is {@link HdrConversionMode#HDR_CONVERSION_FORCE}.
+ * If {@code HdrConversionMode.preferredHdrOutputType} is not set in case when
+ * {@code HdrConversionMode.conversionMode} is {@link HdrConversionMode#HDR_CONVERSION_FORCE},
+ * it means that preferred output type is SDR.
*
- * @throws IllegalArgumentException if hdrConversionMode.preferredHdrOutputType is not set
- * when hdrConversionMode.conversionMode is {@link HdrConversionMode#HDR_CONVERSION_FORCE}.
* @throws IllegalArgumentException if hdrConversionMode.preferredHdrOutputType is set but
* hdrConversionMode.conversionMode is not {@link HdrConversionMode#HDR_CONVERSION_FORCE}.
*
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 6eb465e1049e..31e38743507c 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -2126,16 +2126,24 @@ public final class DisplayManagerService extends SystemService {
autoHdrOutputTypes = getEnabledAutoHdrTypesLocked();
}
+ int conversionMode = hdrConversionMode.getConversionMode();
+ int preferredHdrType = hdrConversionMode.getPreferredHdrOutputType();
// If the HDR conversion is disabled by an app through WindowManager.LayoutParams, then
// set HDR conversion mode to HDR_CONVERSION_PASSTHROUGH.
if (mOverrideHdrConversionMode == null) {
- mSystemPreferredHdrOutputType =
- mInjector.setHdrConversionMode(hdrConversionMode.getConversionMode(),
- hdrConversionMode.getPreferredHdrOutputType(), autoHdrOutputTypes);
+ // HDR_CONVERSION_FORCE with HDR_TYPE_INVALID is used to represent forcing SDR type.
+ // But, internally SDR is selected by using passthrough mode.
+ if (conversionMode == HdrConversionMode.HDR_CONVERSION_FORCE
+ && preferredHdrType == Display.HdrCapabilities.HDR_TYPE_INVALID) {
+ conversionMode = HdrConversionMode.HDR_CONVERSION_PASSTHROUGH;
+ }
} else {
- mInjector.setHdrConversionMode(mOverrideHdrConversionMode.getConversionMode(),
- mOverrideHdrConversionMode.getPreferredHdrOutputType(), null);
+ conversionMode = mOverrideHdrConversionMode.getConversionMode();
+ preferredHdrType = mOverrideHdrConversionMode.getPreferredHdrOutputType();
+ autoHdrOutputTypes = null;
}
+ mSystemPreferredHdrOutputType = mInjector.setHdrConversionMode(
+ conversionMode, preferredHdrType, autoHdrOutputTypes);
}
}