Index: include/gpu/gl/GrGLInterface.h |
diff --git a/include/gpu/gl/GrGLInterface.h b/include/gpu/gl/GrGLInterface.h |
index 67d6840e423e4dab45213040e243057cf450dff6..de1b29143faa58daa9b85127a47ff8e246797f58 100644 |
--- a/include/gpu/gl/GrGLInterface.h |
+++ b/include/gpu/gl/GrGLInterface.h |
@@ -229,7 +229,31 @@ public: |
GLPtr<GrGLReadBufferProc> fReadBuffer; |
GLPtr<GrGLReadPixelsProc> fReadPixels; |
GLPtr<GrGLRenderbufferStorageProc> fRenderbufferStorage; |
+ |
+#if !GR_GL_IGNORE_ES3_MSAA |
+ // On OpenGL ES there are multiple incompatible extensions that add support for MSAA |
+ // and ES3 adds MSAA support to the standard. On an ES3 driver we may still use the |
+ // older extensions for performance reasons or due to ES3 driver bugs. We want the function |
+ // that creates the GrGLInterface to provide all available functions and internally |
+ // we will select among them. They all have a method called glRenderbufferStorageMultisample*. |
+ // So we have separate function pointers for GL_IMG/EXT_multisampled_to_texture, |
+ // GL_CHROMIUM/ANGLE_framebuffer_multisample/ES3, and GL_APPLE_framebuffer_multisample |
+ // variations. |
+ // |
+ // If a driver supports multiple GL_ARB_framebuffer_multisample-style extensions then we will |
+ // assume the function pointers for the standard (or equivalent GL_ARB) version have |
+ // been preferred over GL_EXT, GL_CHROMIUM, or GL_ANGLE variations that have reduced |
+ // functionality. |
+ |
+ // GL_EXT_multisampled_render_to_texture (preferred) or GL_IMG_multisampled_render_to_texture |
+ GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisampleES2EXT; |
+ // GL_APPLE_framebuffer_multisample |
+ GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisampleES2APPLE; |
+#endif |
+ // This is used to store the pointer for GL_ARB/EXT/ANGLE/CHROMIUM_framebuffer_multisample or |
+ // the standard function in ES3+ or GL 3.0+. |
GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisample; |
+ |
GLPtr<GrGLRenderbufferStorageMultisampleCoverageProc> fRenderbufferStorageMultisampleCoverage; |
GLPtr<GrGLResolveMultisampleFramebufferProc> fResolveMultisampleFramebuffer; |
GLPtr<GrGLScissorProc> fScissor; |