Index: src/gpu/gl/GrGLCaps.cpp |
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp |
index d95e10ba64d80d3c53ad73e48e725db38d299161..599e375c231b3e1f4e2992b163d20d2058ce98d5 100644 |
--- a/src/gpu/gl/GrGLCaps.cpp |
+++ b/src/gpu/gl/GrGLCaps.cpp |
@@ -306,11 +306,19 @@ void GrGLCaps::init(const GrContextOptions& contextOptions, |
fShaderCaps->pathRenderingSupport()) { |
fUsesMixedSamples = ctxInfo.hasExtension("GL_NV_framebuffer_mixed_samples") || |
ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_mixed_samples"); |
- // Workaround NVIDIA bug related to glInvalidateFramebuffer and mixed samples. |
- if (fUsesMixedSamples && (kNVIDIA_GrGLDriver == ctxInfo.driver() || |
- kChromium_GrGLDriver == ctxInfo.driver())) { |
- fDiscardRenderTargetSupport = false; |
- fInvalidateFBType = kNone_InvalidateFBType; |
+ if (fUsesMixedSamples) { |
+ if (kNVIDIA_GrGLDriver == ctxInfo.driver() || |
+ kChromium_GrGLDriver == ctxInfo.driver()) { |
+ // Workaround NVIDIA bug related to glInvalidateFramebuffer and mixed samples. |
+ fDiscardRenderTargetSupport = false; |
+ fInvalidateFBType = kNone_InvalidateFBType; |
+ } |
+ // Raster multisample is only useful to us when coverage modulation is also supported, |
+ // as defined by mixed samples. |
+ fRasterMultisampleSupport = ctxInfo.hasExtension("GL_EXT_raster_multisample"); |
+ if (fRasterMultisampleSupport) { |
+ GR_GL_GetIntegerv(gli, GR_GL_MAX_RASTER_SAMPLES, &fMaxRasterSamples); |
+ } |
} |
} |