Use ColorSpace#getFromDataSpace in SurfaceControl#getCompositionColorSpaces instead of hardcoded conversion.

Bug: 268701910
Test: builds
Change-Id: I8de54872cf64813439ac21a2e8f924031902b425
This commit is contained in:
Sally Qi
2023-02-10 22:43:30 +00:00
parent 7357be30dd
commit 938309fa09

View File

@@ -742,13 +742,6 @@ public final class SurfaceControl implements Parcelable {
*/
public static final int POWER_MODE_ON_SUSPEND = 4;
/**
* internal representation of how to interpret pixel value, used only to convert to ColorSpace.
*/
private static final int INTERNAL_DATASPACE_SRGB = 142671872;
private static final int INTERNAL_DATASPACE_DISPLAY_P3 = 143261696;
private static final int INTERNAL_DATASPACE_SCRGB = 411107328;
private void assignNativeObject(long nativeObject, String callsite) {
if (mNativeObject != 0) {
release();
@@ -2171,18 +2164,9 @@ public final class SurfaceControl implements Parcelable {
ColorSpace[] colorSpaces = { srgb, srgb };
if (dataspaces.length == 2) {
for (int i = 0; i < 2; ++i) {
switch(dataspaces[i]) {
case INTERNAL_DATASPACE_DISPLAY_P3:
colorSpaces[i] = ColorSpace.get(ColorSpace.Named.DISPLAY_P3);
break;
case INTERNAL_DATASPACE_SCRGB:
colorSpaces[i] = ColorSpace.get(ColorSpace.Named.EXTENDED_SRGB);
break;
case INTERNAL_DATASPACE_SRGB:
// Other dataspace is not recognized, use SRGB color space instead,
// the default value of the array is already SRGB, thus do nothing.
default:
break;
ColorSpace cs = ColorSpace.getFromDataSpace(dataspaces[i]);
if (cs != null) {
colorSpaces[i] = cs;
}
}
}