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" 1290313cc36a6f43a3e9d3818aca536cd6631c222bcommit-bot@chromium.org#include "GrGLExtensions.h" 13a4de8c257ea0be8ff7081f645249b6afe5c48e7ecommit-bot@chromium.org#include "SkRefCnt.h" 1459a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 1559a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com//////////////////////////////////////////////////////////////////////////////// 1659a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 1759a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com/** 180b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * Rather than depend on platform-specific GL headers and libraries, we require 190b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * the client to provide a struct of GL function pointers. This struct can be 200b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * specified per-GrContext as a parameter to GrContext::Create. If NULL is 21a3b15ed0373b873d4c497b51384b8c07d751753acommit-bot@chromium.org * passed to Create then a "default" GL interface is created. If the default is 220b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * also NULL GrContext creation will fail. 230b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com * 246fb736fc2ea5f3f7ac44494211cc6755180ca192bsalomon@google.com * The default interface is returned by GrGLDefaultInterface. This function's 250da3719050473344b6013fd7b614611984f20effrobertphillips@google.com * implementation is platform-specific. Several have been provided, along with 26a3b15ed0373b873d4c497b51384b8c07d751753acommit-bot@chromium.org * an implementation that simply returns NULL. 2756bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com * 2856bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com * By defining GR_GL_PER_GL_CALL_IFACE_CALLBACK to 1 the client can specify a 2956bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com * callback function that will be called prior to each GL function call. See 3056bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com * comments in GrGLConfig.h 3159a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com */ 320b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com 3359a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.comstruct GrGLInterface; 3459a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 356fb736fc2ea5f3f7ac44494211cc6755180ca192bsalomon@google.comconst GrGLInterface* GrGLDefaultInterface(); 3659a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 3757f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com/** 3857f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com * Creates a GrGLInterface for a "native" GL context (e.g. WGL on windows, 39a3b15ed0373b873d4c497b51384b8c07d751753acommit-bot@chromium.org * GLX on linux, AGL on Mac). The interface is only valid for the GL context 40a3b15ed0373b873d4c497b51384b8c07d751753acommit-bot@chromium.org * that is current when the interface is created. 4157f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com */ 42373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.comconst GrGLInterface* GrGLCreateNativeInterface(); 43373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com 44d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#if SK_MESA 4557f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com/** 4657f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com * Creates a GrGLInterface for an OSMesa context. 4757f5d9854bfc78c347cb587e044fb3950f9ad298bsalomon@google.com */ 48373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.comconst GrGLInterface* GrGLCreateMesaInterface(); 49d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#endif 50d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com 51d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#if SK_ANGLE 52d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com/** 53d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com * Creates a GrGLInterface for an ANGLE context. 54d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com */ 55d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.comconst GrGLInterface* GrGLCreateANGLEInterface(); 56d3b9fbbc48c13a1b2a664cf7e01374a44c201f51robertphillips@google.com#endif 57373a6635b7190b4af4d265fdd4b70f102ec3a6fdbsalomon@google.com 5874913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com/** 5974913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com * Creates a null GrGLInterface that doesn't draw anything. Used for measuring 6074913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com * CPU overhead. 6174913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com */ 62aae7c2a5b7a11616879e6179357cf38f5bff53aecommit-bot@chromium.orgconst SK_API GrGLInterface* GrGLCreateNullInterface(); 6374913722bfe5e4b6810545891958e3d8e9c63791bsalomon@google.com 640da3719050473344b6013fd7b614611984f20effrobertphillips@google.com/** 65fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com * Creates a debugging GrGLInterface that doesn't draw anything. Used for 660da3719050473344b6013fd7b614611984f20effrobertphillips@google.com * finding memory leaks and invalid memory accesses. 670da3719050473344b6013fd7b614611984f20effrobertphillips@google.com */ 680da3719050473344b6013fd7b614611984f20effrobertphillips@google.comconst GrGLInterface* GrGLCreateDebugInterface(); 690da3719050473344b6013fd7b614611984f20effrobertphillips@google.com 7056bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com#if GR_GL_PER_GL_FUNC_CALLBACK 7156bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.comtypedef void (*GrGLInterfaceCallbackProc)(const GrGLInterface*); 7256bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.comtypedef intptr_t GrGLInterfaceCallbackData; 7356bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com#endif 7456bfc5acc210987838744eece7383bc2f6b34915bsalomon@google.com 75d8ed85101ee77ad2cb0c186a79d197698a75d246commit-bot@chromium.org/** Function that returns a new interface identical to "interface" but without support for 76d8ed85101ee77ad2cb0c186a79d197698a75d246commit-bot@chromium.org GL_NV_path_rendering. */ 77d8ed85101ee77ad2cb0c186a79d197698a75d246commit-bot@chromium.orgconst GrGLInterface* GrGLInterfaceRemoveNVPR(const GrGLInterface*); 78d8ed85101ee77ad2cb0c186a79d197698a75d246commit-bot@chromium.org 79a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org/** Function that returns a new interface identical to "interface" but with support for 80a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org test version of GL_EXT_debug_marker. */ 81a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.orgconst GrGLInterface* GrGLInterfaceAddTestDebugMarker(const GrGLInterface*, 82a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org GrGLInsertEventMarkerProc insertEventMarkerFn, 83a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org GrGLPushGroupMarkerProc pushGroupMarkerFn, 84a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org GrGLPopGroupMarkerProc popGroupMarkerFn); 85a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org 86d8ed85101ee77ad2cb0c186a79d197698a75d246commit-bot@chromium.org/** 87cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * GrContext uses the following interface to make all calls into OpenGL. When a 88cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * GrContext is created it is given a GrGLInterface. The interface's function 89cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * pointers must be valid for the OpenGL context associated with the GrContext. 90cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * On some platforms, such as Windows, function pointers for OpenGL extensions 91cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * may vary between OpenGL contexts. So the caller must be careful to use a 92cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * GrGLInterface initialized for the correct context. All functions that should 93cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * be available based on the OpenGL's version and extension string must be 94cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * non-NULL or GrContext creation will fail. This can be tested with the 95cc61b1762814ada94970ac071aa2d0a96f897363bsalomon@google.com * validate() method when the OpenGL context has been made current. 96bf2a46941e8fdebfcd24ea8f7184779021898225bsalomon@google.com */ 97a4de8c257ea0be8ff7081f645249b6afe5c48e7ecommit-bot@chromium.orgstruct SK_API GrGLInterface : public SkRefCnt { 98ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.comprivate: 999c1f1ac5d399c73f5f331bdf7b392ea7f0c44dafbsalomon@google.com // simple wrapper class that exists only to initialize a pointer to NULL 100ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com template <typename FNPTR_TYPE> class GLPtr { 101ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com public: 102ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com GLPtr() : fPtr(NULL) {} 103c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr operator=(FNPTR_TYPE ptr) { fPtr = ptr; return *this; } 104ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com operator FNPTR_TYPE() const { return fPtr; } 105ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com private: 106ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com FNPTR_TYPE fPtr; 107ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com }; 108ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.com 109c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // This is a temporary workaround to keep Chromium's GrGLInterface factories compiling until 110c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // they're updated to use the Functions struct. 111c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org template <typename FNPTR_TYPE> class GLPtrAlias { 112c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org public: 113c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtrAlias(GLPtr<FNPTR_TYPE>* base) : fBase(base) {} 114c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org void operator=(FNPTR_TYPE ptr) { *fBase = ptr; } 115c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org private: 116c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<FNPTR_TYPE>* fBase; 117c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org }; 118c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org 119a4de8c257ea0be8ff7081f645249b6afe5c48e7ecommit-bot@chromium.org typedef SkRefCnt INHERITED; 12015e9d3e66e161ce23df30bc13f8a0c87d196b463robertphillips@google.com 121ba800e22253d96a7ba6aab09e969e1581f2b487dbsalomon@google.compublic: 12215e9d3e66e161ce23df30bc13f8a0c87d196b463robertphillips@google.com SK_DECLARE_INST_COUNT(GrGLInterface) 12315e9d3e66e161ce23df30bc13f8a0c87d196b463robertphillips@google.com 1240b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com GrGLInterface(); 1250b77d6892b067ad402c9678b0226bff70599fbe2bsalomon@google.com 126d8ed85101ee77ad2cb0c186a79d197698a75d246commit-bot@chromium.org static GrGLInterface* NewClone(const GrGLInterface*); 127d8ed85101ee77ad2cb0c186a79d197698a75d246commit-bot@chromium.org 1289e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org // Validates that the GrGLInterface supports its advertised standard. This means the necessary 1299e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org // function pointers have been initialized for both the GL version and any advertised 1309e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org // extensions. 1319e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org bool validate() const; 13289ec61e33daa9cbac200d38f7c5bb8b88046999absalomon@google.com 1339e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org // Indicates the type of GL implementation 1349e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org union { 1359e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org GrGLStandard fStandard; 1369e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org GrGLStandard fBindingsExported; // Legacy name, will be remove when Chromium is updated. 1379e90aed5de82732cc9921f01388d3063a41a053bcommit-bot@chromium.org }; 138b65e0cb8ad8a690498142d2b0097be250b0c7dfbtwiz@google.com 13990313cc36a6f43a3e9d3818aca536cd6631c222bcommit-bot@chromium.org GrGLExtensions fExtensions; 14090313cc36a6f43a3e9d3818aca536cd6631c222bcommit-bot@chromium.org 141f535561b3baeb5f19c5b81fb439818bdde00d882commit-bot@chromium.org bool hasExtension(const char ext[]) const { return fExtensions.has(ext); } 14290313cc36a6f43a3e9d3818aca536cd6631c222bcommit-bot@chromium.org 143c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org /** 144c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org * The function pointers are in a struct so that we can have a compiler generated assignment 145c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org * operator. 146c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org */ 147c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org struct Functions { 148c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLActiveTextureProc> fActiveTexture; 149c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLAttachShaderProc> fAttachShader; 150c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBeginQueryProc> fBeginQuery; 151c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindAttribLocationProc> fBindAttribLocation; 152c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindBufferProc> fBindBuffer; 153c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindFragDataLocationProc> fBindFragDataLocation; 154c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindFragDataLocationIndexedProc> fBindFragDataLocationIndexed; 155c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindFramebufferProc> fBindFramebuffer; 156c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindRenderbufferProc> fBindRenderbuffer; 157c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindTextureProc> fBindTexture; 158c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindVertexArrayProc> fBindVertexArray; 159c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBlendColorProc> fBlendColor; 160c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBlendFuncProc> fBlendFunc; 161c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBlitFramebufferProc> fBlitFramebuffer; 162c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBufferDataProc> fBufferData; 163c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBufferSubDataProc> fBufferSubData; 164c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCheckFramebufferStatusProc> fCheckFramebufferStatus; 165c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLClearProc> fClear; 166c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLClearColorProc> fClearColor; 167c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLClearStencilProc> fClearStencil; 168c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLColorMaskProc> fColorMask; 169c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCompileShaderProc> fCompileShader; 170c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCompressedTexImage2DProc> fCompressedTexImage2D; 17137d20f75320e8182f4cdbce5f3d59a339f915e05krajcevski GLPtr<GrGLCompressedTexSubImage2DProc> fCompressedTexSubImage2D; 172c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCopyTexSubImage2DProc> fCopyTexSubImage2D; 173f23809101e2467cb509ddc6ad4de50017c0a2094junov GLPtr<GrGLCopyTextureCHROMIUMProc> fCopyTextureCHROMIUM; 174c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCreateProgramProc> fCreateProgram; 175c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCreateShaderProc> fCreateShader; 176c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCullFaceProc> fCullFace; 177c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeleteBuffersProc> fDeleteBuffers; 178c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeleteFramebuffersProc> fDeleteFramebuffers; 179c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeleteProgramProc> fDeleteProgram; 180c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeleteQueriesProc> fDeleteQueries; 181c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeleteRenderbuffersProc> fDeleteRenderbuffers; 182c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeleteShaderProc> fDeleteShader; 183c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeleteTexturesProc> fDeleteTextures; 184c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeleteVertexArraysProc> fDeleteVertexArrays; 185c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDepthMaskProc> fDepthMask; 186c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDisableProc> fDisable; 187c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDisableVertexAttribArrayProc> fDisableVertexAttribArray; 188c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDrawArraysProc> fDrawArrays; 189c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDrawBufferProc> fDrawBuffer; 190c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDrawBuffersProc> fDrawBuffers; 191c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDrawElementsProc> fDrawElements; 192c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLEnableProc> fEnable; 193c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLEnableVertexAttribArrayProc> fEnableVertexAttribArray; 194c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLEndQueryProc> fEndQuery; 195c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLFinishProc> fFinish; 196c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLFlushProc> fFlush; 197160b478eed1dd4924a86a87fd60c91139e08ff71commit-bot@chromium.org GLPtr<GrGLFlushMappedBufferRangeProc> fFlushMappedBufferRange; 198c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLFramebufferRenderbufferProc> fFramebufferRenderbuffer; 199c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLFramebufferTexture2DProc> fFramebufferTexture2D; 200c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLFramebufferTexture2DMultisampleProc> fFramebufferTexture2DMultisample; 201c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLFrontFaceProc> fFrontFace; 202c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGenBuffersProc> fGenBuffers; 203c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGenFramebuffersProc> fGenFramebuffers; 204c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGenerateMipmapProc> fGenerateMipmap; 205c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGenQueriesProc> fGenQueries; 206c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGenRenderbuffersProc> fGenRenderbuffers; 207c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGenTexturesProc> fGenTextures; 208c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGenVertexArraysProc> fGenVertexArrays; 209c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetBufferParameterivProc> fGetBufferParameteriv; 210c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetErrorProc> fGetError; 211c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetFramebufferAttachmentParameterivProc> fGetFramebufferAttachmentParameteriv; 212c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetIntegervProc> fGetIntegerv; 213c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetQueryObjecti64vProc> fGetQueryObjecti64v; 214c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetQueryObjectivProc> fGetQueryObjectiv; 215c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetQueryObjectui64vProc> fGetQueryObjectui64v; 216c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetQueryObjectuivProc> fGetQueryObjectuiv; 217c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetQueryivProc> fGetQueryiv; 218c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetProgramInfoLogProc> fGetProgramInfoLog; 219c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetProgramivProc> fGetProgramiv; 220c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetRenderbufferParameterivProc> fGetRenderbufferParameteriv; 221c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetShaderInfoLogProc> fGetShaderInfoLog; 222c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetShaderivProc> fGetShaderiv; 223c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetStringProc> fGetString; 224c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetStringiProc> fGetStringi; 225c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetTexLevelParameterivProc> fGetTexLevelParameteriv; 226c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGetUniformLocationProc> fGetUniformLocation; 227a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org GLPtr<GrGLInsertEventMarkerProc> fInsertEventMarker; 228a34bb60c4e319f2289106d519544fe09d43eabd5bsalomon@google.com GLPtr<GrGLInvalidateBufferDataProc> fInvalidateBufferData; 229a34bb60c4e319f2289106d519544fe09d43eabd5bsalomon@google.com GLPtr<GrGLInvalidateBufferSubDataProc> fInvalidateBufferSubData; 230a34bb60c4e319f2289106d519544fe09d43eabd5bsalomon@google.com GLPtr<GrGLInvalidateFramebufferProc> fInvalidateFramebuffer; 231a34bb60c4e319f2289106d519544fe09d43eabd5bsalomon@google.com GLPtr<GrGLInvalidateSubFramebufferProc> fInvalidateSubFramebuffer; 232a34bb60c4e319f2289106d519544fe09d43eabd5bsalomon@google.com GLPtr<GrGLInvalidateTexImageProc> fInvalidateTexImage; 233a34bb60c4e319f2289106d519544fe09d43eabd5bsalomon@google.com GLPtr<GrGLInvalidateTexSubImageProc> fInvalidateTexSubImage; 234c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLLineWidthProc> fLineWidth; 235c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLLinkProgramProc> fLinkProgram; 236c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLMapBufferProc> fMapBuffer; 237160b478eed1dd4924a86a87fd60c91139e08ff71commit-bot@chromium.org GLPtr<GrGLMapBufferRangeProc> fMapBufferRange; 238beb8b3a4da83ce30e313e72ae0e444870acecb7ecommit-bot@chromium.org GLPtr<GrGLMapBufferSubDataProc> fMapBufferSubData; 239beb8b3a4da83ce30e313e72ae0e444870acecb7ecommit-bot@chromium.org GLPtr<GrGLMapTexSubImage2DProc> fMapTexSubImage2D; 240f66967243c3732523c2035f7d6dbf65c2d20b264commit-bot@chromium.org GLPtr<GrGLMatrixLoadfProc> fMatrixLoadf; 241f66967243c3732523c2035f7d6dbf65c2d20b264commit-bot@chromium.org GLPtr<GrGLMatrixLoadIdentityProc> fMatrixLoadIdentity; 242c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLPixelStoreiProc> fPixelStorei; 243a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org GLPtr<GrGLPopGroupMarkerProc> fPopGroupMarker; 244a3baf3be0e2a3128fb73bd41d40d130f75a4dc86commit-bot@chromium.org GLPtr<GrGLPushGroupMarkerProc> fPushGroupMarker; 245c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLQueryCounterProc> fQueryCounter; 246c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLReadBufferProc> fReadBuffer; 247c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLReadPixelsProc> fReadPixels; 248c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLRenderbufferStorageProc> fRenderbufferStorage; 249c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org 250c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // On OpenGL ES there are multiple incompatible extensions that add support for MSAA 251c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // and ES3 adds MSAA support to the standard. On an ES3 driver we may still use the 252c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // older extensions for performance reasons or due to ES3 driver bugs. We want the function 253c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // that creates the GrGLInterface to provide all available functions and internally 254c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // we will select among them. They all have a method called glRenderbufferStorageMultisample*. 255c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // So we have separate function pointers for GL_IMG/EXT_multisampled_to_texture, 256c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // GL_CHROMIUM/ANGLE_framebuffer_multisample/ES3, and GL_APPLE_framebuffer_multisample 257c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // variations. 258c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // 259c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // If a driver supports multiple GL_ARB_framebuffer_multisample-style extensions then we will 260c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // assume the function pointers for the standard (or equivalent GL_ARB) version have 261c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // been preferred over GL_EXT, GL_CHROMIUM, or GL_ANGLE variations that have reduced 262c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // functionality. 263c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org 264c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // GL_EXT_multisampled_render_to_texture (preferred) or GL_IMG_multisampled_render_to_texture 265c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisampleES2EXT; 266c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // GL_APPLE_framebuffer_multisample 267c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisampleES2APPLE; 268c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org 269c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // This is used to store the pointer for GL_ARB/EXT/ANGLE/CHROMIUM_framebuffer_multisample or 270c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // the standard function in ES3+ or GL 3.0+. 271c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisample; 272c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org 273c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // Pointer to BindUniformLocationCHROMIUM from the GL_CHROMIUM_bind_uniform_location extension. 274c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLBindUniformLocation> fBindUniformLocation; 275c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org 276c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLResolveMultisampleFramebufferProc> fResolveMultisampleFramebuffer; 277c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLScissorProc> fScissor; 278c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLShaderSourceProc> fShaderSource; 279c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilFuncProc> fStencilFunc; 280c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilFuncSeparateProc> fStencilFuncSeparate; 281c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilMaskProc> fStencilMask; 282c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilMaskSeparateProc> fStencilMaskSeparate; 283c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilOpProc> fStencilOp; 284c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilOpSeparateProc> fStencilOpSeparate; 285c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLTexImage2DProc> fTexImage2D; 286c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLTexParameteriProc> fTexParameteri; 287c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLTexParameterivProc> fTexParameteriv; 288c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLTexSubImage2DProc> fTexSubImage2D; 289c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLTexStorage2DProc> fTexStorage2D; 290c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDiscardFramebufferProc> fDiscardFramebuffer; 291c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform1fProc> fUniform1f; 292c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform1iProc> fUniform1i; 293c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform1fvProc> fUniform1fv; 294c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform1ivProc> fUniform1iv; 295c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform2fProc> fUniform2f; 296c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform2iProc> fUniform2i; 297c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform2fvProc> fUniform2fv; 298c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform2ivProc> fUniform2iv; 299c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform3fProc> fUniform3f; 300c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform3iProc> fUniform3i; 301c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform3fvProc> fUniform3fv; 302c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform3ivProc> fUniform3iv; 303c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform4fProc> fUniform4f; 304c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform4iProc> fUniform4i; 305c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform4fvProc> fUniform4fv; 306c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniform4ivProc> fUniform4iv; 307c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniformMatrix2fvProc> fUniformMatrix2fv; 308c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniformMatrix3fvProc> fUniformMatrix3fv; 309c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUniformMatrix4fvProc> fUniformMatrix4fv; 310c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUnmapBufferProc> fUnmapBuffer; 311beb8b3a4da83ce30e313e72ae0e444870acecb7ecommit-bot@chromium.org GLPtr<GrGLUnmapBufferSubDataProc> fUnmapBufferSubData; 312beb8b3a4da83ce30e313e72ae0e444870acecb7ecommit-bot@chromium.org GLPtr<GrGLUnmapTexSubImage2DProc> fUnmapTexSubImage2D; 313c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLUseProgramProc> fUseProgram; 314c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLVertexAttrib4fvProc> fVertexAttrib4fv; 315c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLVertexAttribPointerProc> fVertexAttribPointer; 316c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLViewportProc> fViewport; 317c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org 318c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // Experimental: Functions for GL_NV_path_rendering. These will be 319c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // alphabetized with the above functions once this is fully supported 320c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org // (and functions we are unlikely to use will possibly be omitted). 32132b9a3b02ed6b8bab4a25b6cb8853f5bea4b87bakkinnunen GLPtr<GrGLGetProgramResourceLocationProc> fGetProgramResourceLocation; 322c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLPathCommandsProc> fPathCommands; 323c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLPathCoordsProc> fPathCoords; 324c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLPathParameteriProc> fPathParameteri; 325c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLPathParameterfProc> fPathParameterf; 326c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLGenPathsProc> fGenPaths; 327c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLDeletePathsProc> fDeletePaths; 3288dd90cb1fd541b9a2a264725e3dfeae736c91e22cdalton GLPtr<GrGLIsPathProc> fIsPath; 329c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLPathStencilFuncProc> fPathStencilFunc; 330c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilFillPathProc> fStencilFillPath; 331c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilStrokePathProc> fStencilStrokePath; 332c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilFillPathInstancedProc> fStencilFillPathInstanced; 333c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLStencilStrokePathInstancedProc> fStencilStrokePathInstanced; 334c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLPathTexGenProc> fPathTexGen; 335c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCoverFillPathProc> fCoverFillPath; 336c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCoverStrokePathProc> fCoverStrokePath; 337c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCoverFillPathInstancedProc> fCoverFillPathInstanced; 338c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org GLPtr<GrGLCoverStrokePathInstancedProc> fCoverStrokePathInstanced; 339c7103a104fdc7150b4e3c0d3efc42735ad359616cdalton // NV_path_rendering v1.2 340c8f520466701a14cf2fb86d3f2d3c70983cb4518cdalton GLPtr<GrGLStencilThenCoverFillPathProc> fStencilThenCoverFillPath; 341c8f520466701a14cf2fb86d3f2d3c70983cb4518cdalton GLPtr<GrGLStencilThenCoverStrokePathProc> fStencilThenCoverStrokePath; 342c8f520466701a14cf2fb86d3f2d3c70983cb4518cdalton GLPtr<GrGLStencilThenCoverFillPathInstancedProc> fStencilThenCoverFillPathInstanced; 343c8f520466701a14cf2fb86d3f2d3c70983cb4518cdalton GLPtr<GrGLStencilThenCoverStrokePathInstancedProc> fStencilThenCoverStrokePathInstanced; 344c7103a104fdc7150b4e3c0d3efc42735ad359616cdalton // NV_path_rendering v1.3 34532b9a3b02ed6b8bab4a25b6cb8853f5bea4b87bakkinnunen GLPtr<GrGLProgramPathFragmentInputGenProc> fProgramPathFragmentInputGen; 346149b3ec2b1ccaf00e40bf296d2a3394852d73fe9cdalton GLPtr<GrGLPathMemoryGlyphIndexArrayProc> fPathMemoryGlyphIndexArray; 347c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org } fFunctions; 348c72425ae368bfcb47de7d2532eb90d305ec0d1cfcommit-bot@chromium.org 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 354944bcf0acb78f8f9da01e991f1307629959e338absalomon 355944bcf0acb78f8f9da01e991f1307629959e338absalomon // This exists for internal testing. 356944bcf0acb78f8f9da01e991f1307629959e338absalomon virtual void abandon() const {} 357bf2a46941e8fdebfcd24ea8f7184779021898225bsalomon@google.com}; 35859a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com 35959a190bcab5d4b2bf03f8f10cb6a581d19fed403twiz@google.com#endif 360