Loading graphics/java/android/graphics/HardwareRenderer.java +1 −1 Original line number Diff line number Diff line Loading @@ -668,7 +668,7 @@ public class HardwareRenderer { /** @hide */ public void setTargetSdrHdrRatio(float ratio) { if (ratio < 1.f || Float.isNaN(ratio) || Float.isInfinite(ratio)) ratio = 1.f; if (ratio < 1.f || !Float.isFinite(ratio)) ratio = 1.f; nSetTargetSdrHdrRatio(mNativeProxy, ratio); } Loading libs/hwui/ColorMode.h +3 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,9 @@ enum class ColorMode { WideColorGamut = 1, // Extended range Display P3 Hdr = 2, // Extended range Display P3 10-bit // for test purposes only, not shippable due to insuffient alpha Hdr10 = 3, // Alpha 8 A8 = 4, }; Loading libs/hwui/pipeline/skia/SkiaPipeline.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -646,6 +646,11 @@ void SkiaPipeline::setSurfaceColorProperties(ColorMode colorMode) { mSurfaceColorSpace = SkColorSpace::MakeRGB( GetExtendedTransferFunction(mTargetSdrHdrRatio), SkNamedGamut::kDisplayP3); break; case ColorMode::Hdr10: mSurfaceColorType = SkColorType::kRGBA_1010102_SkColorType; mSurfaceColorSpace = SkColorSpace::MakeRGB( GetExtendedTransferFunction(mTargetSdrHdrRatio), SkNamedGamut::kDisplayP3); break; case ColorMode::A8: mSurfaceColorType = SkColorType::kAlpha_8_SkColorType; mSurfaceColorSpace = nullptr; Loading @@ -654,7 +659,7 @@ void SkiaPipeline::setSurfaceColorProperties(ColorMode colorMode) { } void SkiaPipeline::setTargetSdrHdrRatio(float ratio) { if (mColorMode == ColorMode::Hdr) { if (mColorMode == ColorMode::Hdr || mColorMode == ColorMode::Hdr10) { mTargetSdrHdrRatio = ratio; mSurfaceColorSpace = SkColorSpace::MakeRGB(GetExtendedTransferFunction(mTargetSdrHdrRatio), SkNamedGamut::kDisplayP3); Loading libs/hwui/renderthread/CanvasContext.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -301,7 +301,8 @@ void CanvasContext::setOpaque(bool opaque) { float CanvasContext::setColorMode(ColorMode mode) { if (mode != mColorMode) { if (mode == ColorMode::Hdr && !mRenderPipeline->supportsExtendedRangeHdr()) { const bool isHdr = mode == ColorMode::Hdr || mode == ColorMode::Hdr10; if (isHdr && !mRenderPipeline->supportsExtendedRangeHdr()) { mode = ColorMode::WideColorGamut; } mColorMode = mode; Loading @@ -311,13 +312,15 @@ float CanvasContext::setColorMode(ColorMode mode) { switch (mColorMode) { case ColorMode::Hdr: return 3.f; // TODO: Refine this number case ColorMode::Hdr10: return 10.f; default: return 1.f; } } float CanvasContext::targetSdrHdrRatio() const { if (mColorMode == ColorMode::Hdr) { if (mColorMode == ColorMode::Hdr || mColorMode == ColorMode::Hdr10) { return mTargetSdrHdrRatio; } else { return 1.f; Loading libs/hwui/renderthread/EglManager.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,7 @@ Result<EGLSurface, EGLint> EglManager::createSurface(EGLNativeWindowType window, // composer3 support, just treat HDR as equivalent to wide color gamut if // the GLES path is still being hit case ColorMode::Hdr: case ColorMode::Hdr10: case ColorMode::WideColorGamut: { skcms_Matrix3x3 colorGamut; LOG_ALWAYS_FATAL_IF(!colorSpace->toXYZD50(&colorGamut), Loading Loading
graphics/java/android/graphics/HardwareRenderer.java +1 −1 Original line number Diff line number Diff line Loading @@ -668,7 +668,7 @@ public class HardwareRenderer { /** @hide */ public void setTargetSdrHdrRatio(float ratio) { if (ratio < 1.f || Float.isNaN(ratio) || Float.isInfinite(ratio)) ratio = 1.f; if (ratio < 1.f || !Float.isFinite(ratio)) ratio = 1.f; nSetTargetSdrHdrRatio(mNativeProxy, ratio); } Loading
libs/hwui/ColorMode.h +3 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,9 @@ enum class ColorMode { WideColorGamut = 1, // Extended range Display P3 Hdr = 2, // Extended range Display P3 10-bit // for test purposes only, not shippable due to insuffient alpha Hdr10 = 3, // Alpha 8 A8 = 4, }; Loading
libs/hwui/pipeline/skia/SkiaPipeline.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -646,6 +646,11 @@ void SkiaPipeline::setSurfaceColorProperties(ColorMode colorMode) { mSurfaceColorSpace = SkColorSpace::MakeRGB( GetExtendedTransferFunction(mTargetSdrHdrRatio), SkNamedGamut::kDisplayP3); break; case ColorMode::Hdr10: mSurfaceColorType = SkColorType::kRGBA_1010102_SkColorType; mSurfaceColorSpace = SkColorSpace::MakeRGB( GetExtendedTransferFunction(mTargetSdrHdrRatio), SkNamedGamut::kDisplayP3); break; case ColorMode::A8: mSurfaceColorType = SkColorType::kAlpha_8_SkColorType; mSurfaceColorSpace = nullptr; Loading @@ -654,7 +659,7 @@ void SkiaPipeline::setSurfaceColorProperties(ColorMode colorMode) { } void SkiaPipeline::setTargetSdrHdrRatio(float ratio) { if (mColorMode == ColorMode::Hdr) { if (mColorMode == ColorMode::Hdr || mColorMode == ColorMode::Hdr10) { mTargetSdrHdrRatio = ratio; mSurfaceColorSpace = SkColorSpace::MakeRGB(GetExtendedTransferFunction(mTargetSdrHdrRatio), SkNamedGamut::kDisplayP3); Loading
libs/hwui/renderthread/CanvasContext.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -301,7 +301,8 @@ void CanvasContext::setOpaque(bool opaque) { float CanvasContext::setColorMode(ColorMode mode) { if (mode != mColorMode) { if (mode == ColorMode::Hdr && !mRenderPipeline->supportsExtendedRangeHdr()) { const bool isHdr = mode == ColorMode::Hdr || mode == ColorMode::Hdr10; if (isHdr && !mRenderPipeline->supportsExtendedRangeHdr()) { mode = ColorMode::WideColorGamut; } mColorMode = mode; Loading @@ -311,13 +312,15 @@ float CanvasContext::setColorMode(ColorMode mode) { switch (mColorMode) { case ColorMode::Hdr: return 3.f; // TODO: Refine this number case ColorMode::Hdr10: return 10.f; default: return 1.f; } } float CanvasContext::targetSdrHdrRatio() const { if (mColorMode == ColorMode::Hdr) { if (mColorMode == ColorMode::Hdr || mColorMode == ColorMode::Hdr10) { return mTargetSdrHdrRatio; } else { return 1.f; Loading
libs/hwui/renderthread/EglManager.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,7 @@ Result<EGLSurface, EGLint> EglManager::createSurface(EGLNativeWindowType window, // composer3 support, just treat HDR as equivalent to wide color gamut if // the GLES path is still being hit case ColorMode::Hdr: case ColorMode::Hdr10: case ColorMode::WideColorGamut: { skcms_Matrix3x3 colorGamut; LOG_ALWAYS_FATAL_IF(!colorSpace->toXYZD50(&colorGamut), Loading