Merge "Address VRI review comments"
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -150,7 +150,7 @@ void RenderProxy::setOpaque(bool opaque) {
|
||||
float RenderProxy::setColorMode(ColorMode mode) {
|
||||
// We only need to figure out what the renderer supports for HDR, otherwise this can stay
|
||||
// an async call since we already know the return value
|
||||
if (mode == ColorMode::Hdr) {
|
||||
if (mode == ColorMode::Hdr || mode == ColorMode::Hdr10) {
|
||||
return mRenderThread.queue().runSync(
|
||||
[=]() -> float { return mContext->setColorMode(mode); });
|
||||
} else {
|
||||
|
||||
@@ -201,7 +201,7 @@ bool VulkanSurface::InitializeWindowInfoStruct(ANativeWindow* window, ColorMode
|
||||
outWindowInfo->colorspace = colorSpace;
|
||||
outWindowInfo->colorMode = colorMode;
|
||||
|
||||
if (colorMode == ColorMode::Hdr) {
|
||||
if (colorMode == ColorMode::Hdr || colorMode == ColorMode::Hdr10) {
|
||||
outWindowInfo->dataspace =
|
||||
static_cast<android_dataspace>(STANDARD_DCI_P3 | TRANSFER_SRGB | RANGE_EXTENDED);
|
||||
} else {
|
||||
@@ -509,7 +509,7 @@ void VulkanSurface::setColorSpace(sk_sp<SkColorSpace> colorSpace) {
|
||||
mNativeBuffers[i].skSurface.reset();
|
||||
}
|
||||
|
||||
if (mWindowInfo.colorMode == ColorMode::Hdr) {
|
||||
if (mWindowInfo.colorMode == ColorMode::Hdr || mWindowInfo.colorMode == ColorMode::Hdr10) {
|
||||
mWindowInfo.dataspace =
|
||||
static_cast<android_dataspace>(STANDARD_DCI_P3 | TRANSFER_SRGB | RANGE_EXTENDED);
|
||||
} else {
|
||||
@@ -521,7 +521,7 @@ void VulkanSurface::setColorSpace(sk_sp<SkColorSpace> colorSpace) {
|
||||
"Unsupported colorspace");
|
||||
|
||||
if (mNativeWindow) {
|
||||
int err = native_window_set_buffers_data_space(mNativeWindow.get(), mWindowInfo.dataspace);
|
||||
int err = ANativeWindow_setBuffersDataSpace(mNativeWindow.get(), mWindowInfo.dataspace);
|
||||
if (err != 0) {
|
||||
ALOGE("VulkanSurface::setColorSpace() native_window_set_buffers_data_space(%d) "
|
||||
"failed: %s (%d)",
|
||||
|
||||
Reference in New Issue
Block a user