GrGLInterface.h revision a3b15ed0373b873d4c497b51384b8c07d751753a
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 659a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com */ 759a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 859a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com#ifndef GrGLInterface_DEFINED 959a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com#define GrGLInterface_DEFINED 1059a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 11637d5e929708db8eace06b81fa3049141f9a07efbsalomon@google.com#include "GrGLFunctions.h" 12a4de8c257ea0be8ff7081f645249b6afe5c48e7ecommit-bot@chromium.org#include "SkRefCnt.h" 1359a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 1459a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com//////////////////////////////////////////////////////////////////////////////// 1559a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 1659a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com/** 1789ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com * Classifies GL contexts (currently as Desktop vs. ES2). This is a bitfield. 1889ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com * A GrGLInterface (defined below) may support multiple bindings. 1989ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com */ 2089ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.comenum GrGLBinding { 2189ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com kNone_GrGLBinding = 0x0, 2289ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com 2389ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com kDesktop_GrGLBinding = 0x01, 24eb170703fcd46bba729f2fdf7cd32460baaaaf06bsalomon@google.com kES_GrGLBinding = 0x02, // ES2+ only 2589ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com 2689ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com // for iteration of GrGLBindings 27b447d215772a5984dc776a8dc058e0711d566c04bsalomon@google.com kFirstGrGLBinding = kDesktop_GrGLBinding, 28eb170703fcd46bba729f2fdf7cd32460baaaaf06bsalomon@google.com kLastGrGLBinding = kES_GrGLBinding 2989ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com}; 3089ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com 3146b450a04973a0869c3e4c5fce1dc5bdb77042aabsalomon@google.com// Temporary alias until Chromium can be updated. 3246b450a04973a0869c3e4c5fce1dc5bdb77042aabsalomon@google.comstatic const GrGLBinding kES2_GrGLBinding = kES_GrGLBinding; 3346b450a04973a0869c3e4c5fce1dc5bdb77042aabsalomon@google.com 3489ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com//////////////////////////////////////////////////////////////////////////////// 3589ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com 3689ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com/** 370b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * Rather than depend on platform-specific GL headers and libraries, we require 380b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * the client to provide a struct of GL function pointers. This struct can be 390b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * specified per-GrContext as a parameter to GrContext::Create. If NULL is 40a3b15ed0373b873d4c497b51384b8c07d751753acommit-bot@chromium.org * passed to Create then a "default" GL interface is created. If the default is 410b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * also NULL GrContext creation will fail. 420b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * 436fb736fc2ea5f3f7ac44494211cc6755180ca192bsalomon@google.com * The default interface is returned by GrGLDefaultInterface. This function's 440da3719050473344b6013fd7b614611984f20effrobertphillips@google.com * implementation is platform-specific. Several have been provided, along with 45a3b15ed0373b873d4c497b51384b8c07d751753acommit-bot@chromium.org * an implementation that simply returns NULL. 4656bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com * 4756bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com * By defining GR_GL_PER_GL_CALL_IFACE_CALLBACK to 1 the client can specify a 4856bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com * callback function that will be called prior to each GL function call. See 4956bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com * comments in GrGLConfig.h 5059a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com */ 510b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com 5259a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.comstruct GrGLInterface; 5359a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 546fb736fc2ea5f3f7ac44494211cc6755180ca192bsalomon@google.comconst GrGLInterface* GrGLDefaultInterface(); 5559a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 5657f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com/** 5757f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com * Creates a GrGLInterface for a "native" GL context (e.g. WGL on windows, 58a3b15ed0373b873d4c497b51384b8c07d751753acommit-bot@chromium.org * GLX on linux, AGL on Mac). The interface is only valid for the GL context 59a3b15ed0373b873d4c497b51384b8c07d751753acommit-bot@chromium.org * that is current when the interface is created. 6057f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com */ 61373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.comconst GrGLInterface* GrGLCreateNativeInterface(); 62373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com 63d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#if SK_MESA 6457f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com/** 6557f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com * Creates a GrGLInterface for an OSMesa context. 6657f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com */ 67373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.comconst GrGLInterface* GrGLCreateMesaInterface(); 68d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#endif 69d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com 70d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#if SK_ANGLE 71d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com/** 72d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com * Creates a GrGLInterface for an ANGLE context. 73d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com */ 74d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.comconst GrGLInterface* GrGLCreateANGLEInterface(); 75d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#endif 76373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com 7774913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com/** 7874913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com * Creates a null GrGLInterface that doesn't draw anything. Used for measuring 7974913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com * CPU overhead. 8074913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com */ 81aae7c2a5b7a11616879e6179357cf38f5bff53aecommit-bot@chromium.orgconst SK_API GrGLInterface* GrGLCreateNullInterface(); 8274913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com 830da3719050473344b6013fd7b614611984f20effrobertphillips@google.com/** 84fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com * Creates a debugging GrGLInterface that doesn't draw anything. Used for 850da3719050473344b6013fd7b614611984f20effrobertphillips@google.com * finding memory leaks and invalid memory accesses. 860da3719050473344b6013fd7b614611984f20effrobertphillips@google.com */ 870da3719050473344b6013fd7b614611984f20effrobertphillips@google.comconst GrGLInterface* GrGLCreateDebugInterface(); 880da3719050473344b6013fd7b614611984f20effrobertphillips@google.com 8956bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com#if GR_GL_PER_GL_FUNC_CALLBACK 9056bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.comtypedef void (*GrGLInterfaceCallbackProc)(const GrGLInterface*); 9156bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.comtypedef intptr_t GrGLInterfaceCallbackData; 9256bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com#endif 9356bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com 94bf2a46941e8fdebfcd24ea8f7184779021898225bsalomon@google.com/* 95cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * GrContext uses the following interface to make all calls into OpenGL. When a 96cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * GrContext is created it is given a GrGLInterface. The interface's function 97cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * pointers must be valid for the OpenGL context associated with the GrContext. 98cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * On some platforms, such as Windows, function pointers for OpenGL extensions 99cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * may vary between OpenGL contexts. So the caller must be careful to use a 100cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * GrGLInterface initialized for the correct context. All functions that should 101cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * be available based on the OpenGL's version and extension string must be 102cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * non-NULL or GrContext creation will fail. This can be tested with the 103cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * validate() method when the OpenGL context has been made current. 104bf2a46941e8fdebfcd24ea8f7184779021898225bsalomon@google.com */ 105a4de8c257ea0be8ff7081f645249b6afe5c48e7ecommit-bot@chromium.orgstruct SK_API GrGLInterface : public SkRefCnt { 106ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.comprivate: 1079c1f1ac5d399c73f5f331bdf7b392ea7f0c44dafbsalomon@google.com // simple wrapper class that exists only to initialize a pointer to NULL 108ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com template <typename FNPTR_TYPE> class GLPtr { 109ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com public: 110ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr() : fPtr(NULL) {} 111ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr operator =(FNPTR_TYPE ptr) { fPtr = ptr; return *this; } 112ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com operator FNPTR_TYPE() const { return fPtr; } 113ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com private: 114ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com FNPTR_TYPE fPtr; 115ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com }; 116ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com 117a4de8c257ea0be8ff7081f645249b6afe5c48e7ecommit-bot@chromium.org typedef SkRefCnt INHERITED; 11815e9d3e66e161ce23df30bc13f8a0c87d196b463robertphillips@google.com 119ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.compublic: 12015e9d3e66e161ce23df30bc13f8a0c87d196b463robertphillips@google.com SK_DECLARE_INST_COUNT(GrGLInterface) 12115e9d3e66e161ce23df30bc13f8a0c87d196b463robertphillips@google.com 1220b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com GrGLInterface(); 1230b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com 12489ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com // Validates that the GrGLInterface supports a binding. This means that 12589ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com // the GrGLinterface advertises the binding in fBindingsExported and all 126cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com // the necessary function pointers have been initialized. The interface is 127cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com // validated for the current OpenGL context. 12889ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com bool validate(GrGLBinding binding) const; 12989ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com 130b65e0cb8ad8a690498142d2b0097be250b0c7dfbtwiz@google.com // Indicator variable specifying the type of GL implementation 131ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com // exported: GLES2 and/or Desktop. 132b65e0cb8ad8a690498142d2b0097be250b0c7dfbtwiz@google.com GrGLBinding fBindingsExported; 133b65e0cb8ad8a690498142d2b0097be250b0c7dfbtwiz@google.com 134ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLActiveTextureProc> fActiveTexture; 135ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLAttachShaderProc> fAttachShader; 136ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBeginQueryProc> fBeginQuery; 137ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBindAttribLocationProc> fBindAttribLocation; 138ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBindBufferProc> fBindBuffer; 139ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBindFragDataLocationProc> fBindFragDataLocation; 140ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBindFragDataLocationIndexedProc> fBindFragDataLocationIndexed; 141ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBindFramebufferProc> fBindFramebuffer; 142ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBindRenderbufferProc> fBindRenderbuffer; 143ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBindTextureProc> fBindTexture; 144ecd84842b3f65918eb040c53391172b6413fd7adbsalomon@google.com GLPtr<GrGLBindVertexArrayProc> fBindVertexArray; 145ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBlendColorProc> fBlendColor; 146ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBlendFuncProc> fBlendFunc; 147ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBlitFramebufferProc> fBlitFramebuffer; 148ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBufferDataProc> fBufferData; 149ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLBufferSubDataProc> fBufferSubData; 150ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLCheckFramebufferStatusProc> fCheckFramebufferStatus; 151ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLClearProc> fClear; 152ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLClearColorProc> fClearColor; 153ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLClearStencilProc> fClearStencil; 15446fbfe0cd1bbe60fd15ce52e784f5d51450ff5fdcommit-bot@chromium.org GLPtr<GrGLClientActiveTextureProc> fClientActiveTexture; 155ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLColorMaskProc> fColorMask; 156ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLCompileShaderProc> fCompileShader; 157ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLCompressedTexImage2DProc> fCompressedTexImage2D; 15898168bb394bbb10cd7d3468828e7dc4376a70e12commit-bot@chromium.org GLPtr<GrGLCopyTexSubImage2DProc> fCopyTexSubImage2D; 159ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLCreateProgramProc> fCreateProgram; 160ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLCreateShaderProc> fCreateShader; 161ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLCullFaceProc> fCullFace; 162ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDeleteBuffersProc> fDeleteBuffers; 163ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDeleteFramebuffersProc> fDeleteFramebuffers; 164ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDeleteProgramProc> fDeleteProgram; 165ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDeleteQueriesProc> fDeleteQueries; 166ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDeleteRenderbuffersProc> fDeleteRenderbuffers; 167ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDeleteShaderProc> fDeleteShader; 168ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDeleteTexturesProc> fDeleteTextures; 169ecd84842b3f65918eb040c53391172b6413fd7adbsalomon@google.com GLPtr<GrGLDeleteVertexArraysProc> fDeleteVertexArrays; 170ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDepthMaskProc> fDepthMask; 171ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDisableProc> fDisable; 17246fbfe0cd1bbe60fd15ce52e784f5d51450ff5fdcommit-bot@chromium.org GLPtr<GrGLDisableClientStateProc> fDisableClientState; 173ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDisableVertexAttribArrayProc> fDisableVertexAttribArray; 174ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDrawArraysProc> fDrawArrays; 175ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDrawBufferProc> fDrawBuffer; 176ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDrawBuffersProc> fDrawBuffers; 177ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLDrawElementsProc> fDrawElements; 178ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLEnableProc> fEnable; 17946fbfe0cd1bbe60fd15ce52e784f5d51450ff5fdcommit-bot@chromium.org GLPtr<GrGLEnableClientStateProc> fEnableClientState; 180ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLEnableVertexAttribArrayProc> fEnableVertexAttribArray; 181ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLEndQueryProc> fEndQuery; 182ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLFinishProc> fFinish; 183ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLFlushProc> fFlush; 184ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLFramebufferRenderbufferProc> fFramebufferRenderbuffer; 185ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLFramebufferTexture2DProc> fFramebufferTexture2D; 186f3a60c09b975f50bbd14215df10effffd2fd46e8bsalomon@google.com GLPtr<GrGLFramebufferTexture2DMultisampleProc> fFramebufferTexture2DMultisample; 187ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLFrontFaceProc> fFrontFace; 188ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGenBuffersProc> fGenBuffers; 189ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGenFramebuffersProc> fGenFramebuffers; 190cffff79a40bd7672e13b31b9801a3f3cda64875ecommit-bot@chromium.org GLPtr<GrGLGenerateMipmapProc> fGenerateMipmap; 191ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGenQueriesProc> fGenQueries; 192ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGenRenderbuffersProc> fGenRenderbuffers; 193ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGenTexturesProc> fGenTextures; 194ecd84842b3f65918eb040c53391172b6413fd7adbsalomon@google.com GLPtr<GrGLGenVertexArraysProc> fGenVertexArrays; 195ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetBufferParameterivProc> fGetBufferParameteriv; 196ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetErrorProc> fGetError; 197ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetFramebufferAttachmentParameterivProc> fGetFramebufferAttachmentParameteriv; 198ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetIntegervProc> fGetIntegerv; 199ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetQueryObjecti64vProc> fGetQueryObjecti64v; 200ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetQueryObjectivProc> fGetQueryObjectiv; 201ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetQueryObjectui64vProc> fGetQueryObjectui64v; 202ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetQueryObjectuivProc> fGetQueryObjectuiv; 203ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetQueryivProc> fGetQueryiv; 204ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetProgramInfoLogProc> fGetProgramInfoLog; 205ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetProgramivProc> fGetProgramiv; 206ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetRenderbufferParameterivProc> fGetRenderbufferParameteriv; 207ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetShaderInfoLogProc> fGetShaderInfoLog; 208ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetShaderivProc> fGetShaderiv; 209ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetStringProc> fGetString; 2101744f97ea73384b9f75b0ccee0a36a213c681d3absalomon@google.com GLPtr<GrGLGetStringiProc> fGetStringi; 211ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetTexLevelParameterivProc> fGetTexLevelParameteriv; 212ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLGetUniformLocationProc> fGetUniformLocation; 213ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLLineWidthProc> fLineWidth; 214ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLLinkProgramProc> fLinkProgram; 215f5897f83e65f18a85f71f2d3357df13c5443e89fcommit-bot@chromium.org GLPtr<GrGLLoadIdentityProc> fLoadIdentity; 216f5897f83e65f18a85f71f2d3357df13c5443e89fcommit-bot@chromium.org GLPtr<GrGLLoadMatrixfProc> fLoadMatrixf; 217ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLMapBufferProc> fMapBuffer; 218f5897f83e65f18a85f71f2d3357df13c5443e89fcommit-bot@chromium.org GLPtr<GrGLMatrixModeProc> fMatrixMode; 219ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLPixelStoreiProc> fPixelStorei; 220ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLQueryCounterProc> fQueryCounter; 221ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLReadBufferProc> fReadBuffer; 222ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLReadPixelsProc> fReadPixels; 223ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLRenderbufferStorageProc> fRenderbufferStorage; 224a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org 225a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org#if !GR_GL_IGNORE_ES3_MSAA 226a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // On OpenGL ES there are multiple incompatible extensions that add support for MSAA 227a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // and ES3 adds MSAA support to the standard. On an ES3 driver we may still use the 228a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // older extensions for performance reasons or due to ES3 driver bugs. We want the function 229a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // that creates the GrGLInterface to provide all available functions and internally 230a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // we will select among them. They all have a method called glRenderbufferStorageMultisample*. 231a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // So we have separate function pointers for GL_IMG/EXT_multisampled_to_texture, 232a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // GL_CHROMIUM/ANGLE_framebuffer_multisample/ES3, and GL_APPLE_framebuffer_multisample 233a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // variations. 234a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // 235a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // If a driver supports multiple GL_ARB_framebuffer_multisample-style extensions then we will 236a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // assume the function pointers for the standard (or equivalent GL_ARB) version have 237a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // been preferred over GL_EXT, GL_CHROMIUM, or GL_ANGLE variations that have reduced 238a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // functionality. 239a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org 240a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // GL_EXT_multisampled_render_to_texture (preferred) or GL_IMG_multisampled_render_to_texture 241a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisampleES2EXT; 242a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // GL_APPLE_framebuffer_multisample 243a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisampleES2APPLE; 244a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org#endif 245a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // This is used to store the pointer for GL_ARB/EXT/ANGLE/CHROMIUM_framebuffer_multisample or 246a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org // the standard function in ES3+ or GL 3.0+. 247ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisample; 248a8e5a06f69b7e0cb17a4b3203f0a7a1d52aa73eccommit-bot@chromium.org 249d3baf20dd1de9940717dd50b5c9ff6061561342ecommit-bot@chromium.org // Pointer to BindUniformLocationCHROMIUM from the GL_CHROMIUM_bind_uniform_location extension. 250d3baf20dd1de9940717dd50b5c9ff6061561342ecommit-bot@chromium.org GLPtr<GrGLBindUniformLocation> fBindUniformLocation; 251d3baf20dd1de9940717dd50b5c9ff6061561342ecommit-bot@chromium.org 252ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLResolveMultisampleFramebufferProc> fResolveMultisampleFramebuffer; 253ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLScissorProc> fScissor; 254ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLShaderSourceProc> fShaderSource; 255ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLStencilFuncProc> fStencilFunc; 256ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLStencilFuncSeparateProc> fStencilFuncSeparate; 257ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLStencilMaskProc> fStencilMask; 258ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLStencilMaskSeparateProc> fStencilMaskSeparate; 259ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLStencilOpProc> fStencilOp; 260ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLStencilOpSeparateProc> fStencilOpSeparate; 26146fbfe0cd1bbe60fd15ce52e784f5d51450ff5fdcommit-bot@chromium.org GLPtr<GrGLTexGenfProc> fTexGenf; 26246fbfe0cd1bbe60fd15ce52e784f5d51450ff5fdcommit-bot@chromium.org GLPtr<GrGLTexGenfvProc> fTexGenfv; 26346fbfe0cd1bbe60fd15ce52e784f5d51450ff5fdcommit-bot@chromium.org GLPtr<GrGLTexGeniProc> fTexGeni; 264ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLTexImage2DProc> fTexImage2D; 265ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLTexParameteriProc> fTexParameteri; 2664d063dea5ee9d5a62e3566a07cb8386cb1a59585bsalomon@google.com GLPtr<GrGLTexParameterivProc> fTexParameteriv; 267ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLTexSubImage2DProc> fTexSubImage2D; 268ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLTexStorage2DProc> fTexStorage2D; 269a6ffb58b109f71512bde4e14d06a655914578c8drobertphillips@google.com GLPtr<GrGLDiscardFramebufferProc> fDiscardFramebuffer; 270ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform1fProc> fUniform1f; 271ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform1iProc> fUniform1i; 272ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform1fvProc> fUniform1fv; 273ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform1ivProc> fUniform1iv; 274ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform2fProc> fUniform2f; 275ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform2iProc> fUniform2i; 276ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform2fvProc> fUniform2fv; 277ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform2ivProc> fUniform2iv; 278ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform3fProc> fUniform3f; 279ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform3iProc> fUniform3i; 280ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform3fvProc> fUniform3fv; 281ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform3ivProc> fUniform3iv; 282ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform4fProc> fUniform4f; 283ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform4iProc> fUniform4i; 284ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform4fvProc> fUniform4fv; 285ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniform4ivProc> fUniform4iv; 286ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniformMatrix2fvProc> fUniformMatrix2fv; 287ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniformMatrix3fvProc> fUniformMatrix3fv; 288ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUniformMatrix4fvProc> fUniformMatrix4fv; 289ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUnmapBufferProc> fUnmapBuffer; 290ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLUseProgramProc> fUseProgram; 291ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLVertexAttrib4fvProc> fVertexAttrib4fv; 292ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLVertexAttribPointerProc> fVertexAttribPointer; 29346fbfe0cd1bbe60fd15ce52e784f5d51450ff5fdcommit-bot@chromium.org GLPtr<GrGLVertexPointerProc> fVertexPointer; 294ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr<GrGLViewportProc> fViewport; 295271cffc77bd2fcb3458559e509634442517ca1e9bsalomon@google.com 296fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com // Experimental: Functions for GL_NV_path_rendering. These will be 297fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com // alphabetized with the above functions once this is fully supported 298fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com // (and functions we are unlikely to use will possibly be omitted). 299fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathCommandsProc> fPathCommands; 300fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathCoordsProc> fPathCoords; 301fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathSubCommandsProc> fPathSubCommands; 302fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathSubCoordsProc> fPathSubCoords; 303fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathStringProc> fPathString; 304fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathGlyphsProc> fPathGlyphs; 305fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathGlyphRangeProc> fPathGlyphRange; 306fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLWeightPathsProc> fWeightPaths; 307fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLCopyPathProc> fCopyPath; 308fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLInterpolatePathsProc> fInterpolatePaths; 309fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLTransformPathProc> fTransformPath; 310fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathParameterivProc> fPathParameteriv; 311fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathParameteriProc> fPathParameteri; 312fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathParameterfvProc> fPathParameterfv; 313fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathParameterfProc> fPathParameterf; 314fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathDashArrayProc> fPathDashArray; 315fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGenPathsProc> fGenPaths; 316fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLDeletePathsProc> fDeletePaths; 317fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLIsPathProc> fIsPath; 318fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathStencilFuncProc> fPathStencilFunc; 319fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathStencilDepthOffsetProc> fPathStencilDepthOffset; 320fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLStencilFillPathProc> fStencilFillPath; 321fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLStencilStrokePathProc> fStencilStrokePath; 322fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLStencilFillPathInstancedProc> fStencilFillPathInstanced; 323fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLStencilStrokePathInstancedProc> fStencilStrokePathInstanced; 324fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathCoverDepthFuncProc> fPathCoverDepthFunc; 325fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathColorGenProc> fPathColorGen; 326fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathTexGenProc> fPathTexGen; 327fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPathFogGenProc> fPathFogGen; 328fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLCoverFillPathProc> fCoverFillPath; 329fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLCoverStrokePathProc> fCoverStrokePath; 330fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLCoverFillPathInstancedProc> fCoverFillPathInstanced; 331fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLCoverStrokePathInstancedProc> fCoverStrokePathInstanced; 332fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathParameterivProc> fGetPathParameteriv; 333fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathParameterfvProc> fGetPathParameterfv; 334fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathCommandsProc> fGetPathCommands; 335fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathCoordsProc> fGetPathCoords; 336fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathDashArrayProc> fGetPathDashArray; 337fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathMetricsProc> fGetPathMetrics; 338fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathMetricRangeProc> fGetPathMetricRange; 339fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathSpacingProc> fGetPathSpacing; 340fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathColorGenivProc> fGetPathColorGeniv; 341fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathColorGenfvProc> fGetPathColorGenfv; 342fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathTexGenivProc> fGetPathTexGeniv; 343fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathTexGenfvProc> fGetPathTexGenfv; 344fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLIsPointInFillPathProc> fIsPointInFillPath; 345fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLIsPointInStrokePathProc> fIsPointInStrokePath; 346fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLGetPathLengthProc> fGetPathLength; 347fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com GLPtr<GrGLPointAlongPathProc> fPointAlongPath; 348fe11cb6486adfccc1a9ca9658ae25907192a8642bsalomon@google.com 34956bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com // Per-GL func callback 35056bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com#if GR_GL_PER_GL_FUNC_CALLBACK 35156bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com GrGLInterfaceCallbackProc fCallback; 35256bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com GrGLInterfaceCallbackData fCallbackData; 35356bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com#endif 35456bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com 355bf2a46941e8fdebfcd24ea8f7184779021898225bsalomon@google.com}; 35659a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 35759a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com#endif 358