| Index: src/gpu/gl/GrGLCaps.cpp
|
| diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
|
| index c2ace6cd368948d25d60f95b766895dcfd1ce740..79bb22efac0455cfad4158887f48eba86aae5fcf 100644
|
| --- a/src/gpu/gl/GrGLCaps.cpp
|
| +++ b/src/gpu/gl/GrGLCaps.cpp
|
| @@ -54,6 +54,8 @@ GrGLCaps::GrGLCaps(const GrContextOptions& contextOptions,
|
| fRGBA8888PixelsOpsAreSlow = false;
|
| fPartialFBOReadIsSlow = false;
|
|
|
| + fBlitFramebufferSupport = kNone_BlitFramebufferSupport;
|
| +
|
| fShaderCaps.reset(new GrGLSLCaps(contextOptions));
|
|
|
| this->init(contextOptions, ctxInfo, glInterface);
|
| @@ -766,15 +768,28 @@ void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa
|
| } else if (ctxInfo.hasExtension("GL_APPLE_framebuffer_multisample")) {
|
| fMSFBOType = kES_Apple_MSFBOType;
|
| }
|
| +
|
| + // Above determined the preferred MSAA approach, now decide whether glBlitFramebuffer
|
| + // is available.
|
| + if (ctxInfo.version() >= GR_GL_VER(3, 0)) {
|
| + fBlitFramebufferSupport = kFull_BlitFramebufferSupport;
|
| + } else if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) {
|
| + // The CHROMIUM extension uses the ANGLE version of glBlitFramebuffer and includes its
|
| + // limitations.
|
| + fBlitFramebufferSupport = kNoScalingNoMirroring_BlitFramebufferSupport;
|
| + }
|
| } else {
|
| if (fUsesMixedSamples) {
|
| fMSFBOType = kMixedSamples_MSFBOType;
|
| + fBlitFramebufferSupport = kFull_BlitFramebufferSupport;
|
| } else if ((ctxInfo.version() >= GR_GL_VER(3,0)) ||
|
| ctxInfo.hasExtension("GL_ARB_framebuffer_object")) {
|
| fMSFBOType = GrGLCaps::kDesktop_ARB_MSFBOType;
|
| + fBlitFramebufferSupport = kFull_BlitFramebufferSupport;
|
| } else if (ctxInfo.hasExtension("GL_EXT_framebuffer_multisample") &&
|
| ctxInfo.hasExtension("GL_EXT_framebuffer_blit")) {
|
| fMSFBOType = GrGLCaps::kDesktop_EXT_MSFBOType;
|
| + fBlitFramebufferSupport = kFull_BlitFramebufferSupport;
|
| }
|
| }
|
| }
|
|
|