From 7010f95cb2abb509a6a6e65b865ad5f4c2ac87c0 Mon Sep 17 00:00:00 2001 From: Kriti Dang Date: Mon, 18 Jan 2021 17:54:36 +0100 Subject: [PATCH] Hdr format settings [Backend] Adding new APIs in display manager to get the user disabled formats, to get the formats supported by device and get formats reported by display. Bug: 172905874 Test: N/A Change-Id: I58a7714f03a3e165bbd22f2fa7a021ad90b41b39 Merged-In: I58a7714f03a3e165bbd22f2fa7a021ad90b41b39 (cherry picked from commit 25f1822005b8ebf9a6cf5c6fda0dae26f8212d50) --- core/api/test-current.txt | 2 ++ .../android/hardware/display/DisplayManager.java | 11 +++++++++++ .../hardware/display/DisplayManagerGlobal.java | 12 ++++++++++++ .../hardware/display/IDisplayManager.aidl | 3 +++ core/java/android/view/Display.java | 16 ++++++++++++++++ .../server/display/DisplayManagerService.java | 5 +++++ 6 files changed, 49 insertions(+) diff --git a/core/api/test-current.txt b/core/api/test-current.txt index a54bce7182375..21771df3c6a3c 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -1142,6 +1142,7 @@ package android.hardware.display { public final class DisplayManager { method public boolean areUserDisabledHdrTypesAllowed(); method @RequiresPermission(android.Manifest.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE) public int getRefreshRateSwitchingType(); + method @NonNull public int[] getUserDisabledHdrTypes(); method public boolean isMinimalPostProcessingRequested(int); method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setAreUserDisabledHdrTypesAllowed(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE) public void setRefreshRateSwitchingType(int); @@ -2597,6 +2598,7 @@ package android.view { } public final class Display { + method @NonNull public int[] getReportedHdrTypes(); method @NonNull public android.graphics.ColorSpace[] getSupportedWideColorGamut(); method public int getType(); method public boolean hasAccess(int); diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index 0dc612f0ea874..216e7b079f6b4 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -748,6 +748,17 @@ public final class DisplayManager { return mGlobal.areUserDisabledHdrTypesAllowed(); } + /** + * Returns the HDR formats disabled by the user. + * + * @hide + */ + @TestApi + public @NonNull int[] getUserDisabledHdrTypes() { + return mGlobal.getUserDisabledHdrTypes(); + } + + /** * Creates a virtual display. * diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java index da3a76fa043b8..cdc219a0c1154 100644 --- a/core/java/android/hardware/display/DisplayManagerGlobal.java +++ b/core/java/android/hardware/display/DisplayManagerGlobal.java @@ -551,6 +551,18 @@ public final class DisplayManagerGlobal { } } + /** + * Returns the HDR formats disabled by the user. + * + */ + public int[] getUserDisabledHdrTypes() { + try { + return mDm.getUserDisabledHdrTypes(); + } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); + } + } + public void requestColorMode(int displayId, int colorMode) { try { mDm.requestColorMode(displayId, colorMode); diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl index 519b86ef2bcb8..5ca4e0cc657c1 100644 --- a/core/java/android/hardware/display/IDisplayManager.aidl +++ b/core/java/android/hardware/display/IDisplayManager.aidl @@ -77,6 +77,9 @@ interface IDisplayManager { // No permissions required. boolean areUserDisabledHdrTypesAllowed(); + // No permissions required. + int[] getUserDisabledHdrTypes(); + // Requires CONFIGURE_DISPLAY_COLOR_MODE void requestColorMode(int displayId, int colorMode); diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index 1e2271abee905..bf152cb6ed22f 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -1095,6 +1095,22 @@ public final class Display { } } + /** + * @hide + * Returns the display's HDR supported types. + * + * @see #isHdr() + * @see HdrCapabilities#getSupportedHdrTypes() + */ + @TestApi + @NonNull + public int[] getReportedHdrTypes() { + synchronized (mLock) { + updateDisplayInfoLocked(); + return mDisplayInfo.hdrCapabilities.getSupportedHdrTypes(); + } + } + /** * Returns whether this display supports any HDR type. * diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 4b84ba09043d3..9d02576cefb70 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2477,6 +2477,11 @@ public final class DisplayManagerService extends SystemService { } } + @Override // Binder call + public int[] getUserDisabledHdrTypes() { + return mUserDisabledHdrTypes; + } + @Override // Binder call public void requestColorMode(int displayId, int colorMode) { mContext.enforceCallingOrSelfPermission(