diff options
author | brianosman <brianosman@google.com> | 2016-12-07 10:03:25 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-12-07 10:03:25 -0800 |
commit | 851c2386bad44fb6c453744d970237e681e693f0 (patch) | |
tree | e3907df3d936895f8eb62562263367ed62879cd2 | |
parent | 27eb22b994736318ae3d832bf16f4fad0e7e1383 (diff) |
Skip the sRGB mip-map testing on command buffer
Chromium command buffer now has the sRGB decode extension, but it doesn't
make any guarantees about the interaction with glGenerateMipmap.
BUG=skia:
Review-Url: https://codereview.chromium.org/2557603006
-rw-r--r-- | src/gpu/gl/GrGLCaps.cpp | 3 | ||||
-rw-r--r-- | src/gpu/gl/GrGLCaps.h | 2 | ||||
-rw-r--r-- | tests/SRGBMipMapTest.cpp | 6 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp index 168acdec73..5a0864e8cf 100644 --- a/src/gpu/gl/GrGLCaps.cpp +++ b/src/gpu/gl/GrGLCaps.cpp @@ -52,6 +52,7 @@ GrGLCaps::GrGLCaps(const GrContextOptions& contextOptions, fRGBAToBGRAReadbackConversionsAreSlow = false; fDoManualMipmapping = false; fSRGBDecodeDisableSupport = false; + fSRGBDecodeDisableAffectsMipmaps = false; fBlitFramebufferFlags = kNoSupport_BlitFramebufferFlag; @@ -609,6 +610,8 @@ void GrGLCaps::init(const GrContextOptions& contextOptions, } fSRGBDecodeDisableSupport = ctxInfo.hasExtension("GL_EXT_texture_sRGB_decode"); + fSRGBDecodeDisableAffectsMipmaps = fSRGBDecodeDisableSupport && + kChromium_GrGLDriver != ctxInfo.driver(); // Requires fTextureRedSupport, fTextureSwizzleSupport, msaa support, ES compatibility have // already been detected. diff --git a/src/gpu/gl/GrGLCaps.h b/src/gpu/gl/GrGLCaps.h index deb0889c82..8a83e02222 100644 --- a/src/gpu/gl/GrGLCaps.h +++ b/src/gpu/gl/GrGLCaps.h @@ -346,6 +346,7 @@ public: bool doManualMipmapping() const { return fDoManualMipmapping; } bool srgbDecodeDisableSupport() const { return fSRGBDecodeDisableSupport; } + bool srgbDecodeDisableAffectsMipmaps() const { return fSRGBDecodeDisableAffectsMipmaps; } /** * Returns a string containing the caps info. @@ -424,6 +425,7 @@ private: bool fRGBAToBGRAReadbackConversionsAreSlow : 1; bool fDoManualMipmapping : 1; bool fSRGBDecodeDisableSupport : 1; + bool fSRGBDecodeDisableAffectsMipmaps : 1; uint32_t fBlitFramebufferFlags; diff --git a/tests/SRGBMipMapTest.cpp b/tests/SRGBMipMapTest.cpp index 88f08d43d7..b963aaff4b 100644 --- a/tests/SRGBMipMapTest.cpp +++ b/tests/SRGBMipMapTest.cpp @@ -148,10 +148,14 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(SRGBMipMaps, reporter, ctxInfo) { // skbug.com/5048). On GL, we may not have sRGB decode support. In that case, rendering sRGB // textures to a legacy surface produces nonsense, so this part of the test is meaningless. // + // We also skip this part of the test on command buffer (via srgbDecodeDisableAffectsMipmaps), + // because that implementation of the extension doesn't ensure that mips respect the setting. + // // TODO: Once Vulkan supports legacy mip-mapping, we can promote this to GrCaps. Right now, // Vulkan has most of the functionality, but not the mip-mapping part that's being tested here. GrGLGpu* glGpu = static_cast<GrGLGpu*>(context->getGpu()); - if (glGpu->glCaps().srgbDecodeDisableSupport()) { + if (glGpu->glCaps().srgbDecodeDisableSupport() && + glGpu->glCaps().srgbDecodeDisableAffectsMipmaps()) { read_and_check_pixels(reporter, l32RenderTargetContext->asTexture().get(), expectedLinear, error, "re-render as linear"); } |