aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar brianosman <brianosman@google.com>2016-12-07 10:03:25 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-12-07 10:03:25 -0800
commit851c2386bad44fb6c453744d970237e681e693f0 (patch)
treee3907df3d936895f8eb62562263367ed62879cd2
parent27eb22b994736318ae3d832bf16f4fad0e7e1383 (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.cpp3
-rw-r--r--src/gpu/gl/GrGLCaps.h2
-rw-r--r--tests/SRGBMipMapTest.cpp6
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");
}