OLD | NEW |
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 Loading... |
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 |
OLD | NEW |