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

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 and address comment 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<GrGLVertexAttribPointerProc> fVertexAttribPointer; 313 GrGLFunction<GrGLVertexAttribPointerProc> fVertexAttribPointer;
336 GLPtr<GrGLViewportProc> fViewport; 314 GrGLFunction<GrGLViewportProc> fViewport;
337 315
338 /* GL_NV_path_rendering */ 316 /* GL_NV_path_rendering */
339 GLPtr<GrGLMatrixLoadfProc> fMatrixLoadf; 317 GrGLFunction<GrGLMatrixLoadfProc> fMatrixLoadf;
340 GLPtr<GrGLMatrixLoadIdentityProc> fMatrixLoadIdentity; 318 GrGLFunction<GrGLMatrixLoadIdentityProc> fMatrixLoadIdentity;
341 GLPtr<GrGLGetProgramResourceLocationProc> fGetProgramResourceLocation; 319 GrGLFunction<GrGLGetProgramResourceLocationProc> fGetProgramResourceLoca tion;
342 GLPtr<GrGLPathCommandsProc> fPathCommands; 320 GrGLFunction<GrGLPathCommandsProc> fPathCommands;
343 GLPtr<GrGLPathParameteriProc> fPathParameteri; 321 GrGLFunction<GrGLPathParameteriProc> fPathParameteri;
344 GLPtr<GrGLPathParameterfProc> fPathParameterf; 322 GrGLFunction<GrGLPathParameterfProc> fPathParameterf;
345 GLPtr<GrGLGenPathsProc> fGenPaths; 323 GrGLFunction<GrGLGenPathsProc> fGenPaths;
346 GLPtr<GrGLDeletePathsProc> fDeletePaths; 324 GrGLFunction<GrGLDeletePathsProc> fDeletePaths;
347 GLPtr<GrGLIsPathProc> fIsPath; 325 GrGLFunction<GrGLIsPathProc> fIsPath;
348 GLPtr<GrGLPathStencilFuncProc> fPathStencilFunc; 326 GrGLFunction<GrGLPathStencilFuncProc> fPathStencilFunc;
349 GLPtr<GrGLStencilFillPathProc> fStencilFillPath; 327 GrGLFunction<GrGLStencilFillPathProc> fStencilFillPath;
350 GLPtr<GrGLStencilStrokePathProc> fStencilStrokePath; 328 GrGLFunction<GrGLStencilStrokePathProc> fStencilStrokePath;
351 GLPtr<GrGLStencilFillPathInstancedProc> fStencilFillPathInstanced; 329 GrGLFunction<GrGLStencilFillPathInstancedProc> fStencilFillPathInstanced ;
352 GLPtr<GrGLStencilStrokePathInstancedProc> fStencilStrokePathInstanced; 330 GrGLFunction<GrGLStencilStrokePathInstancedProc> fStencilStrokePathInsta nced;
353 GLPtr<GrGLCoverFillPathProc> fCoverFillPath; 331 GrGLFunction<GrGLCoverFillPathProc> fCoverFillPath;
354 GLPtr<GrGLCoverStrokePathProc> fCoverStrokePath; 332 GrGLFunction<GrGLCoverStrokePathProc> fCoverStrokePath;
355 GLPtr<GrGLCoverFillPathInstancedProc> fCoverFillPathInstanced; 333 GrGLFunction<GrGLCoverFillPathInstancedProc> fCoverFillPathInstanced;
356 GLPtr<GrGLCoverStrokePathInstancedProc> fCoverStrokePathInstanced; 334 GrGLFunction<GrGLCoverStrokePathInstancedProc> fCoverStrokePathInstanced ;
357 // NV_path_rendering v1.2 335 // NV_path_rendering v1.2
358 GLPtr<GrGLStencilThenCoverFillPathProc> fStencilThenCoverFillPath; 336 GrGLFunction<GrGLStencilThenCoverFillPathProc> fStencilThenCoverFillPath ;
359 GLPtr<GrGLStencilThenCoverStrokePathProc> fStencilThenCoverStrokePath; 337 GrGLFunction<GrGLStencilThenCoverStrokePathProc> fStencilThenCoverStroke Path;
360 GLPtr<GrGLStencilThenCoverFillPathInstancedProc> fStencilThenCoverFillPa thInstanced; 338 GrGLFunction<GrGLStencilThenCoverFillPathInstancedProc> fStencilThenCove rFillPathInstanced;
361 GLPtr<GrGLStencilThenCoverStrokePathInstancedProc> fStencilThenCoverStro kePathInstanced; 339 GrGLFunction<GrGLStencilThenCoverStrokePathInstancedProc> fStencilThenCo verStrokePathInstanced;
362 // NV_path_rendering v1.3 340 // NV_path_rendering v1.3
363 GLPtr<GrGLProgramPathFragmentInputGenProc> fProgramPathFragmentInputGen; 341 GrGLFunction<GrGLProgramPathFragmentInputGenProc> fProgramPathFragmentIn putGen;
364 // CHROMIUM_path_rendering 342 // CHROMIUM_path_rendering
365 GLPtr<GrGLBindFragmentInputLocationProc> fBindFragmentInputLocation; 343 GrGLFunction<GrGLBindFragmentInputLocationProc> fBindFragmentInputLocati on;
366 344
367 /* NV_framebuffer_mixed_samples */ 345 /* NV_framebuffer_mixed_samples */
368 GLPtr<GrGLCoverageModulationProc> fCoverageModulation; 346 GrGLFunction<GrGLCoverageModulationProc> fCoverageModulation;
369 347
370 /* EXT_multi_draw_indirect */ 348 /* EXT_multi_draw_indirect */
371 GLPtr<GrGLMultiDrawArraysIndirectProc> fMultiDrawArraysIndirect; 349 GrGLFunction<GrGLMultiDrawArraysIndirectProc> fMultiDrawArraysIndirect;
372 GLPtr<GrGLMultiDrawElementsIndirectProc> fMultiDrawElementsIndirect; 350 GrGLFunction<GrGLMultiDrawElementsIndirectProc> fMultiDrawElementsIndire ct;
373 351
374 /* NV_bindless_texture */ 352 /* NV_bindless_texture */
375 // We use the NVIDIA verson for now because it does not require dynamica lly uniform handles. 353 // We use the NVIDIA verson for now because it does not require dynamica lly uniform handles.
376 // We may switch the the ARB version and/or omit methods in the future. 354 // We may switch the the ARB version and/or omit methods in the future.
377 GLPtr<GrGLGetTextureHandleProc> fGetTextureHandle; 355 GrGLFunction<GrGLGetTextureHandleProc> fGetTextureHandle;
378 GLPtr<GrGLGetTextureSamplerHandleProc> fGetTextureSamplerHandle; 356 GrGLFunction<GrGLGetTextureSamplerHandleProc> fGetTextureSamplerHandle;
379 GLPtr<GrGLMakeTextureHandleResidentProc> fMakeTextureHandleResident; 357 GrGLFunction<GrGLMakeTextureHandleResidentProc> fMakeTextureHandleReside nt;
380 GLPtr<GrGLMakeTextureHandleNonResidentProc> fMakeTextureHandleNonResiden t; 358 GrGLFunction<GrGLMakeTextureHandleNonResidentProc> fMakeTextureHandleNon Resident;
381 GLPtr<GrGLGetImageHandleProc> fGetImageHandle; 359 GrGLFunction<GrGLGetImageHandleProc> fGetImageHandle;
382 GLPtr<GrGLMakeImageHandleResidentProc> fMakeImageHandleResident; 360 GrGLFunction<GrGLMakeImageHandleResidentProc> fMakeImageHandleResident;
383 GLPtr<GrGLMakeImageHandleNonResidentProc> fMakeImageHandleNonResident; 361 GrGLFunction<GrGLMakeImageHandleNonResidentProc> fMakeImageHandleNonResi dent;
384 GLPtr<GrGLIsTextureHandleResidentProc> fIsTextureHandleResident; 362 GrGLFunction<GrGLIsTextureHandleResidentProc> fIsTextureHandleResident;
385 GLPtr<GrGLIsImageHandleResidentProc> fIsImageHandleResident; 363 GrGLFunction<GrGLIsImageHandleResidentProc> fIsImageHandleResident;
386 GLPtr<GrGLUniformHandleui64Proc> fUniformHandleui64; 364 GrGLFunction<GrGLUniformHandleui64Proc> fUniformHandleui64;
387 GLPtr<GrGLUniformHandleui64vProc> fUniformHandleui64v; 365 GrGLFunction<GrGLUniformHandleui64vProc> fUniformHandleui64v;
388 GLPtr<GrGLProgramUniformHandleui64Proc> fProgramUniformHandleui64; 366 GrGLFunction<GrGLProgramUniformHandleui64Proc> fProgramUniformHandleui64 ;
389 GLPtr<GrGLProgramUniformHandleui64vProc> fProgramUniformHandleui64v; 367 GrGLFunction<GrGLProgramUniformHandleui64vProc> fProgramUniformHandleui6 4v;
390 368
391 /* EXT_direct_state_access */ 369 /* EXT_direct_state_access */
392 // We use the EXT verson because it is more expansive and interacts with more extensions 370 // We use the EXT verson because it is more expansive and interacts with more extensions
393 // than the ARB or core (4.5) versions. We may switch and/or omit method s in the future. 371 // than the ARB or core (4.5) versions. We may switch and/or omit method s in the future.
394 GLPtr<GrGLTextureParameteriProc> fTextureParameteri; 372 GrGLFunction<GrGLTextureParameteriProc> fTextureParameteri;
395 GLPtr<GrGLTextureParameterivProc> fTextureParameteriv; 373 GrGLFunction<GrGLTextureParameterivProc> fTextureParameteriv;
396 GLPtr<GrGLTextureParameterfProc> fTextureParameterf; 374 GrGLFunction<GrGLTextureParameterfProc> fTextureParameterf;
397 GLPtr<GrGLTextureParameterfvProc> fTextureParameterfv; 375 GrGLFunction<GrGLTextureParameterfvProc> fTextureParameterfv;
398 GLPtr<GrGLTextureImage1DProc> fTextureImage1D; 376 GrGLFunction<GrGLTextureImage1DProc> fTextureImage1D;
399 GLPtr<GrGLTextureImage2DProc> fTextureImage2D; 377 GrGLFunction<GrGLTextureImage2DProc> fTextureImage2D;
400 GLPtr<GrGLTextureSubImage1DProc> fTextureSubImage1D; 378 GrGLFunction<GrGLTextureSubImage1DProc> fTextureSubImage1D;
401 GLPtr<GrGLTextureSubImage2DProc> fTextureSubImage2D; 379 GrGLFunction<GrGLTextureSubImage2DProc> fTextureSubImage2D;
402 GLPtr<GrGLCopyTextureImage1DProc> fCopyTextureImage1D; 380 GrGLFunction<GrGLCopyTextureImage1DProc> fCopyTextureImage1D;
403 GLPtr<GrGLCopyTextureImage2DProc> fCopyTextureImage2D; 381 GrGLFunction<GrGLCopyTextureImage2DProc> fCopyTextureImage2D;
404 GLPtr<GrGLCopyTextureSubImage1DProc> fCopyTextureSubImage1D; 382 GrGLFunction<GrGLCopyTextureSubImage1DProc> fCopyTextureSubImage1D;
405 GLPtr<GrGLCopyTextureSubImage2DProc> fCopyTextureSubImage2D; 383 GrGLFunction<GrGLCopyTextureSubImage2DProc> fCopyTextureSubImage2D;
406 GLPtr<GrGLGetTextureImageProc> fGetTextureImage; 384 GrGLFunction<GrGLGetTextureImageProc> fGetTextureImage;
407 GLPtr<GrGLGetTextureParameterfvProc> fGetTextureParameterfv; 385 GrGLFunction<GrGLGetTextureParameterfvProc> fGetTextureParameterfv;
408 GLPtr<GrGLGetTextureParameterivProc> fGetTextureParameteriv; 386 GrGLFunction<GrGLGetTextureParameterivProc> fGetTextureParameteriv;
409 GLPtr<GrGLGetTextureLevelParameterfvProc> fGetTextureLevelParameterfv; 387 GrGLFunction<GrGLGetTextureLevelParameterfvProc> fGetTextureLevelParamet erfv;
410 GLPtr<GrGLGetTextureLevelParameterivProc> fGetTextureLevelParameteriv; 388 GrGLFunction<GrGLGetTextureLevelParameterivProc> fGetTextureLevelParamet eriv;
411 // OpenGL 1.2 389 // OpenGL 1.2
412 GLPtr<GrGLTextureImage3DProc> fTextureImage3D; 390 GrGLFunction<GrGLTextureImage3DProc> fTextureImage3D;
413 GLPtr<GrGLTextureSubImage3DProc> fTextureSubImage3D; 391 GrGLFunction<GrGLTextureSubImage3DProc> fTextureSubImage3D;
414 GLPtr<GrGLCopyTextureSubImage3DProc> fCopyTextureSubImage3D; 392 GrGLFunction<GrGLCopyTextureSubImage3DProc> fCopyTextureSubImage3D;
415 GLPtr<GrGLCompressedTextureImage3DProc> fCompressedTextureImage3D; 393 GrGLFunction<GrGLCompressedTextureImage3DProc> fCompressedTextureImage3D ;
416 GLPtr<GrGLCompressedTextureImage2DProc> fCompressedTextureImage2D; 394 GrGLFunction<GrGLCompressedTextureImage2DProc> fCompressedTextureImage2D ;
417 GLPtr<GrGLCompressedTextureImage1DProc> fCompressedTextureImage1D; 395 GrGLFunction<GrGLCompressedTextureImage1DProc> fCompressedTextureImage1D ;
418 GLPtr<GrGLCompressedTextureSubImage3DProc> fCompressedTextureSubImage3D; 396 GrGLFunction<GrGLCompressedTextureSubImage3DProc> fCompressedTextureSubI mage3D;
419 GLPtr<GrGLCompressedTextureSubImage2DProc> fCompressedTextureSubImage2D; 397 GrGLFunction<GrGLCompressedTextureSubImage2DProc> fCompressedTextureSubI mage2D;
420 GLPtr<GrGLCompressedTextureSubImage1DProc> fCompressedTextureSubImage1D; 398 GrGLFunction<GrGLCompressedTextureSubImage1DProc> fCompressedTextureSubI mage1D;
421 GLPtr<GrGLGetCompressedTextureImageProc> fGetCompressedTextureImage; 399 GrGLFunction<GrGLGetCompressedTextureImageProc> fGetCompressedTextureIma ge;
422 // OpenGL 1.5 400 // OpenGL 1.5
423 GLPtr<GrGLNamedBufferDataProc> fNamedBufferData; 401 GrGLFunction<GrGLNamedBufferDataProc> fNamedBufferData;
424 GLPtr<GrGLNamedBufferSubDataProc> fNamedBufferSubData; 402 GrGLFunction<GrGLNamedBufferSubDataProc> fNamedBufferSubData;
425 GLPtr<GrGLMapNamedBufferProc> fMapNamedBuffer; 403 GrGLFunction<GrGLMapNamedBufferProc> fMapNamedBuffer;
426 GLPtr<GrGLUnmapNamedBufferProc> fUnmapNamedBuffer; 404 GrGLFunction<GrGLUnmapNamedBufferProc> fUnmapNamedBuffer;
427 GLPtr<GrGLGetNamedBufferParameterivProc> fGetNamedBufferParameteriv; 405 GrGLFunction<GrGLGetNamedBufferParameterivProc> fGetNamedBufferParameter iv;
428 GLPtr<GrGLGetNamedBufferPointervProc> fGetNamedBufferPointerv; 406 GrGLFunction<GrGLGetNamedBufferPointervProc> fGetNamedBufferPointerv;
429 GLPtr<GrGLGetNamedBufferSubDataProc> fGetNamedBufferSubData; 407 GrGLFunction<GrGLGetNamedBufferSubDataProc> fGetNamedBufferSubData;
430 // OpenGL 2.0 408 // OpenGL 2.0
431 GLPtr<GrGLProgramUniform1fProc> fProgramUniform1f; 409 GrGLFunction<GrGLProgramUniform1fProc> fProgramUniform1f;
432 GLPtr<GrGLProgramUniform2fProc> fProgramUniform2f; 410 GrGLFunction<GrGLProgramUniform2fProc> fProgramUniform2f;
433 GLPtr<GrGLProgramUniform3fProc> fProgramUniform3f; 411 GrGLFunction<GrGLProgramUniform3fProc> fProgramUniform3f;
434 GLPtr<GrGLProgramUniform4fProc> fProgramUniform4f; 412 GrGLFunction<GrGLProgramUniform4fProc> fProgramUniform4f;
435 GLPtr<GrGLProgramUniform1iProc> fProgramUniform1i; 413 GrGLFunction<GrGLProgramUniform1iProc> fProgramUniform1i;
436 GLPtr<GrGLProgramUniform2iProc> fProgramUniform2i; 414 GrGLFunction<GrGLProgramUniform2iProc> fProgramUniform2i;
437 GLPtr<GrGLProgramUniform3iProc> fProgramUniform3i; 415 GrGLFunction<GrGLProgramUniform3iProc> fProgramUniform3i;
438 GLPtr<GrGLProgramUniform4iProc> fProgramUniform4i; 416 GrGLFunction<GrGLProgramUniform4iProc> fProgramUniform4i;
439 GLPtr<GrGLProgramUniform1fvProc> fProgramUniform1fv; 417 GrGLFunction<GrGLProgramUniform1fvProc> fProgramUniform1fv;
440 GLPtr<GrGLProgramUniform2fvProc> fProgramUniform2fv; 418 GrGLFunction<GrGLProgramUniform2fvProc> fProgramUniform2fv;
441 GLPtr<GrGLProgramUniform3fvProc> fProgramUniform3fv; 419 GrGLFunction<GrGLProgramUniform3fvProc> fProgramUniform3fv;
442 GLPtr<GrGLProgramUniform4fvProc> fProgramUniform4fv; 420 GrGLFunction<GrGLProgramUniform4fvProc> fProgramUniform4fv;
443 GLPtr<GrGLProgramUniform1ivProc> fProgramUniform1iv; 421 GrGLFunction<GrGLProgramUniform1ivProc> fProgramUniform1iv;
444 GLPtr<GrGLProgramUniform2ivProc> fProgramUniform2iv; 422 GrGLFunction<GrGLProgramUniform2ivProc> fProgramUniform2iv;
445 GLPtr<GrGLProgramUniform3ivProc> fProgramUniform3iv; 423 GrGLFunction<GrGLProgramUniform3ivProc> fProgramUniform3iv;
446 GLPtr<GrGLProgramUniform4ivProc> fProgramUniform4iv; 424 GrGLFunction<GrGLProgramUniform4ivProc> fProgramUniform4iv;
447 GLPtr<GrGLProgramUniformMatrix2fvProc> fProgramUniformMatrix2fv; 425 GrGLFunction<GrGLProgramUniformMatrix2fvProc> fProgramUniformMatrix2fv;
448 GLPtr<GrGLProgramUniformMatrix3fvProc> fProgramUniformMatrix3fv; 426 GrGLFunction<GrGLProgramUniformMatrix3fvProc> fProgramUniformMatrix3fv;
449 GLPtr<GrGLProgramUniformMatrix4fvProc> fProgramUniformMatrix4fv; 427 GrGLFunction<GrGLProgramUniformMatrix4fvProc> fProgramUniformMatrix4fv;
450 // OpenGL 2.1 428 // OpenGL 2.1
451 GLPtr<GrGLProgramUniformMatrix2x3fvProc> fProgramUniformMatrix2x3fv; 429 GrGLFunction<GrGLProgramUniformMatrix2x3fvProc> fProgramUniformMatrix2x3 fv;
452 GLPtr<GrGLProgramUniformMatrix3x2fvProc> fProgramUniformMatrix3x2fv; 430 GrGLFunction<GrGLProgramUniformMatrix3x2fvProc> fProgramUniformMatrix3x2 fv;
453 GLPtr<GrGLProgramUniformMatrix2x4fvProc> fProgramUniformMatrix2x4fv; 431 GrGLFunction<GrGLProgramUniformMatrix2x4fvProc> fProgramUniformMatrix2x4 fv;
454 GLPtr<GrGLProgramUniformMatrix4x2fvProc> fProgramUniformMatrix4x2fv; 432 GrGLFunction<GrGLProgramUniformMatrix4x2fvProc> fProgramUniformMatrix4x2 fv;
455 GLPtr<GrGLProgramUniformMatrix3x4fvProc> fProgramUniformMatrix3x4fv; 433 GrGLFunction<GrGLProgramUniformMatrix3x4fvProc> fProgramUniformMatrix3x4 fv;
456 GLPtr<GrGLProgramUniformMatrix4x3fvProc> fProgramUniformMatrix4x3fv; 434 GrGLFunction<GrGLProgramUniformMatrix4x3fvProc> fProgramUniformMatrix4x3 fv;
457 // OpenGL 3.0 435 // OpenGL 3.0
458 GLPtr<GrGLNamedRenderbufferStorageProc> fNamedRenderbufferStorage; 436 GrGLFunction<GrGLNamedRenderbufferStorageProc> fNamedRenderbufferStorage ;
459 GLPtr<GrGLGetNamedRenderbufferParameterivProc> fGetNamedRenderbufferPara meteriv; 437 GrGLFunction<GrGLGetNamedRenderbufferParameterivProc> fGetNamedRenderbuf ferParameteriv;
460 GLPtr<GrGLNamedRenderbufferStorageMultisampleProc> fNamedRenderbufferSto rageMultisample; 438 GrGLFunction<GrGLNamedRenderbufferStorageMultisampleProc> fNamedRenderbu fferStorageMultisample;
461 GLPtr<GrGLCheckNamedFramebufferStatusProc> fCheckNamedFramebufferStatus; 439 GrGLFunction<GrGLCheckNamedFramebufferStatusProc> fCheckNamedFramebuffer Status;
462 GLPtr<GrGLNamedFramebufferTexture1DProc> fNamedFramebufferTexture1D; 440 GrGLFunction<GrGLNamedFramebufferTexture1DProc> fNamedFramebufferTexture 1D;
463 GLPtr<GrGLNamedFramebufferTexture2DProc> fNamedFramebufferTexture2D; 441 GrGLFunction<GrGLNamedFramebufferTexture2DProc> fNamedFramebufferTexture 2D;
464 GLPtr<GrGLNamedFramebufferTexture3DProc> fNamedFramebufferTexture3D; 442 GrGLFunction<GrGLNamedFramebufferTexture3DProc> fNamedFramebufferTexture 3D;
465 GLPtr<GrGLNamedFramebufferRenderbufferProc> fNamedFramebufferRenderbuffe r; 443 GrGLFunction<GrGLNamedFramebufferRenderbufferProc> fNamedFramebufferRend erbuffer;
466 GLPtr<GrGLGetNamedFramebufferAttachmentParameterivProc> fGetNamedFramebu fferAttachmentParameteriv; 444 GrGLFunction<GrGLGetNamedFramebufferAttachmentParameterivProc> fGetNamed FramebufferAttachmentParameteriv;
467 GLPtr<GrGLGenerateTextureMipmapProc> fGenerateTextureMipmap; 445 GrGLFunction<GrGLGenerateTextureMipmapProc> fGenerateTextureMipmap;
468 GLPtr<GrGLFramebufferDrawBufferProc> fFramebufferDrawBuffer; 446 GrGLFunction<GrGLFramebufferDrawBufferProc> fFramebufferDrawBuffer;
469 GLPtr<GrGLFramebufferDrawBuffersProc> fFramebufferDrawBuffers; 447 GrGLFunction<GrGLFramebufferDrawBuffersProc> fFramebufferDrawBuffers;
470 GLPtr<GrGLFramebufferReadBufferProc> fFramebufferReadBuffer; 448 GrGLFunction<GrGLFramebufferReadBufferProc> fFramebufferReadBuffer;
471 GLPtr<GrGLGetFramebufferParameterivProc> fGetFramebufferParameteriv; 449 GrGLFunction<GrGLGetFramebufferParameterivProc> fGetFramebufferParameter iv;
472 GLPtr<GrGLNamedCopyBufferSubDataProc> fNamedCopyBufferSubData; 450 GrGLFunction<GrGLNamedCopyBufferSubDataProc> fNamedCopyBufferSubData;
473 GLPtr<GrGLVertexArrayVertexOffsetProc> fVertexArrayVertexOffset; 451 GrGLFunction<GrGLVertexArrayVertexOffsetProc> fVertexArrayVertexOffset;
474 GLPtr<GrGLVertexArrayColorOffsetProc> fVertexArrayColorOffset; 452 GrGLFunction<GrGLVertexArrayColorOffsetProc> fVertexArrayColorOffset;
475 GLPtr<GrGLVertexArrayEdgeFlagOffsetProc> fVertexArrayEdgeFlagOffset; 453 GrGLFunction<GrGLVertexArrayEdgeFlagOffsetProc> fVertexArrayEdgeFlagOffs et;
476 GLPtr<GrGLVertexArrayIndexOffsetProc> fVertexArrayIndexOffset; 454 GrGLFunction<GrGLVertexArrayIndexOffsetProc> fVertexArrayIndexOffset;
477 GLPtr<GrGLVertexArrayNormalOffsetProc> fVertexArrayNormalOffset; 455 GrGLFunction<GrGLVertexArrayNormalOffsetProc> fVertexArrayNormalOffset;
478 GLPtr<GrGLVertexArrayTexCoordOffsetProc> fVertexArrayTexCoordOffset; 456 GrGLFunction<GrGLVertexArrayTexCoordOffsetProc> fVertexArrayTexCoordOffs et;
479 GLPtr<GrGLVertexArrayMultiTexCoordOffsetProc> fVertexArrayMultiTexCoordO ffset; 457 GrGLFunction<GrGLVertexArrayMultiTexCoordOffsetProc> fVertexArrayMultiTe xCoordOffset;
480 GLPtr<GrGLVertexArrayFogCoordOffsetProc> fVertexArrayFogCoordOffset; 458 GrGLFunction<GrGLVertexArrayFogCoordOffsetProc> fVertexArrayFogCoordOffs et;
481 GLPtr<GrGLVertexArraySecondaryColorOffsetProc> fVertexArraySecondaryColo rOffset; 459 GrGLFunction<GrGLVertexArraySecondaryColorOffsetProc> fVertexArraySecond aryColorOffset;
482 GLPtr<GrGLVertexArrayVertexAttribOffsetProc> fVertexArrayVertexAttribOff set; 460 GrGLFunction<GrGLVertexArrayVertexAttribOffsetProc> fVertexArrayVertexAt tribOffset;
483 GLPtr<GrGLVertexArrayVertexAttribIOffsetProc> fVertexArrayVertexAttribIO ffset; 461 GrGLFunction<GrGLVertexArrayVertexAttribIOffsetProc> fVertexArrayVertexA ttribIOffset;
484 GLPtr<GrGLEnableVertexArrayProc> fEnableVertexArray; 462 GrGLFunction<GrGLEnableVertexArrayProc> fEnableVertexArray;
485 GLPtr<GrGLDisableVertexArrayProc> fDisableVertexArray; 463 GrGLFunction<GrGLDisableVertexArrayProc> fDisableVertexArray;
486 GLPtr<GrGLEnableVertexArrayAttribProc> fEnableVertexArrayAttrib; 464 GrGLFunction<GrGLEnableVertexArrayAttribProc> fEnableVertexArrayAttrib;
487 GLPtr<GrGLDisableVertexArrayAttribProc> fDisableVertexArrayAttrib; 465 GrGLFunction<GrGLDisableVertexArrayAttribProc> fDisableVertexArrayAttrib ;
488 GLPtr<GrGLGetVertexArrayIntegervProc> fGetVertexArrayIntegerv; 466 GrGLFunction<GrGLGetVertexArrayIntegervProc> fGetVertexArrayIntegerv;
489 GLPtr<GrGLGetVertexArrayPointervProc> fGetVertexArrayPointerv; 467 GrGLFunction<GrGLGetVertexArrayPointervProc> fGetVertexArrayPointerv;
490 GLPtr<GrGLGetVertexArrayIntegeri_vProc> fGetVertexArrayIntegeri_v; 468 GrGLFunction<GrGLGetVertexArrayIntegeri_vProc> fGetVertexArrayIntegeri_v ;
491 GLPtr<GrGLGetVertexArrayPointeri_vProc> fGetVertexArrayPointeri_v; 469 GrGLFunction<GrGLGetVertexArrayPointeri_vProc> fGetVertexArrayPointeri_v ;
492 GLPtr<GrGLMapNamedBufferRangeProc> fMapNamedBufferRange; 470 GrGLFunction<GrGLMapNamedBufferRangeProc> fMapNamedBufferRange;
493 GLPtr<GrGLFlushMappedNamedBufferRangeProc> fFlushMappedNamedBufferRange; 471 GrGLFunction<GrGLFlushMappedNamedBufferRangeProc> fFlushMappedNamedBuffe rRange;
494 472
495 /* KHR_debug */ 473 /* KHR_debug */
496 GLPtr<GrGLDebugMessageControlProc> fDebugMessageControl; 474 GrGLFunction<GrGLDebugMessageControlProc> fDebugMessageControl;
497 GLPtr<GrGLDebugMessageInsertProc> fDebugMessageInsert; 475 GrGLFunction<GrGLDebugMessageInsertProc> fDebugMessageInsert;
498 GLPtr<GrGLDebugMessageCallbackProc> fDebugMessageCallback; 476 GrGLFunction<GrGLDebugMessageCallbackProc> fDebugMessageCallback;
499 GLPtr<GrGLGetDebugMessageLogProc> fGetDebugMessageLog; 477 GrGLFunction<GrGLGetDebugMessageLogProc> fGetDebugMessageLog;
500 GLPtr<GrGLPushDebugGroupProc> fPushDebugGroup; 478 GrGLFunction<GrGLPushDebugGroupProc> fPushDebugGroup;
501 GLPtr<GrGLPopDebugGroupProc> fPopDebugGroup; 479 GrGLFunction<GrGLPopDebugGroupProc> fPopDebugGroup;
502 GLPtr<GrGLObjectLabelProc> fObjectLabel; 480 GrGLFunction<GrGLObjectLabelProc> fObjectLabel;
503 481
504 /* EGL functions */ 482 /* EGL functions */
505 GLPtr<GrEGLCreateImageProc> fEGLCreateImage; 483 GrGLFunction<GrEGLCreateImageProc> fEGLCreateImage;
506 GLPtr<GrEGLDestroyImageProc> fEGLDestroyImage; 484 GrGLFunction<GrEGLDestroyImageProc> fEGLDestroyImage;
507 } fFunctions; 485 } fFunctions;
508 486
509 // Per-GL func callback 487 // Per-GL func callback
510 #if GR_GL_PER_GL_FUNC_CALLBACK 488 #if GR_GL_PER_GL_FUNC_CALLBACK
511 GrGLInterfaceCallbackProc fCallback; 489 GrGLInterfaceCallbackProc fCallback;
512 GrGLInterfaceCallbackData fCallbackData; 490 GrGLInterfaceCallbackData fCallbackData;
513 #endif 491 #endif
514 492
515 // This exists for internal testing. 493 // This exists for internal testing.
516 virtual void abandon() const {} 494 virtual void abandon() const {}
517 }; 495 };
518 496
519 #endif 497 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698