diff options
author | Brian Osman <brianosman@google.com> | 2019-01-23 10:41:20 -0500 |
---|---|---|
committer | Derek Sollenberger <djsollen@google.com> | 2019-01-24 16:05:05 +0000 |
commit | e0cf597556307945a45bcd1ed7154604d182ba77 (patch) | |
tree | dc4d7174efaf87a38f1feeb94efb2baf4b6f8c48 /libs/hwui/renderthread/EglManager.cpp | |
parent | 8d3707bbd5ad908cfa405ce8822a75a04adddb65 (diff) |
Remove use of SkColorSpace::Gamut enum
Get the gamut matrix from the color space, compare against sRGB/P3.
Test: Refactoring CL.
Change-Id: I9f5bcae8c1f637919ee9da892266ea882f16208c
Diffstat (limited to 'libs/hwui/renderthread/EglManager.cpp')
-rw-r--r-- | libs/hwui/renderthread/EglManager.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/libs/hwui/renderthread/EglManager.cpp b/libs/hwui/renderthread/EglManager.cpp index 8cd97ed20215..2cc3f362e172 100644 --- a/libs/hwui/renderthread/EglManager.cpp +++ b/libs/hwui/renderthread/EglManager.cpp @@ -132,11 +132,13 @@ void EglManager::initialize() { createPBufferSurface(); makeCurrent(mPBufferSurface, nullptr, /* force */ true); - SkColorSpace::Gamut wideColorGamut = DeviceInfo::get()->getWideColorGamut(); + skcms_Matrix3x3 wideColorGamut; + LOG_ALWAYS_FATAL_IF(!DeviceInfo::get()->getWideColorSpace()->toXYZD50(&wideColorGamut), + "Could not get gamut matrix from wideColorSpace"); bool hasWideColorSpaceExtension = false; - if (wideColorGamut == SkColorSpace::Gamut::kDCIP3_D65_Gamut) { + if (memcmp(&wideColorGamut, &SkNamedGamut::kDCIP3, sizeof(wideColorGamut)) == 0) { hasWideColorSpaceExtension = EglExtensions.displayP3; - } else if (wideColorGamut == SkColorSpace::Gamut::kSRGB_Gamut) { + } else if (memcmp(&wideColorGamut, &SkNamedGamut::kSRGB, sizeof(wideColorGamut)) == 0) { hasWideColorSpaceExtension = EglExtensions.scRGB; } else { LOG_ALWAYS_FATAL("Unsupported wide color space."); @@ -297,7 +299,7 @@ void EglManager::createPBufferSurface() { Result<EGLSurface, EGLint> EglManager::createSurface(EGLNativeWindowType window, ColorMode colorMode, - SkColorSpace::Gamut colorGamut) { + sk_sp<SkColorSpace> colorSpace) { LOG_ALWAYS_FATAL_IF(!hasEglContext(), "Not initialized"); bool wideColorGamut = colorMode == ColorMode::WideColorGamut && mHasWideColorGamutSupport && @@ -330,15 +332,15 @@ Result<EGLSurface, EGLint> EglManager::createSurface(EGLNativeWindowType window, if (EglExtensions.glColorSpace) { attribs[0] = EGL_GL_COLORSPACE_KHR; if (wideColorGamut) { - switch (colorGamut) { - case SkColorSpace::Gamut::kDCIP3_D65_Gamut: - attribs[1] = EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT; - break; - case SkColorSpace::Gamut::kSRGB_Gamut: - attribs[1] = EGL_GL_COLORSPACE_SCRGB_EXT; - break; - default: - LOG_ALWAYS_FATAL("Unreachable: unsupported wide color space."); + skcms_Matrix3x3 colorGamut; + LOG_ALWAYS_FATAL_IF(!colorSpace->toXYZD50(&colorGamut), + "Could not get gamut matrix from color space"); + if (memcmp(&colorGamut, &SkNamedGamut::kDCIP3, sizeof(colorGamut)) == 0) { + attribs[1] = EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT; + } else if (memcmp(&colorGamut, &SkNamedGamut::kSRGB, sizeof(colorGamut)) == 0) { + attribs[1] = EGL_GL_COLORSPACE_SCRGB_EXT; + } else { + LOG_ALWAYS_FATAL("Unreachable: unsupported wide color space."); } } else { attribs[1] = EGL_GL_COLORSPACE_LINEAR_KHR; |