Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Side by Side Diff: include/gpu/gl/GrGLInterface.h

Issue 1674823002: Replace GrGLInterface's function pointers with std::functions (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase & cleanup Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef GrGLInterface_DEFINED 8 #ifndef GrGLInterface_DEFINED
9 #define GrGLInterface_DEFINED 9 #define GrGLInterface_DEFINED
10 10
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 * pointers must be valid for the OpenGL context associated with the GrContext. 98 * pointers must be valid for the OpenGL context associated with the GrContext.
99 * On some platforms, such as Windows, function pointers for OpenGL extensions 99 * On some platforms, such as Windows, function pointers for OpenGL extensions
100 * may vary between OpenGL contexts. So the caller must be careful to use a 100 * may vary between OpenGL contexts. So the caller must be careful to use a
101 * GrGLInterface initialized for the correct context. All functions that should 101 * GrGLInterface initialized for the correct context. All functions that should
102 * be available based on the OpenGL's version and extension string must be 102 * be available based on the OpenGL's version and extension string must be
103 * non-NULL or GrContext creation will fail. This can be tested with the 103 * non-NULL or GrContext creation will fail. This can be tested with the
104 * validate() method when the OpenGL context has been made current. 104 * validate() method when the OpenGL context has been made current.
105 */ 105 */
106 struct SK_API GrGLInterface : public SkRefCnt { 106 struct SK_API GrGLInterface : public SkRefCnt {
107 private: 107 private:
108 // simple wrapper class that exists only to initialize a pointer to NULL
109 template <typename FNPTR_TYPE> class GLPtr {
110 public:
111 GLPtr() : fPtr(NULL) {}
112 GLPtr(const GLPtr&) = delete;
113 GLPtr& operator=(FNPTR_TYPE ptr) { fPtr = ptr; return *this; }
114 operator FNPTR_TYPE() const { return fPtr; }
115 private:
116 FNPTR_TYPE fPtr;
117 };
118
119 // This is a temporary workaround to keep Chromium's GrGLInterface factories compiling until
120 // they're updated to use the Functions struct.
121 template <typename FNPTR_TYPE> class GLPtrAlias {
122 public:
123 explicit GLPtrAlias(GLPtr<FNPTR_TYPE>* base) : fBase(base) {}
124 GLPtrAlias(const GLPtrAlias&) = delete;
125 void operator=(FNPTR_TYPE ptr) { *fBase = ptr; }
126 private:
127 GLPtr<FNPTR_TYPE>* fBase;
128 };
129
130 typedef SkRefCnt INHERITED; 108 typedef SkRefCnt INHERITED;
131 109
132 public: 110 public:
133 GrGLInterface(); 111 GrGLInterface();
134 112
135 static GrGLInterface* NewClone(const GrGLInterface*); 113 static GrGLInterface* NewClone(const GrGLInterface*);
136 114
137 // Validates that the GrGLInterface supports its advertised standard. This m eans the necessary 115 // Validates that the GrGLInterface supports its advertised standard. This m eans the necessary
138 // function pointers have been initialized for both the GL version and any a dvertised 116 // function pointers have been initialized for both the GL version and any a dvertised
139 // extensions. 117 // extensions.
140 bool validate() const; 118 bool validate() const;
141 119
142 // Indicates the type of GL implementation 120 // Indicates the type of GL implementation
143 union { 121 union {
144 GrGLStandard fStandard; 122 GrGLStandard fStandard;
145 GrGLStandard fBindingsExported; // Legacy name, will be remove when Chro mium is updated. 123 GrGLStandard fBindingsExported; // Legacy name, will be remove when Chro mium is updated.
146 }; 124 };
147 125
148 GrGLExtensions fExtensions; 126 GrGLExtensions fExtensions;
149 127
150 bool hasExtension(const char ext[]) const { return fExtensions.has(ext); } 128 bool hasExtension(const char ext[]) const { return fExtensions.has(ext); }
151 129
152 /** 130 /**
153 * The function pointers are in a struct so that we can have a compiler gene rated assignment 131 * The function pointers are in a struct so that we can have a compiler gene rated assignment
154 * operator. 132 * operator.
155 */ 133 */
156 struct Functions { 134 struct Functions {
157 GLPtr<GrGLActiveTextureProc> fActiveTexture; 135 GrGLFunction<GrGLActiveTextureProc> fActiveTexture;
158 GLPtr<GrGLAttachShaderProc> fAttachShader; 136 GrGLFunction<GrGLAttachShaderProc> fAttachShader;
159 GLPtr<GrGLBeginQueryProc> fBeginQuery; 137 GrGLFunction<GrGLBeginQueryProc> fBeginQuery;
160 GLPtr<GrGLBindAttribLocationProc> fBindAttribLocation; 138 GrGLFunction<GrGLBindAttribLocationProc> fBindAttribLocation;
161 GLPtr<GrGLBindBufferProc> fBindBuffer; 139 GrGLFunction<GrGLBindBufferProc> fBindBuffer;
162 GLPtr<GrGLBindFragDataLocationProc> fBindFragDataLocation; 140 GrGLFunction<GrGLBindFragDataLocationProc> fBindFragDataLocation;
163 GLPtr<GrGLBindFragDataLocationIndexedProc> fBindFragDataLocationIndexed; 141 GrGLFunction<GrGLBindFragDataLocationIndexedProc> fBindFragDataLocationI ndexed;
164 GLPtr<GrGLBindFramebufferProc> fBindFramebuffer; 142 GrGLFunction<GrGLBindFramebufferProc> fBindFramebuffer;
165 GLPtr<GrGLBindRenderbufferProc> fBindRenderbuffer; 143 GrGLFunction<GrGLBindRenderbufferProc> fBindRenderbuffer;
166 GLPtr<GrGLBindTextureProc> fBindTexture; 144 GrGLFunction<GrGLBindTextureProc> fBindTexture;
167 GLPtr<GrGLBindVertexArrayProc> fBindVertexArray; 145 GrGLFunction<GrGLBindVertexArrayProc> fBindVertexArray;
168 GLPtr<GrGLBlendBarrierProc> fBlendBarrier; 146 GrGLFunction<GrGLBlendBarrierProc> fBlendBarrier;
169 GLPtr<GrGLBlendColorProc> fBlendColor; 147 GrGLFunction<GrGLBlendColorProc> fBlendColor;
170 GLPtr<GrGLBlendEquationProc> fBlendEquation; 148 GrGLFunction<GrGLBlendEquationProc> fBlendEquation;
171 GLPtr<GrGLBlendFuncProc> fBlendFunc; 149 GrGLFunction<GrGLBlendFuncProc> fBlendFunc;
172 GLPtr<GrGLBlitFramebufferProc> fBlitFramebuffer; 150 GrGLFunction<GrGLBlitFramebufferProc> fBlitFramebuffer;
173 GLPtr<GrGLBufferDataProc> fBufferData; 151 GrGLFunction<GrGLBufferDataProc> fBufferData;
174 GLPtr<GrGLBufferSubDataProc> fBufferSubData; 152 GrGLFunction<GrGLBufferSubDataProc> fBufferSubData;
175 GLPtr<GrGLCheckFramebufferStatusProc> fCheckFramebufferStatus; 153 GrGLFunction<GrGLCheckFramebufferStatusProc> fCheckFramebufferStatus;
176 GLPtr<GrGLClearProc> fClear; 154 GrGLFunction<GrGLClearProc> fClear;
177 GLPtr<GrGLClearColorProc> fClearColor; 155 GrGLFunction<GrGLClearColorProc> fClearColor;
178 GLPtr<GrGLClearStencilProc> fClearStencil; 156 GrGLFunction<GrGLClearStencilProc> fClearStencil;
179 GLPtr<GrGLColorMaskProc> fColorMask; 157 GrGLFunction<GrGLColorMaskProc> fColorMask;
180 GLPtr<GrGLCompileShaderProc> fCompileShader; 158 GrGLFunction<GrGLCompileShaderProc> fCompileShader;
181 GLPtr<GrGLCompressedTexImage2DProc> fCompressedTexImage2D; 159 GrGLFunction<GrGLCompressedTexImage2DProc> fCompressedTexImage2D;
182 GLPtr<GrGLCompressedTexSubImage2DProc> fCompressedTexSubImage2D; 160 GrGLFunction<GrGLCompressedTexSubImage2DProc> fCompressedTexSubImage2D;
183 GLPtr<GrGLCopyTexSubImage2DProc> fCopyTexSubImage2D; 161 GrGLFunction<GrGLCopyTexSubImage2DProc> fCopyTexSubImage2D;
184 GLPtr<GrGLCreateProgramProc> fCreateProgram; 162 GrGLFunction<GrGLCreateProgramProc> fCreateProgram;
185 GLPtr<GrGLCreateShaderProc> fCreateShader; 163 GrGLFunction<GrGLCreateShaderProc> fCreateShader;
186 GLPtr<GrGLCullFaceProc> fCullFace; 164 GrGLFunction<GrGLCullFaceProc> fCullFace;
187 GLPtr<GrGLDeleteBuffersProc> fDeleteBuffers; 165 GrGLFunction<GrGLDeleteBuffersProc> fDeleteBuffers;
188 GLPtr<GrGLDeleteFramebuffersProc> fDeleteFramebuffers; 166 GrGLFunction<GrGLDeleteFramebuffersProc> fDeleteFramebuffers;
189 GLPtr<GrGLDeleteProgramProc> fDeleteProgram; 167 GrGLFunction<GrGLDeleteProgramProc> fDeleteProgram;
190 GLPtr<GrGLDeleteQueriesProc> fDeleteQueries; 168 GrGLFunction<GrGLDeleteQueriesProc> fDeleteQueries;
191 GLPtr<GrGLDeleteRenderbuffersProc> fDeleteRenderbuffers; 169 GrGLFunction<GrGLDeleteRenderbuffersProc> fDeleteRenderbuffers;
192 GLPtr<GrGLDeleteShaderProc> fDeleteShader; 170 GrGLFunction<GrGLDeleteShaderProc> fDeleteShader;
193 GLPtr<GrGLDeleteTexturesProc> fDeleteTextures; 171 GrGLFunction<GrGLDeleteTexturesProc> fDeleteTextures;
194 GLPtr<GrGLDeleteVertexArraysProc> fDeleteVertexArrays; 172 GrGLFunction<GrGLDeleteVertexArraysProc> fDeleteVertexArrays;
195 GLPtr<GrGLDepthMaskProc> fDepthMask; 173 GrGLFunction<GrGLDepthMaskProc> fDepthMask;
196 GLPtr<GrGLDisableProc> fDisable; 174 GrGLFunction<GrGLDisableProc> fDisable;
197 GLPtr<GrGLDisableVertexAttribArrayProc> fDisableVertexAttribArray; 175 GrGLFunction<GrGLDisableVertexAttribArrayProc> fDisableVertexAttribArray ;
198 GLPtr<GrGLDrawArraysProc> fDrawArrays; 176 GrGLFunction<GrGLDrawArraysProc> fDrawArrays;
199 GLPtr<GrGLDrawArraysIndirectProc> fDrawArraysIndirect; 177 GrGLFunction<GrGLDrawArraysIndirectProc> fDrawArraysIndirect;
200 GLPtr<GrGLDrawArraysInstancedProc> fDrawArraysInstanced; 178 GrGLFunction<GrGLDrawArraysInstancedProc> fDrawArraysInstanced;
201 GLPtr<GrGLDrawBufferProc> fDrawBuffer; 179 GrGLFunction<GrGLDrawBufferProc> fDrawBuffer;
202 GLPtr<GrGLDrawBuffersProc> fDrawBuffers; 180 GrGLFunction<GrGLDrawBuffersProc> fDrawBuffers;
203 GLPtr<GrGLDrawElementsProc> fDrawElements; 181 GrGLFunction<GrGLDrawElementsProc> fDrawElements;
204 GLPtr<GrGLDrawElementsIndirectProc> fDrawElementsIndirect; 182 GrGLFunction<GrGLDrawElementsIndirectProc> fDrawElementsIndirect;
205 GLPtr<GrGLDrawElementsInstancedProc> fDrawElementsInstanced; 183 GrGLFunction<GrGLDrawElementsInstancedProc> fDrawElementsInstanced;
206 GLPtr<GrGLEnableProc> fEnable; 184 GrGLFunction<GrGLEnableProc> fEnable;
207 GLPtr<GrGLEnableVertexAttribArrayProc> fEnableVertexAttribArray; 185 GrGLFunction<GrGLEnableVertexAttribArrayProc> fEnableVertexAttribArray;
208 GLPtr<GrGLEndQueryProc> fEndQuery; 186 GrGLFunction<GrGLEndQueryProc> fEndQuery;
209 GLPtr<GrGLFinishProc> fFinish; 187 GrGLFunction<GrGLFinishProc> fFinish;
210 GLPtr<GrGLFlushProc> fFlush; 188 GrGLFunction<GrGLFlushProc> fFlush;
211 GLPtr<GrGLFlushMappedBufferRangeProc> fFlushMappedBufferRange; 189 GrGLFunction<GrGLFlushMappedBufferRangeProc> fFlushMappedBufferRange;
212 GLPtr<GrGLFramebufferRenderbufferProc> fFramebufferRenderbuffer; 190 GrGLFunction<GrGLFramebufferRenderbufferProc> fFramebufferRenderbuffer;
213 GLPtr<GrGLFramebufferTexture2DProc> fFramebufferTexture2D; 191 GrGLFunction<GrGLFramebufferTexture2DProc> fFramebufferTexture2D;
214 GLPtr<GrGLFramebufferTexture2DMultisampleProc> fFramebufferTexture2DMult isample; 192 GrGLFunction<GrGLFramebufferTexture2DMultisampleProc> fFramebufferTextur e2DMultisample;
215 GLPtr<GrGLFrontFaceProc> fFrontFace; 193 GrGLFunction<GrGLFrontFaceProc> fFrontFace;
216 GLPtr<GrGLGenBuffersProc> fGenBuffers; 194 GrGLFunction<GrGLGenBuffersProc> fGenBuffers;
217 GLPtr<GrGLGenFramebuffersProc> fGenFramebuffers; 195 GrGLFunction<GrGLGenFramebuffersProc> fGenFramebuffers;
218 GLPtr<GrGLGenerateMipmapProc> fGenerateMipmap; 196 GrGLFunction<GrGLGenerateMipmapProc> fGenerateMipmap;
219 GLPtr<GrGLGenQueriesProc> fGenQueries; 197 GrGLFunction<GrGLGenQueriesProc> fGenQueries;
220 GLPtr<GrGLGenRenderbuffersProc> fGenRenderbuffers; 198 GrGLFunction<GrGLGenRenderbuffersProc> fGenRenderbuffers;
221 GLPtr<GrGLGenTexturesProc> fGenTextures; 199 GrGLFunction<GrGLGenTexturesProc> fGenTextures;
222 GLPtr<GrGLGenVertexArraysProc> fGenVertexArrays; 200 GrGLFunction<GrGLGenVertexArraysProc> fGenVertexArrays;
223 GLPtr<GrGLGetBufferParameterivProc> fGetBufferParameteriv; 201 GrGLFunction<GrGLGetBufferParameterivProc> fGetBufferParameteriv;
224 GLPtr<GrGLGetErrorProc> fGetError; 202 GrGLFunction<GrGLGetErrorProc> fGetError;
225 GLPtr<GrGLGetFramebufferAttachmentParameterivProc> fGetFramebufferAttach mentParameteriv; 203 GrGLFunction<GrGLGetFramebufferAttachmentParameterivProc> fGetFramebuffe rAttachmentParameteriv;
226 GLPtr<GrGLGetIntegervProc> fGetIntegerv; 204 GrGLFunction<GrGLGetIntegervProc> fGetIntegerv;
227 GLPtr<GrGLGetQueryObjecti64vProc> fGetQueryObjecti64v; 205 GrGLFunction<GrGLGetQueryObjecti64vProc> fGetQueryObjecti64v;
228 GLPtr<GrGLGetQueryObjectivProc> fGetQueryObjectiv; 206 GrGLFunction<GrGLGetQueryObjectivProc> fGetQueryObjectiv;
229 GLPtr<GrGLGetQueryObjectui64vProc> fGetQueryObjectui64v; 207 GrGLFunction<GrGLGetQueryObjectui64vProc> fGetQueryObjectui64v;
230 GLPtr<GrGLGetQueryObjectuivProc> fGetQueryObjectuiv; 208 GrGLFunction<GrGLGetQueryObjectuivProc> fGetQueryObjectuiv;
231 GLPtr<GrGLGetQueryivProc> fGetQueryiv; 209 GrGLFunction<GrGLGetQueryivProc> fGetQueryiv;
232 GLPtr<GrGLGetProgramInfoLogProc> fGetProgramInfoLog; 210 GrGLFunction<GrGLGetProgramInfoLogProc> fGetProgramInfoLog;
233 GLPtr<GrGLGetProgramivProc> fGetProgramiv; 211 GrGLFunction<GrGLGetProgramivProc> fGetProgramiv;
234 GLPtr<GrGLGetRenderbufferParameterivProc> fGetRenderbufferParameteriv; 212 GrGLFunction<GrGLGetRenderbufferParameterivProc> fGetRenderbufferParamet eriv;
235 GLPtr<GrGLGetShaderInfoLogProc> fGetShaderInfoLog; 213 GrGLFunction<GrGLGetShaderInfoLogProc> fGetShaderInfoLog;
236 GLPtr<GrGLGetShaderivProc> fGetShaderiv; 214 GrGLFunction<GrGLGetShaderivProc> fGetShaderiv;
237 GLPtr<GrGLGetShaderPrecisionFormatProc> fGetShaderPrecisionFormat; 215 GrGLFunction<GrGLGetShaderPrecisionFormatProc> fGetShaderPrecisionFormat ;
238 GLPtr<GrGLGetStringProc> fGetString; 216 GrGLFunction<GrGLGetStringProc> fGetString;
239 GLPtr<GrGLGetStringiProc> fGetStringi; 217 GrGLFunction<GrGLGetStringiProc> fGetStringi;
240 GLPtr<GrGLGetTexLevelParameterivProc> fGetTexLevelParameteriv; 218 GrGLFunction<GrGLGetTexLevelParameterivProc> fGetTexLevelParameteriv;
241 GLPtr<GrGLGetUniformLocationProc> fGetUniformLocation; 219 GrGLFunction<GrGLGetUniformLocationProc> fGetUniformLocation;
242 GLPtr<GrGLInsertEventMarkerProc> fInsertEventMarker; 220 GrGLFunction<GrGLInsertEventMarkerProc> fInsertEventMarker;
243 GLPtr<GrGLInvalidateBufferDataProc> fInvalidateBufferData; 221 GrGLFunction<GrGLInvalidateBufferDataProc> fInvalidateBufferData;
244 GLPtr<GrGLInvalidateBufferSubDataProc> fInvalidateBufferSubData; 222 GrGLFunction<GrGLInvalidateBufferSubDataProc> fInvalidateBufferSubData;
245 GLPtr<GrGLInvalidateFramebufferProc> fInvalidateFramebuffer; 223 GrGLFunction<GrGLInvalidateFramebufferProc> fInvalidateFramebuffer;
246 GLPtr<GrGLInvalidateSubFramebufferProc> fInvalidateSubFramebuffer; 224 GrGLFunction<GrGLInvalidateSubFramebufferProc> fInvalidateSubFramebuffer ;
247 GLPtr<GrGLInvalidateTexImageProc> fInvalidateTexImage; 225 GrGLFunction<GrGLInvalidateTexImageProc> fInvalidateTexImage;
248 GLPtr<GrGLInvalidateTexSubImageProc> fInvalidateTexSubImage; 226 GrGLFunction<GrGLInvalidateTexSubImageProc> fInvalidateTexSubImage;
249 GLPtr<GrGLIsTextureProc> fIsTexture; 227 GrGLFunction<GrGLIsTextureProc> fIsTexture;
250 GLPtr<GrGLLineWidthProc> fLineWidth; 228 GrGLFunction<GrGLLineWidthProc> fLineWidth;
251 GLPtr<GrGLLinkProgramProc> fLinkProgram; 229 GrGLFunction<GrGLLinkProgramProc> fLinkProgram;
252 GLPtr<GrGLMapBufferProc> fMapBuffer; 230 GrGLFunction<GrGLMapBufferProc> fMapBuffer;
253 GLPtr<GrGLMapBufferRangeProc> fMapBufferRange; 231 GrGLFunction<GrGLMapBufferRangeProc> fMapBufferRange;
254 GLPtr<GrGLMapBufferSubDataProc> fMapBufferSubData; 232 GrGLFunction<GrGLMapBufferSubDataProc> fMapBufferSubData;
255 GLPtr<GrGLMapTexSubImage2DProc> fMapTexSubImage2D; 233 GrGLFunction<GrGLMapTexSubImage2DProc> fMapTexSubImage2D;
256 GLPtr<GrGLPixelStoreiProc> fPixelStorei; 234 GrGLFunction<GrGLPixelStoreiProc> fPixelStorei;
257 GLPtr<GrGLPopGroupMarkerProc> fPopGroupMarker; 235 GrGLFunction<GrGLPopGroupMarkerProc> fPopGroupMarker;
258 GLPtr<GrGLPushGroupMarkerProc> fPushGroupMarker; 236 GrGLFunction<GrGLPushGroupMarkerProc> fPushGroupMarker;
259 GLPtr<GrGLQueryCounterProc> fQueryCounter; 237 GrGLFunction<GrGLQueryCounterProc> fQueryCounter;
260 GLPtr<GrGLRasterSamplesProc> fRasterSamples; 238 GrGLFunction<GrGLRasterSamplesProc> fRasterSamples;
261 GLPtr<GrGLReadBufferProc> fReadBuffer; 239 GrGLFunction<GrGLReadBufferProc> fReadBuffer;
262 GLPtr<GrGLReadPixelsProc> fReadPixels; 240 GrGLFunction<GrGLReadPixelsProc> fReadPixels;
263 GLPtr<GrGLRenderbufferStorageProc> fRenderbufferStorage; 241 GrGLFunction<GrGLRenderbufferStorageProc> fRenderbufferStorage;
264 242
265 // On OpenGL ES there are multiple incompatible extensions that add sup port for MSAA 243 // On OpenGL ES there are multiple incompatible extensions that add sup port for MSAA
266 // and ES3 adds MSAA support to the standard. On an ES3 driver we may s till use the 244 // and ES3 adds MSAA support to the standard. On an ES3 driver we may s till use the
267 // older extensions for performance reasons or due to ES3 driver bugs. We want the function 245 // older extensions for performance reasons or due to ES3 driver bugs. We want the function
268 // that creates the GrGLInterface to provide all available functions an d internally 246 // that creates the GrGLInterface to provide all available functions an d internally
269 // we will select among them. They all have a method called glRenderbuf ferStorageMultisample*. 247 // we will select among them. They all have a method called glRenderbuf ferStorageMultisample*.
270 // So we have separate function pointers for GL_IMG/EXT_multisampled_to _texture, 248 // So we have separate function pointers for GL_IMG/EXT_multisampled_to _texture,
271 // GL_CHROMIUM/ANGLE_framebuffer_multisample/ES3, and GL_APPLE_framebuf fer_multisample 249 // GL_CHROMIUM/ANGLE_framebuffer_multisample/ES3, and GL_APPLE_framebuf fer_multisample
272 // variations. 250 // variations.
273 // 251 //
274 // If a driver supports multiple GL_ARB_framebuffer_multisample-style e xtensions then we will 252 // If a driver supports multiple GL_ARB_framebuffer_multisample-style e xtensions then we will
275 // assume the function pointers for the standard (or equivalent GL_ARB) version have 253 // assume the function pointers for the standard (or equivalent GL_ARB) version have
276 // been preferred over GL_EXT, GL_CHROMIUM, or GL_ANGLE variations that have reduced 254 // been preferred over GL_EXT, GL_CHROMIUM, or GL_ANGLE variations that have reduced
277 // functionality. 255 // functionality.
278 256
279 // GL_EXT_multisampled_render_to_texture (preferred) or GL_IMG_multisam pled_render_to_texture 257 // GL_EXT_multisampled_render_to_texture (preferred) or GL_IMG_multisam pled_render_to_texture
280 GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultis ampleES2EXT; 258 GrGLFunction<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorag eMultisampleES2EXT;
281 // GL_APPLE_framebuffer_multisample 259 // GL_APPLE_framebuffer_multisample
282 GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultis ampleES2APPLE; 260 GrGLFunction<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorag eMultisampleES2APPLE;
283 261
284 // This is used to store the pointer for GL_ARB/EXT/ANGLE/CHROMIUM_fram ebuffer_multisample or 262 // This is used to store the pointer for GL_ARB/EXT/ANGLE/CHROMIUM_fram ebuffer_multisample or
285 // the standard function in ES3+ or GL 3.0+. 263 // the standard function in ES3+ or GL 3.0+.
286 GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultis ample; 264 GrGLFunction<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorag eMultisample;
287 265
288 // Pointer to BindUniformLocationCHROMIUM from the GL_CHROMIUM_bind_unif orm_location extension. 266 // Pointer to BindUniformLocationCHROMIUM from the GL_CHROMIUM_bind_unif orm_location extension.
289 GLPtr<GrGLBindUniformLocationProc> fBindUniformLocation; 267 GrGLFunction<GrGLBindUniformLocationProc> fBindUniformLocation;
290 268
291 GLPtr<GrGLResolveMultisampleFramebufferProc> fResolveMultisampleFramebuf fer; 269 GrGLFunction<GrGLResolveMultisampleFramebufferProc> fResolveMultisampleF ramebuffer;
292 GLPtr<GrGLScissorProc> fScissor; 270 GrGLFunction<GrGLScissorProc> fScissor;
293 GLPtr<GrGLShaderSourceProc> fShaderSource; 271 GrGLFunction<GrGLShaderSourceProc> fShaderSource;
294 GLPtr<GrGLStencilFuncProc> fStencilFunc; 272 GrGLFunction<GrGLStencilFuncProc> fStencilFunc;
295 GLPtr<GrGLStencilFuncSeparateProc> fStencilFuncSeparate; 273 GrGLFunction<GrGLStencilFuncSeparateProc> fStencilFuncSeparate;
296 GLPtr<GrGLStencilMaskProc> fStencilMask; 274 GrGLFunction<GrGLStencilMaskProc> fStencilMask;
297 GLPtr<GrGLStencilMaskSeparateProc> fStencilMaskSeparate; 275 GrGLFunction<GrGLStencilMaskSeparateProc> fStencilMaskSeparate;
298 GLPtr<GrGLStencilOpProc> fStencilOp; 276 GrGLFunction<GrGLStencilOpProc> fStencilOp;
299 GLPtr<GrGLStencilOpSeparateProc> fStencilOpSeparate; 277 GrGLFunction<GrGLStencilOpSeparateProc> fStencilOpSeparate;
300 GLPtr<GrGLTexImage2DProc> fTexImage2D; 278 GrGLFunction<GrGLTexImage2DProc> fTexImage2D;
301 GLPtr<GrGLTexParameteriProc> fTexParameteri; 279 GrGLFunction<GrGLTexParameteriProc> fTexParameteri;
302 GLPtr<GrGLTexParameterivProc> fTexParameteriv; 280 GrGLFunction<GrGLTexParameterivProc> fTexParameteriv;
303 GLPtr<GrGLTexSubImage2DProc> fTexSubImage2D; 281 GrGLFunction<GrGLTexSubImage2DProc> fTexSubImage2D;
304 GLPtr<GrGLTexStorage2DProc> fTexStorage2D; 282 GrGLFunction<GrGLTexStorage2DProc> fTexStorage2D;
305 GLPtr<GrGLTextureBarrierProc> fTextureBarrier; 283 GrGLFunction<GrGLTextureBarrierProc> fTextureBarrier;
306 GLPtr<GrGLDiscardFramebufferProc> fDiscardFramebuffer; 284 GrGLFunction<GrGLDiscardFramebufferProc> fDiscardFramebuffer;
307 GLPtr<GrGLUniform1fProc> fUniform1f; 285 GrGLFunction<GrGLUniform1fProc> fUniform1f;
308 GLPtr<GrGLUniform1iProc> fUniform1i; 286 GrGLFunction<GrGLUniform1iProc> fUniform1i;
309 GLPtr<GrGLUniform1fvProc> fUniform1fv; 287 GrGLFunction<GrGLUniform1fvProc> fUniform1fv;
310 GLPtr<GrGLUniform1ivProc> fUniform1iv; 288 GrGLFunction<GrGLUniform1ivProc> fUniform1iv;
311 GLPtr<GrGLUniform2fProc> fUniform2f; 289 GrGLFunction<GrGLUniform2fProc> fUniform2f;
312 GLPtr<GrGLUniform2iProc> fUniform2i; 290 GrGLFunction<GrGLUniform2iProc> fUniform2i;
313 GLPtr<GrGLUniform2fvProc> fUniform2fv; 291 GrGLFunction<GrGLUniform2fvProc> fUniform2fv;
314 GLPtr<GrGLUniform2ivProc> fUniform2iv; 292 GrGLFunction<GrGLUniform2ivProc> fUniform2iv;
315 GLPtr<GrGLUniform3fProc> fUniform3f; 293 GrGLFunction<GrGLUniform3fProc> fUniform3f;
316 GLPtr<GrGLUniform3iProc> fUniform3i; 294 GrGLFunction<GrGLUniform3iProc> fUniform3i;
317 GLPtr<GrGLUniform3fvProc> fUniform3fv; 295 GrGLFunction<GrGLUniform3fvProc> fUniform3fv;
318 GLPtr<GrGLUniform3ivProc> fUniform3iv; 296 GrGLFunction<GrGLUniform3ivProc> fUniform3iv;
319 GLPtr<GrGLUniform4fProc> fUniform4f; 297 GrGLFunction<GrGLUniform4fProc> fUniform4f;
320 GLPtr<GrGLUniform4iProc> fUniform4i; 298 GrGLFunction<GrGLUniform4iProc> fUniform4i;
321 GLPtr<GrGLUniform4fvProc> fUniform4fv; 299 GrGLFunction<GrGLUniform4fvProc> fUniform4fv;
322 GLPtr<GrGLUniform4ivProc> fUniform4iv; 300 GrGLFunction<GrGLUniform4ivProc> fUniform4iv;
323 GLPtr<GrGLUniformMatrix2fvProc> fUniformMatrix2fv; 301 GrGLFunction<GrGLUniformMatrix2fvProc> fUniformMatrix2fv;
324 GLPtr<GrGLUniformMatrix3fvProc> fUniformMatrix3fv; 302 GrGLFunction<GrGLUniformMatrix3fvProc> fUniformMatrix3fv;
325 GLPtr<GrGLUniformMatrix4fvProc> fUniformMatrix4fv; 303 GrGLFunction<GrGLUniformMatrix4fvProc> fUniformMatrix4fv;
326 GLPtr<GrGLUnmapBufferProc> fUnmapBuffer; 304 GrGLFunction<GrGLUnmapBufferProc> fUnmapBuffer;
327 GLPtr<GrGLUnmapBufferSubDataProc> fUnmapBufferSubData; 305 GrGLFunction<GrGLUnmapBufferSubDataProc> fUnmapBufferSubData;
328 GLPtr<GrGLUnmapTexSubImage2DProc> fUnmapTexSubImage2D; 306 GrGLFunction<GrGLUnmapTexSubImage2DProc> fUnmapTexSubImage2D;
329 GLPtr<GrGLUseProgramProc> fUseProgram; 307 GrGLFunction<GrGLUseProgramProc> fUseProgram;
330 GLPtr<GrGLVertexAttrib1fProc> fVertexAttrib1f; 308 GrGLFunction<GrGLVertexAttrib1fProc> fVertexAttrib1f;
331 GLPtr<GrGLVertexAttrib2fvProc> fVertexAttrib2fv; 309 GrGLFunction<GrGLVertexAttrib2fvProc> fVertexAttrib2fv;
332 GLPtr<GrGLVertexAttrib3fvProc> fVertexAttrib3fv; 310 GrGLFunction<GrGLVertexAttrib3fvProc> fVertexAttrib3fv;
333 GLPtr<GrGLVertexAttrib4fvProc> fVertexAttrib4fv; 311 GrGLFunction<GrGLVertexAttrib4fvProc> fVertexAttrib4fv;
334 GLPtr<GrGLVertexAttribDivisorProc> fVertexAttribDivisor; 312 GrGLFunction<GrGLVertexAttribDivisorProc> fVertexAttribDivisor;
335 GLPtr<GrGLVertexAttribIPointerProc> fVertexAttribIPointer; 313 GrGLFunction<GrGLVertexAttribIPointerProc> fVertexAttribIPointer;
336 GLPtr<GrGLVertexAttribPointerProc> fVertexAttribPointer; 314 GrGLFunction<GrGLVertexAttribPointerProc> fVertexAttribPointer;
337 GLPtr<GrGLViewportProc> fViewport; 315 GrGLFunction<GrGLViewportProc> fViewport;
338 316
339 /* GL_NV_path_rendering */ 317 /* GL_NV_path_rendering */
340 GLPtr<GrGLMatrixLoadfProc> fMatrixLoadf; 318 GrGLFunction<GrGLMatrixLoadfProc> fMatrixLoadf;
341 GLPtr<GrGLMatrixLoadIdentityProc> fMatrixLoadIdentity; 319 GrGLFunction<GrGLMatrixLoadIdentityProc> fMatrixLoadIdentity;
342 GLPtr<GrGLGetProgramResourceLocationProc> fGetProgramResourceLocation; 320 GrGLFunction<GrGLGetProgramResourceLocationProc> fGetProgramResourceLoca tion;
343 GLPtr<GrGLPathCommandsProc> fPathCommands; 321 GrGLFunction<GrGLPathCommandsProc> fPathCommands;
344 GLPtr<GrGLPathParameteriProc> fPathParameteri; 322 GrGLFunction<GrGLPathParameteriProc> fPathParameteri;
345 GLPtr<GrGLPathParameterfProc> fPathParameterf; 323 GrGLFunction<GrGLPathParameterfProc> fPathParameterf;
346 GLPtr<GrGLGenPathsProc> fGenPaths; 324 GrGLFunction<GrGLGenPathsProc> fGenPaths;
347 GLPtr<GrGLDeletePathsProc> fDeletePaths; 325 GrGLFunction<GrGLDeletePathsProc> fDeletePaths;
348 GLPtr<GrGLIsPathProc> fIsPath; 326 GrGLFunction<GrGLIsPathProc> fIsPath;
349 GLPtr<GrGLPathStencilFuncProc> fPathStencilFunc; 327 GrGLFunction<GrGLPathStencilFuncProc> fPathStencilFunc;
350 GLPtr<GrGLStencilFillPathProc> fStencilFillPath; 328 GrGLFunction<GrGLStencilFillPathProc> fStencilFillPath;
351 GLPtr<GrGLStencilStrokePathProc> fStencilStrokePath; 329 GrGLFunction<GrGLStencilStrokePathProc> fStencilStrokePath;
352 GLPtr<GrGLStencilFillPathInstancedProc> fStencilFillPathInstanced; 330 GrGLFunction<GrGLStencilFillPathInstancedProc> fStencilFillPathInstanced ;
353 GLPtr<GrGLStencilStrokePathInstancedProc> fStencilStrokePathInstanced; 331 GrGLFunction<GrGLStencilStrokePathInstancedProc> fStencilStrokePathInsta nced;
354 GLPtr<GrGLCoverFillPathProc> fCoverFillPath; 332 GrGLFunction<GrGLCoverFillPathProc> fCoverFillPath;
355 GLPtr<GrGLCoverStrokePathProc> fCoverStrokePath; 333 GrGLFunction<GrGLCoverStrokePathProc> fCoverStrokePath;
356 GLPtr<GrGLCoverFillPathInstancedProc> fCoverFillPathInstanced; 334 GrGLFunction<GrGLCoverFillPathInstancedProc> fCoverFillPathInstanced;
357 GLPtr<GrGLCoverStrokePathInstancedProc> fCoverStrokePathInstanced; 335 GrGLFunction<GrGLCoverStrokePathInstancedProc> fCoverStrokePathInstanced ;
358 // NV_path_rendering v1.2 336 // NV_path_rendering v1.2
359 GLPtr<GrGLStencilThenCoverFillPathProc> fStencilThenCoverFillPath; 337 GrGLFunction<GrGLStencilThenCoverFillPathProc> fStencilThenCoverFillPath ;
360 GLPtr<GrGLStencilThenCoverStrokePathProc> fStencilThenCoverStrokePath; 338 GrGLFunction<GrGLStencilThenCoverStrokePathProc> fStencilThenCoverStroke Path;
361 GLPtr<GrGLStencilThenCoverFillPathInstancedProc> fStencilThenCoverFillPa thInstanced; 339 GrGLFunction<GrGLStencilThenCoverFillPathInstancedProc> fStencilThenCove rFillPathInstanced;
362 GLPtr<GrGLStencilThenCoverStrokePathInstancedProc> fStencilThenCoverStro kePathInstanced; 340 GrGLFunction<GrGLStencilThenCoverStrokePathInstancedProc> fStencilThenCo verStrokePathInstanced;
363 // NV_path_rendering v1.3 341 // NV_path_rendering v1.3
364 GLPtr<GrGLProgramPathFragmentInputGenProc> fProgramPathFragmentInputGen; 342 GrGLFunction<GrGLProgramPathFragmentInputGenProc> fProgramPathFragmentIn putGen;
365 // CHROMIUM_path_rendering 343 // CHROMIUM_path_rendering
366 GLPtr<GrGLBindFragmentInputLocationProc> fBindFragmentInputLocation; 344 GrGLFunction<GrGLBindFragmentInputLocationProc> fBindFragmentInputLocati on;
367 345
368 /* NV_framebuffer_mixed_samples */ 346 /* NV_framebuffer_mixed_samples */
369 GLPtr<GrGLCoverageModulationProc> fCoverageModulation; 347 GrGLFunction<GrGLCoverageModulationProc> fCoverageModulation;
370 348
371 /* EXT_multi_draw_indirect */ 349 /* EXT_multi_draw_indirect */
372 GLPtr<GrGLMultiDrawArraysIndirectProc> fMultiDrawArraysIndirect; 350 GrGLFunction<GrGLMultiDrawArraysIndirectProc> fMultiDrawArraysIndirect;
373 GLPtr<GrGLMultiDrawElementsIndirectProc> fMultiDrawElementsIndirect; 351 GrGLFunction<GrGLMultiDrawElementsIndirectProc> fMultiDrawElementsIndire ct;
374 352
375 /* NV_bindless_texture */ 353 /* NV_bindless_texture */
376 // We use the NVIDIA verson for now because it does not require dynamica lly uniform handles. 354 // We use the NVIDIA verson for now because it does not require dynamica lly uniform handles.
377 // We may switch the the ARB version and/or omit methods in the future. 355 // We may switch the the ARB version and/or omit methods in the future.
378 GLPtr<GrGLGetTextureHandleProc> fGetTextureHandle; 356 GrGLFunction<GrGLGetTextureHandleProc> fGetTextureHandle;
379 GLPtr<GrGLGetTextureSamplerHandleProc> fGetTextureSamplerHandle; 357 GrGLFunction<GrGLGetTextureSamplerHandleProc> fGetTextureSamplerHandle;
380 GLPtr<GrGLMakeTextureHandleResidentProc> fMakeTextureHandleResident; 358 GrGLFunction<GrGLMakeTextureHandleResidentProc> fMakeTextureHandleReside nt;
381 GLPtr<GrGLMakeTextureHandleNonResidentProc> fMakeTextureHandleNonResiden t; 359 GrGLFunction<GrGLMakeTextureHandleNonResidentProc> fMakeTextureHandleNon Resident;
382 GLPtr<GrGLGetImageHandleProc> fGetImageHandle; 360 GrGLFunction<GrGLGetImageHandleProc> fGetImageHandle;
383 GLPtr<GrGLMakeImageHandleResidentProc> fMakeImageHandleResident; 361 GrGLFunction<GrGLMakeImageHandleResidentProc> fMakeImageHandleResident;
384 GLPtr<GrGLMakeImageHandleNonResidentProc> fMakeImageHandleNonResident; 362 GrGLFunction<GrGLMakeImageHandleNonResidentProc> fMakeImageHandleNonResi dent;
385 GLPtr<GrGLIsTextureHandleResidentProc> fIsTextureHandleResident; 363 GrGLFunction<GrGLIsTextureHandleResidentProc> fIsTextureHandleResident;
386 GLPtr<GrGLIsImageHandleResidentProc> fIsImageHandleResident; 364 GrGLFunction<GrGLIsImageHandleResidentProc> fIsImageHandleResident;
387 GLPtr<GrGLUniformHandleui64Proc> fUniformHandleui64; 365 GrGLFunction<GrGLUniformHandleui64Proc> fUniformHandleui64;
388 GLPtr<GrGLUniformHandleui64vProc> fUniformHandleui64v; 366 GrGLFunction<GrGLUniformHandleui64vProc> fUniformHandleui64v;
389 GLPtr<GrGLProgramUniformHandleui64Proc> fProgramUniformHandleui64; 367 GrGLFunction<GrGLProgramUniformHandleui64Proc> fProgramUniformHandleui64 ;
390 GLPtr<GrGLProgramUniformHandleui64vProc> fProgramUniformHandleui64v; 368 GrGLFunction<GrGLProgramUniformHandleui64vProc> fProgramUniformHandleui6 4v;
391 369
392 /* EXT_direct_state_access */ 370 /* EXT_direct_state_access */
393 // We use the EXT verson because it is more expansive and interacts with more extensions 371 // We use the EXT verson because it is more expansive and interacts with more extensions
394 // than the ARB or core (4.5) versions. We may switch and/or omit method s in the future. 372 // than the ARB or core (4.5) versions. We may switch and/or omit method s in the future.
395 GLPtr<GrGLTextureParameteriProc> fTextureParameteri; 373 GrGLFunction<GrGLTextureParameteriProc> fTextureParameteri;
396 GLPtr<GrGLTextureParameterivProc> fTextureParameteriv; 374 GrGLFunction<GrGLTextureParameterivProc> fTextureParameteriv;
397 GLPtr<GrGLTextureParameterfProc> fTextureParameterf; 375 GrGLFunction<GrGLTextureParameterfProc> fTextureParameterf;
398 GLPtr<GrGLTextureParameterfvProc> fTextureParameterfv; 376 GrGLFunction<GrGLTextureParameterfvProc> fTextureParameterfv;
399 GLPtr<GrGLTextureImage1DProc> fTextureImage1D; 377 GrGLFunction<GrGLTextureImage1DProc> fTextureImage1D;
400 GLPtr<GrGLTextureImage2DProc> fTextureImage2D; 378 GrGLFunction<GrGLTextureImage2DProc> fTextureImage2D;
401 GLPtr<GrGLTextureSubImage1DProc> fTextureSubImage1D; 379 GrGLFunction<GrGLTextureSubImage1DProc> fTextureSubImage1D;
402 GLPtr<GrGLTextureSubImage2DProc> fTextureSubImage2D; 380 GrGLFunction<GrGLTextureSubImage2DProc> fTextureSubImage2D;
403 GLPtr<GrGLCopyTextureImage1DProc> fCopyTextureImage1D; 381 GrGLFunction<GrGLCopyTextureImage1DProc> fCopyTextureImage1D;
404 GLPtr<GrGLCopyTextureImage2DProc> fCopyTextureImage2D; 382 GrGLFunction<GrGLCopyTextureImage2DProc> fCopyTextureImage2D;
405 GLPtr<GrGLCopyTextureSubImage1DProc> fCopyTextureSubImage1D; 383 GrGLFunction<GrGLCopyTextureSubImage1DProc> fCopyTextureSubImage1D;
406 GLPtr<GrGLCopyTextureSubImage2DProc> fCopyTextureSubImage2D; 384 GrGLFunction<GrGLCopyTextureSubImage2DProc> fCopyTextureSubImage2D;
407 GLPtr<GrGLGetTextureImageProc> fGetTextureImage; 385 GrGLFunction<GrGLGetTextureImageProc> fGetTextureImage;
408 GLPtr<GrGLGetTextureParameterfvProc> fGetTextureParameterfv; 386 GrGLFunction<GrGLGetTextureParameterfvProc> fGetTextureParameterfv;
409 GLPtr<GrGLGetTextureParameterivProc> fGetTextureParameteriv; 387 GrGLFunction<GrGLGetTextureParameterivProc> fGetTextureParameteriv;
410 GLPtr<GrGLGetTextureLevelParameterfvProc> fGetTextureLevelParameterfv; 388 GrGLFunction<GrGLGetTextureLevelParameterfvProc> fGetTextureLevelParamet erfv;
411 GLPtr<GrGLGetTextureLevelParameterivProc> fGetTextureLevelParameteriv; 389 GrGLFunction<GrGLGetTextureLevelParameterivProc> fGetTextureLevelParamet eriv;
412 // OpenGL 1.2 390 // OpenGL 1.2
413 GLPtr<GrGLTextureImage3DProc> fTextureImage3D; 391 GrGLFunction<GrGLTextureImage3DProc> fTextureImage3D;
414 GLPtr<GrGLTextureSubImage3DProc> fTextureSubImage3D; 392 GrGLFunction<GrGLTextureSubImage3DProc> fTextureSubImage3D;
415 GLPtr<GrGLCopyTextureSubImage3DProc> fCopyTextureSubImage3D; 393 GrGLFunction<GrGLCopyTextureSubImage3DProc> fCopyTextureSubImage3D;
416 GLPtr<GrGLCompressedTextureImage3DProc> fCompressedTextureImage3D; 394 GrGLFunction<GrGLCompressedTextureImage3DProc> fCompressedTextureImage3D ;
417 GLPtr<GrGLCompressedTextureImage2DProc> fCompressedTextureImage2D; 395 GrGLFunction<GrGLCompressedTextureImage2DProc> fCompressedTextureImage2D ;
418 GLPtr<GrGLCompressedTextureImage1DProc> fCompressedTextureImage1D; 396 GrGLFunction<GrGLCompressedTextureImage1DProc> fCompressedTextureImage1D ;
419 GLPtr<GrGLCompressedTextureSubImage3DProc> fCompressedTextureSubImage3D; 397 GrGLFunction<GrGLCompressedTextureSubImage3DProc> fCompressedTextureSubI mage3D;
420 GLPtr<GrGLCompressedTextureSubImage2DProc> fCompressedTextureSubImage2D; 398 GrGLFunction<GrGLCompressedTextureSubImage2DProc> fCompressedTextureSubI mage2D;
421 GLPtr<GrGLCompressedTextureSubImage1DProc> fCompressedTextureSubImage1D; 399 GrGLFunction<GrGLCompressedTextureSubImage1DProc> fCompressedTextureSubI mage1D;
422 GLPtr<GrGLGetCompressedTextureImageProc> fGetCompressedTextureImage; 400 GrGLFunction<GrGLGetCompressedTextureImageProc> fGetCompressedTextureIma ge;
423 // OpenGL 1.5 401 // OpenGL 1.5
424 GLPtr<GrGLNamedBufferDataProc> fNamedBufferData; 402 GrGLFunction<GrGLNamedBufferDataProc> fNamedBufferData;
425 GLPtr<GrGLNamedBufferSubDataProc> fNamedBufferSubData; 403 GrGLFunction<GrGLNamedBufferSubDataProc> fNamedBufferSubData;
426 GLPtr<GrGLMapNamedBufferProc> fMapNamedBuffer; 404 GrGLFunction<GrGLMapNamedBufferProc> fMapNamedBuffer;
427 GLPtr<GrGLUnmapNamedBufferProc> fUnmapNamedBuffer; 405 GrGLFunction<GrGLUnmapNamedBufferProc> fUnmapNamedBuffer;
428 GLPtr<GrGLGetNamedBufferParameterivProc> fGetNamedBufferParameteriv; 406 GrGLFunction<GrGLGetNamedBufferParameterivProc> fGetNamedBufferParameter iv;
429 GLPtr<GrGLGetNamedBufferPointervProc> fGetNamedBufferPointerv; 407 GrGLFunction<GrGLGetNamedBufferPointervProc> fGetNamedBufferPointerv;
430 GLPtr<GrGLGetNamedBufferSubDataProc> fGetNamedBufferSubData; 408 GrGLFunction<GrGLGetNamedBufferSubDataProc> fGetNamedBufferSubData;
431 // OpenGL 2.0 409 // OpenGL 2.0
432 GLPtr<GrGLProgramUniform1fProc> fProgramUniform1f; 410 GrGLFunction<GrGLProgramUniform1fProc> fProgramUniform1f;
433 GLPtr<GrGLProgramUniform2fProc> fProgramUniform2f; 411 GrGLFunction<GrGLProgramUniform2fProc> fProgramUniform2f;
434 GLPtr<GrGLProgramUniform3fProc> fProgramUniform3f; 412 GrGLFunction<GrGLProgramUniform3fProc> fProgramUniform3f;
435 GLPtr<GrGLProgramUniform4fProc> fProgramUniform4f; 413 GrGLFunction<GrGLProgramUniform4fProc> fProgramUniform4f;
436 GLPtr<GrGLProgramUniform1iProc> fProgramUniform1i; 414 GrGLFunction<GrGLProgramUniform1iProc> fProgramUniform1i;
437 GLPtr<GrGLProgramUniform2iProc> fProgramUniform2i; 415 GrGLFunction<GrGLProgramUniform2iProc> fProgramUniform2i;
438 GLPtr<GrGLProgramUniform3iProc> fProgramUniform3i; 416 GrGLFunction<GrGLProgramUniform3iProc> fProgramUniform3i;
439 GLPtr<GrGLProgramUniform4iProc> fProgramUniform4i; 417 GrGLFunction<GrGLProgramUniform4iProc> fProgramUniform4i;
440 GLPtr<GrGLProgramUniform1fvProc> fProgramUniform1fv; 418 GrGLFunction<GrGLProgramUniform1fvProc> fProgramUniform1fv;
441 GLPtr<GrGLProgramUniform2fvProc> fProgramUniform2fv; 419 GrGLFunction<GrGLProgramUniform2fvProc> fProgramUniform2fv;
442 GLPtr<GrGLProgramUniform3fvProc> fProgramUniform3fv; 420 GrGLFunction<GrGLProgramUniform3fvProc> fProgramUniform3fv;
443 GLPtr<GrGLProgramUniform4fvProc> fProgramUniform4fv; 421 GrGLFunction<GrGLProgramUniform4fvProc> fProgramUniform4fv;
444 GLPtr<GrGLProgramUniform1ivProc> fProgramUniform1iv; 422 GrGLFunction<GrGLProgramUniform1ivProc> fProgramUniform1iv;
445 GLPtr<GrGLProgramUniform2ivProc> fProgramUniform2iv; 423 GrGLFunction<GrGLProgramUniform2ivProc> fProgramUniform2iv;
446 GLPtr<GrGLProgramUniform3ivProc> fProgramUniform3iv; 424 GrGLFunction<GrGLProgramUniform3ivProc> fProgramUniform3iv;
447 GLPtr<GrGLProgramUniform4ivProc> fProgramUniform4iv; 425 GrGLFunction<GrGLProgramUniform4ivProc> fProgramUniform4iv;
448 GLPtr<GrGLProgramUniformMatrix2fvProc> fProgramUniformMatrix2fv; 426 GrGLFunction<GrGLProgramUniformMatrix2fvProc> fProgramUniformMatrix2fv;
449 GLPtr<GrGLProgramUniformMatrix3fvProc> fProgramUniformMatrix3fv; 427 GrGLFunction<GrGLProgramUniformMatrix3fvProc> fProgramUniformMatrix3fv;
450 GLPtr<GrGLProgramUniformMatrix4fvProc> fProgramUniformMatrix4fv; 428 GrGLFunction<GrGLProgramUniformMatrix4fvProc> fProgramUniformMatrix4fv;
451 // OpenGL 2.1 429 // OpenGL 2.1
452 GLPtr<GrGLProgramUniformMatrix2x3fvProc> fProgramUniformMatrix2x3fv; 430 GrGLFunction<GrGLProgramUniformMatrix2x3fvProc> fProgramUniformMatrix2x3 fv;
453 GLPtr<GrGLProgramUniformMatrix3x2fvProc> fProgramUniformMatrix3x2fv; 431 GrGLFunction<GrGLProgramUniformMatrix3x2fvProc> fProgramUniformMatrix3x2 fv;
454 GLPtr<GrGLProgramUniformMatrix2x4fvProc> fProgramUniformMatrix2x4fv; 432 GrGLFunction<GrGLProgramUniformMatrix2x4fvProc> fProgramUniformMatrix2x4 fv;
455 GLPtr<GrGLProgramUniformMatrix4x2fvProc> fProgramUniformMatrix4x2fv; 433 GrGLFunction<GrGLProgramUniformMatrix4x2fvProc> fProgramUniformMatrix4x2 fv;
456 GLPtr<GrGLProgramUniformMatrix3x4fvProc> fProgramUniformMatrix3x4fv; 434 GrGLFunction<GrGLProgramUniformMatrix3x4fvProc> fProgramUniformMatrix3x4 fv;
457 GLPtr<GrGLProgramUniformMatrix4x3fvProc> fProgramUniformMatrix4x3fv; 435 GrGLFunction<GrGLProgramUniformMatrix4x3fvProc> fProgramUniformMatrix4x3 fv;
458 // OpenGL 3.0 436 // OpenGL 3.0
459 GLPtr<GrGLNamedRenderbufferStorageProc> fNamedRenderbufferStorage; 437 GrGLFunction<GrGLNamedRenderbufferStorageProc> fNamedRenderbufferStorage ;
460 GLPtr<GrGLGetNamedRenderbufferParameterivProc> fGetNamedRenderbufferPara meteriv; 438 GrGLFunction<GrGLGetNamedRenderbufferParameterivProc> fGetNamedRenderbuf ferParameteriv;
461 GLPtr<GrGLNamedRenderbufferStorageMultisampleProc> fNamedRenderbufferSto rageMultisample; 439 GrGLFunction<GrGLNamedRenderbufferStorageMultisampleProc> fNamedRenderbu fferStorageMultisample;
462 GLPtr<GrGLCheckNamedFramebufferStatusProc> fCheckNamedFramebufferStatus; 440 GrGLFunction<GrGLCheckNamedFramebufferStatusProc> fCheckNamedFramebuffer Status;
463 GLPtr<GrGLNamedFramebufferTexture1DProc> fNamedFramebufferTexture1D; 441 GrGLFunction<GrGLNamedFramebufferTexture1DProc> fNamedFramebufferTexture 1D;
464 GLPtr<GrGLNamedFramebufferTexture2DProc> fNamedFramebufferTexture2D; 442 GrGLFunction<GrGLNamedFramebufferTexture2DProc> fNamedFramebufferTexture 2D;
465 GLPtr<GrGLNamedFramebufferTexture3DProc> fNamedFramebufferTexture3D; 443 GrGLFunction<GrGLNamedFramebufferTexture3DProc> fNamedFramebufferTexture 3D;
466 GLPtr<GrGLNamedFramebufferRenderbufferProc> fNamedFramebufferRenderbuffe r; 444 GrGLFunction<GrGLNamedFramebufferRenderbufferProc> fNamedFramebufferRend erbuffer;
467 GLPtr<GrGLGetNamedFramebufferAttachmentParameterivProc> fGetNamedFramebu fferAttachmentParameteriv; 445 GrGLFunction<GrGLGetNamedFramebufferAttachmentParameterivProc> fGetNamed FramebufferAttachmentParameteriv;
468 GLPtr<GrGLGenerateTextureMipmapProc> fGenerateTextureMipmap; 446 GrGLFunction<GrGLGenerateTextureMipmapProc> fGenerateTextureMipmap;
469 GLPtr<GrGLFramebufferDrawBufferProc> fFramebufferDrawBuffer; 447 GrGLFunction<GrGLFramebufferDrawBufferProc> fFramebufferDrawBuffer;
470 GLPtr<GrGLFramebufferDrawBuffersProc> fFramebufferDrawBuffers; 448 GrGLFunction<GrGLFramebufferDrawBuffersProc> fFramebufferDrawBuffers;
471 GLPtr<GrGLFramebufferReadBufferProc> fFramebufferReadBuffer; 449 GrGLFunction<GrGLFramebufferReadBufferProc> fFramebufferReadBuffer;
472 GLPtr<GrGLGetFramebufferParameterivProc> fGetFramebufferParameteriv; 450 GrGLFunction<GrGLGetFramebufferParameterivProc> fGetFramebufferParameter iv;
473 GLPtr<GrGLNamedCopyBufferSubDataProc> fNamedCopyBufferSubData; 451 GrGLFunction<GrGLNamedCopyBufferSubDataProc> fNamedCopyBufferSubData;
474 GLPtr<GrGLVertexArrayVertexOffsetProc> fVertexArrayVertexOffset; 452 GrGLFunction<GrGLVertexArrayVertexOffsetProc> fVertexArrayVertexOffset;
475 GLPtr<GrGLVertexArrayColorOffsetProc> fVertexArrayColorOffset; 453 GrGLFunction<GrGLVertexArrayColorOffsetProc> fVertexArrayColorOffset;
476 GLPtr<GrGLVertexArrayEdgeFlagOffsetProc> fVertexArrayEdgeFlagOffset; 454 GrGLFunction<GrGLVertexArrayEdgeFlagOffsetProc> fVertexArrayEdgeFlagOffs et;
477 GLPtr<GrGLVertexArrayIndexOffsetProc> fVertexArrayIndexOffset; 455 GrGLFunction<GrGLVertexArrayIndexOffsetProc> fVertexArrayIndexOffset;
478 GLPtr<GrGLVertexArrayNormalOffsetProc> fVertexArrayNormalOffset; 456 GrGLFunction<GrGLVertexArrayNormalOffsetProc> fVertexArrayNormalOffset;
479 GLPtr<GrGLVertexArrayTexCoordOffsetProc> fVertexArrayTexCoordOffset; 457 GrGLFunction<GrGLVertexArrayTexCoordOffsetProc> fVertexArrayTexCoordOffs et;
480 GLPtr<GrGLVertexArrayMultiTexCoordOffsetProc> fVertexArrayMultiTexCoordO ffset; 458 GrGLFunction<GrGLVertexArrayMultiTexCoordOffsetProc> fVertexArrayMultiTe xCoordOffset;
481 GLPtr<GrGLVertexArrayFogCoordOffsetProc> fVertexArrayFogCoordOffset; 459 GrGLFunction<GrGLVertexArrayFogCoordOffsetProc> fVertexArrayFogCoordOffs et;
482 GLPtr<GrGLVertexArraySecondaryColorOffsetProc> fVertexArraySecondaryColo rOffset; 460 GrGLFunction<GrGLVertexArraySecondaryColorOffsetProc> fVertexArraySecond aryColorOffset;
483 GLPtr<GrGLVertexArrayVertexAttribOffsetProc> fVertexArrayVertexAttribOff set; 461 GrGLFunction<GrGLVertexArrayVertexAttribOffsetProc> fVertexArrayVertexAt tribOffset;
484 GLPtr<GrGLVertexArrayVertexAttribIOffsetProc> fVertexArrayVertexAttribIO ffset; 462 GrGLFunction<GrGLVertexArrayVertexAttribIOffsetProc> fVertexArrayVertexA ttribIOffset;
485 GLPtr<GrGLEnableVertexArrayProc> fEnableVertexArray; 463 GrGLFunction<GrGLEnableVertexArrayProc> fEnableVertexArray;
486 GLPtr<GrGLDisableVertexArrayProc> fDisableVertexArray; 464 GrGLFunction<GrGLDisableVertexArrayProc> fDisableVertexArray;
487 GLPtr<GrGLEnableVertexArrayAttribProc> fEnableVertexArrayAttrib; 465 GrGLFunction<GrGLEnableVertexArrayAttribProc> fEnableVertexArrayAttrib;
488 GLPtr<GrGLDisableVertexArrayAttribProc> fDisableVertexArrayAttrib; 466 GrGLFunction<GrGLDisableVertexArrayAttribProc> fDisableVertexArrayAttrib ;
489 GLPtr<GrGLGetVertexArrayIntegervProc> fGetVertexArrayIntegerv; 467 GrGLFunction<GrGLGetVertexArrayIntegervProc> fGetVertexArrayIntegerv;
490 GLPtr<GrGLGetVertexArrayPointervProc> fGetVertexArrayPointerv; 468 GrGLFunction<GrGLGetVertexArrayPointervProc> fGetVertexArrayPointerv;
491 GLPtr<GrGLGetVertexArrayIntegeri_vProc> fGetVertexArrayIntegeri_v; 469 GrGLFunction<GrGLGetVertexArrayIntegeri_vProc> fGetVertexArrayIntegeri_v ;
492 GLPtr<GrGLGetVertexArrayPointeri_vProc> fGetVertexArrayPointeri_v; 470 GrGLFunction<GrGLGetVertexArrayPointeri_vProc> fGetVertexArrayPointeri_v ;
493 GLPtr<GrGLMapNamedBufferRangeProc> fMapNamedBufferRange; 471 GrGLFunction<GrGLMapNamedBufferRangeProc> fMapNamedBufferRange;
494 GLPtr<GrGLFlushMappedNamedBufferRangeProc> fFlushMappedNamedBufferRange; 472 GrGLFunction<GrGLFlushMappedNamedBufferRangeProc> fFlushMappedNamedBuffe rRange;
495 473
496 /* KHR_debug */ 474 /* KHR_debug */
497 GLPtr<GrGLDebugMessageControlProc> fDebugMessageControl; 475 GrGLFunction<GrGLDebugMessageControlProc> fDebugMessageControl;
498 GLPtr<GrGLDebugMessageInsertProc> fDebugMessageInsert; 476 GrGLFunction<GrGLDebugMessageInsertProc> fDebugMessageInsert;
499 GLPtr<GrGLDebugMessageCallbackProc> fDebugMessageCallback; 477 GrGLFunction<GrGLDebugMessageCallbackProc> fDebugMessageCallback;
500 GLPtr<GrGLGetDebugMessageLogProc> fGetDebugMessageLog; 478 GrGLFunction<GrGLGetDebugMessageLogProc> fGetDebugMessageLog;
501 GLPtr<GrGLPushDebugGroupProc> fPushDebugGroup; 479 GrGLFunction<GrGLPushDebugGroupProc> fPushDebugGroup;
502 GLPtr<GrGLPopDebugGroupProc> fPopDebugGroup; 480 GrGLFunction<GrGLPopDebugGroupProc> fPopDebugGroup;
503 GLPtr<GrGLObjectLabelProc> fObjectLabel; 481 GrGLFunction<GrGLObjectLabelProc> fObjectLabel;
504 482
505 /* EGL functions */ 483 /* EGL functions */
506 GLPtr<GrEGLCreateImageProc> fEGLCreateImage; 484 GrGLFunction<GrEGLCreateImageProc> fEGLCreateImage;
507 GLPtr<GrEGLDestroyImageProc> fEGLDestroyImage; 485 GrGLFunction<GrEGLDestroyImageProc> fEGLDestroyImage;
508 } fFunctions; 486 } fFunctions;
509 487
510 // Per-GL func callback 488 // Per-GL func callback
511 #if GR_GL_PER_GL_FUNC_CALLBACK 489 #if GR_GL_PER_GL_FUNC_CALLBACK
512 GrGLInterfaceCallbackProc fCallback; 490 GrGLInterfaceCallbackProc fCallback;
513 GrGLInterfaceCallbackData fCallbackData; 491 GrGLInterfaceCallbackData fCallbackData;
514 #endif 492 #endif
515 493
516 // This exists for internal testing. 494 // This exists for internal testing.
517 virtual void abandon() const {} 495 virtual void abandon() const {}
518 }; 496 };
519 497
520 #endif 498 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698