| Index: src/gpu/gl/GrGLCaps.cpp
|
| diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
|
| index 382bfba68daf67831f9f120be0c358e5b2f0a54b..1488e75c293c4af9f1f8032ad9d75e6bb0d65157 100644
|
| --- a/src/gpu/gl/GrGLCaps.cpp
|
| +++ b/src/gpu/gl/GrGLCaps.cpp
|
| @@ -386,17 +386,21 @@ void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa
|
|
|
| fMSFBOType = kNone_MSFBOType;
|
| if (kDesktop_GrGLBinding != ctxInfo.binding()) {
|
| - if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) {
|
| - // chrome's extension is equivalent to the EXT msaa
|
| - // and fbo_blit extensions.
|
| - fMSFBOType = kDesktop_EXT_MSFBOType;
|
| - } else if (ctxInfo.hasExtension("GL_APPLE_framebuffer_multisample")) {
|
| - fMSFBOType = kES_Apple_MSFBOType;
|
| - } else if (ctxInfo.hasExtension("GL_EXT_multisampled_render_to_texture")) {
|
| - fMSFBOType = kES_EXT_MsToTexture_MSFBOType;
|
| - } else if (ctxInfo.hasExtension("GL_IMG_multisampled_render_to_texture")) {
|
| - fMSFBOType = kES_IMG_MsToTexture_MSFBOType;
|
| - }
|
| + // We prefer the EXT/IMG extension over ES3 MSAA because we've observed
|
| + // ES3 driver bugs on at least one device with a tiled GPU (N10).
|
| + if (ctxInfo.hasExtension("GL_EXT_multisampled_render_to_texture")) {
|
| + fMSFBOType = kES_EXT_MsToTexture_MSFBOType;
|
| + } else if (ctxInfo.hasExtension("GL_IMG_multisampled_render_to_texture")) {
|
| + fMSFBOType = kES_IMG_MsToTexture_MSFBOType;
|
| + } else if (!GR_GL_IGNORE_ES3_MSAA && ctxInfo.version() >= GR_GL_VER(3,0)) {
|
| + fMSFBOType = GrGLCaps::kES_3_0_MSFBOType;
|
| + } else if (ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_multisample")) {
|
| + // chrome's extension is equivalent to the EXT msaa
|
| + // and fbo_blit extensions.
|
| + fMSFBOType = kDesktop_EXT_MSFBOType;
|
| + } else if (ctxInfo.hasExtension("GL_APPLE_framebuffer_multisample")) {
|
| + fMSFBOType = kES_Apple_MSFBOType;
|
| + }
|
| } else {
|
| if ((ctxInfo.version() >= GR_GL_VER(3,0)) ||
|
| ctxInfo.hasExtension("GL_ARB_framebuffer_object")) {
|
| @@ -569,6 +573,7 @@ void GrGLCaps::print() const {
|
| "None",
|
| "ARB",
|
| "EXT",
|
| + "ES 3.0",
|
| "Apple",
|
| "IMG MS To Texture",
|
| "EXT MS To Texture",
|
| @@ -576,9 +581,10 @@ void GrGLCaps::print() const {
|
| GR_STATIC_ASSERT(0 == kNone_MSFBOType);
|
| GR_STATIC_ASSERT(1 == kDesktop_ARB_MSFBOType);
|
| GR_STATIC_ASSERT(2 == kDesktop_EXT_MSFBOType);
|
| - GR_STATIC_ASSERT(3 == kES_Apple_MSFBOType);
|
| - GR_STATIC_ASSERT(4 == kES_IMG_MsToTexture_MSFBOType);
|
| - GR_STATIC_ASSERT(5 == kES_EXT_MsToTexture_MSFBOType);
|
| + GR_STATIC_ASSERT(3 == kES_3_0_MSFBOType);
|
| + GR_STATIC_ASSERT(4 == kES_Apple_MSFBOType);
|
| + GR_STATIC_ASSERT(5 == kES_IMG_MsToTexture_MSFBOType);
|
| + GR_STATIC_ASSERT(6 == kES_EXT_MsToTexture_MSFBOType);
|
| GR_STATIC_ASSERT(GR_ARRAY_COUNT(kMSFBOExtStr) == kLast_MSFBOType + 1);
|
|
|
| static const char* kFBFetchTypeStr[] = {
|
|
|