Index: src/gpu/gl/GrGLCaps.cpp |
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp |
index 168acdec735db31e89c8389f1fd12073642f31b9..ec0f6288b4b550899650208d1a64a806bacfb5b8 100644 |
--- a/src/gpu/gl/GrGLCaps.cpp |
+++ b/src/gpu/gl/GrGLCaps.cpp |
@@ -51,7 +51,6 @@ |
fMipMapLevelAndLodControlSupport = false; |
fRGBAToBGRAReadbackConversionsAreSlow = false; |
fDoManualMipmapping = false; |
- fSRGBDecodeDisableSupport = false; |
fBlitFramebufferFlags = kNoSupport_BlitFramebufferFlag; |
@@ -608,11 +607,9 @@ |
fDoManualMipmapping = true; |
} |
- fSRGBDecodeDisableSupport = ctxInfo.hasExtension("GL_EXT_texture_sRGB_decode"); |
- |
// Requires fTextureRedSupport, fTextureSwizzleSupport, msaa support, ES compatibility have |
// already been detected. |
- this->initConfigTable(contextOptions, ctxInfo, gli, shaderCaps); |
+ this->initConfigTable(ctxInfo, gli, shaderCaps); |
this->applyOptionsOverrides(contextOptions); |
shaderCaps->applyOptionsOverrides(contextOptions); |
@@ -1392,8 +1389,7 @@ |
return true; |
} |
-void GrGLCaps::initConfigTable(const GrContextOptions& contextOptions, |
- const GrGLContextInfo& ctxInfo, const GrGLInterface* gli, |
+void GrGLCaps::initConfigTable(const GrGLContextInfo& ctxInfo, const GrGLInterface* gli, |
GrShaderCaps* shaderCaps) { |
/* |
Comments on renderability of configs on various GL versions. |
@@ -1579,37 +1575,19 @@ |
fSRGBWriteControl = true; |
} |
} else { |
- fSRGBSupport = ctxInfo.version() >= GR_GL_VER(3,0) || ctxInfo.hasExtension("GL_EXT_sRGB"); |
-#if defined(SK_CPU_X86) |
- if (kPowerVRRogue_GrGLRenderer == ctxInfo.renderer()) { |
- // NexusPlayer has strange bugs with sRGB (skbug.com/4148). This is a targeted fix to |
- // blacklist that device (and any others that might be sharing the same driver). |
- fSRGBSupport = false; |
- } |
-#endif |
+ // See https://bug.skia.org/4148 for PowerVR issue. |
+ fSRGBSupport = kPowerVRRogue_GrGLRenderer != ctxInfo.renderer() && |
+ (ctxInfo.version() >= GR_GL_VER(3,0) || ctxInfo.hasExtension("GL_EXT_sRGB")); |
// ES through 3.1 requires EXT_srgb_write_control to support toggling |
// sRGB writing for destinations. |
// See https://bug.skia.org/5329 for Adreno4xx issue. |
fSRGBWriteControl = kAdreno4xx_GrGLRenderer != ctxInfo.renderer() && |
ctxInfo.hasExtension("GL_EXT_sRGB_write_control"); |
} |
- if (contextOptions.fRequireDecodeDisableForSRGB && !fSRGBDecodeDisableSupport) { |
- // To support "legacy" L32 mode, we require the ability to turn off sRGB decode. Clients |
- // can opt-out of that requirement, if they intend to always do linear blending. |
+ if (!ctxInfo.hasExtension("GL_EXT_texture_sRGB_decode")) { |
+ // To support "legacy" L32 mode, we require the ability to turn off sRGB decode: |
fSRGBSupport = false; |
} |
- |
- // This is very conservative, if we're on a platform where N32 is BGRA, and using ES, disable |
- // all sRGB support. Too much code relies on creating surfaces with N32 + sRGB colorspace, |
- // and sBGRA is basically impossible to support on any version of ES (with our current code). |
- // In particular, ES2 doesn't support sBGRA at all, and even in ES3, there is no valid pair |
- // of formats that can be used for TexImage calls to upload BGRA data to sRGBA (which is what |
- // we *have* to use as the internal format, because sBGRA doesn't exist). This primarily |
- // affects Windows. |
- if (kSkia8888_GrPixelConfig == kBGRA_8888_GrPixelConfig && kGLES_GrGLStandard == standard) { |
- fSRGBSupport = false; |
- } |
- |
fConfigTable[kSRGBA_8888_GrPixelConfig].fFormats.fBaseInternalFormat = GR_GL_SRGB_ALPHA; |
fConfigTable[kSRGBA_8888_GrPixelConfig].fFormats.fSizedInternalFormat = GR_GL_SRGB8_ALPHA8; |
// GL does not do srgb<->rgb conversions when transferring between cpu and gpu. Thus, the |