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

Side by Side Diff: ui/gl/gl_bindings_autogen_gl0.cc

Issue 2629633003: Refactor GL bindings so there is no global GLApi or DriverGL. (Closed)
Patch Set: rebase Created 3 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
« no previous file with comments | « ui/gl/gl_bindings_autogen_egl.cc ('k') | ui/gl/gl_bindings_autogen_gl1.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 //
5 // This file is auto-generated from
6 // ui/gl/generate_bindings.py
7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename
9 // DO NOT EDIT!
10
11 #include <string>
12
13 #include "base/trace_event/trace_event.h"
14 #include "ui/gl/gl_bindings.h"
15 #include "ui/gl/gl_context.h"
16 #include "ui/gl/gl_enums.h"
17 #include "ui/gl/gl_gl_api_implementation.h"
18 #include "ui/gl/gl_implementation.h"
19 #include "ui/gl/gl_version_info.h"
20
21 namespace gl {
22
23 void DriverGL::InitializeStaticBindings() {
24 fn.glActiveTextureFn = reinterpret_cast<glActiveTextureProc>(
25 GetGLProcAddress("glActiveTexture"));
26 fn.glApplyFramebufferAttachmentCMAAINTELFn = 0;
27 fn.glAttachShaderFn =
28 reinterpret_cast<glAttachShaderProc>(GetGLProcAddress("glAttachShader"));
29 fn.glBeginQueryFn = 0;
30 fn.glBeginTransformFeedbackFn = 0;
31 fn.glBindAttribLocationFn = reinterpret_cast<glBindAttribLocationProc>(
32 GetGLProcAddress("glBindAttribLocation"));
33 fn.glBindBufferFn =
34 reinterpret_cast<glBindBufferProc>(GetGLProcAddress("glBindBuffer"));
35 fn.glBindBufferBaseFn = 0;
36 fn.glBindBufferRangeFn = 0;
37 fn.glBindFragDataLocationFn = 0;
38 fn.glBindFragDataLocationIndexedFn = 0;
39 fn.glBindFramebufferEXTFn = 0;
40 fn.glBindImageTextureEXTFn = 0;
41 fn.glBindRenderbufferEXTFn = 0;
42 fn.glBindSamplerFn = 0;
43 fn.glBindTextureFn =
44 reinterpret_cast<glBindTextureProc>(GetGLProcAddress("glBindTexture"));
45 fn.glBindTransformFeedbackFn = 0;
46 fn.glBindUniformLocationCHROMIUMFn = 0;
47 fn.glBindVertexArrayOESFn = 0;
48 fn.glBlendBarrierKHRFn = 0;
49 fn.glBlendColorFn =
50 reinterpret_cast<glBlendColorProc>(GetGLProcAddress("glBlendColor"));
51 fn.glBlendEquationFn = reinterpret_cast<glBlendEquationProc>(
52 GetGLProcAddress("glBlendEquation"));
53 fn.glBlendEquationSeparateFn = reinterpret_cast<glBlendEquationSeparateProc>(
54 GetGLProcAddress("glBlendEquationSeparate"));
55 fn.glBlendFuncFn =
56 reinterpret_cast<glBlendFuncProc>(GetGLProcAddress("glBlendFunc"));
57 fn.glBlendFuncSeparateFn = reinterpret_cast<glBlendFuncSeparateProc>(
58 GetGLProcAddress("glBlendFuncSeparate"));
59 fn.glBlitFramebufferFn = 0;
60 fn.glBlitFramebufferANGLEFn = 0;
61 fn.glBlitFramebufferEXTFn = 0;
62 fn.glBufferDataFn =
63 reinterpret_cast<glBufferDataProc>(GetGLProcAddress("glBufferData"));
64 fn.glBufferSubDataFn = reinterpret_cast<glBufferSubDataProc>(
65 GetGLProcAddress("glBufferSubData"));
66 fn.glCheckFramebufferStatusEXTFn = 0;
67 fn.glClearFn = reinterpret_cast<glClearProc>(GetGLProcAddress("glClear"));
68 fn.glClearBufferfiFn = 0;
69 fn.glClearBufferfvFn = 0;
70 fn.glClearBufferivFn = 0;
71 fn.glClearBufferuivFn = 0;
72 fn.glClearColorFn =
73 reinterpret_cast<glClearColorProc>(GetGLProcAddress("glClearColor"));
74 fn.glClearDepthFn =
75 reinterpret_cast<glClearDepthProc>(GetGLProcAddress("glClearDepth"));
76 fn.glClearDepthfFn = 0;
77 fn.glClearStencilFn =
78 reinterpret_cast<glClearStencilProc>(GetGLProcAddress("glClearStencil"));
79 fn.glClientWaitSyncFn = 0;
80 fn.glColorMaskFn =
81 reinterpret_cast<glColorMaskProc>(GetGLProcAddress("glColorMask"));
82 fn.glCompileShaderFn = reinterpret_cast<glCompileShaderProc>(
83 GetGLProcAddress("glCompileShader"));
84 fn.glCompressedCopyTextureCHROMIUMFn = 0;
85 fn.glCompressedTexImage2DFn = reinterpret_cast<glCompressedTexImage2DProc>(
86 GetGLProcAddress("glCompressedTexImage2D"));
87 fn.glCompressedTexImage3DFn = 0;
88 fn.glCompressedTexSubImage2DFn =
89 reinterpret_cast<glCompressedTexSubImage2DProc>(
90 GetGLProcAddress("glCompressedTexSubImage2D"));
91 fn.glCompressedTexSubImage3DFn = 0;
92 fn.glCopyBufferSubDataFn = 0;
93 fn.glCopySubTextureCHROMIUMFn = 0;
94 fn.glCopyTexImage2DFn = reinterpret_cast<glCopyTexImage2DProc>(
95 GetGLProcAddress("glCopyTexImage2D"));
96 fn.glCopyTexSubImage2DFn = reinterpret_cast<glCopyTexSubImage2DProc>(
97 GetGLProcAddress("glCopyTexSubImage2D"));
98 fn.glCopyTexSubImage3DFn = 0;
99 fn.glCopyTextureCHROMIUMFn = 0;
100 fn.glCoverageModulationNVFn = 0;
101 fn.glCoverFillPathInstancedNVFn = 0;
102 fn.glCoverFillPathNVFn = 0;
103 fn.glCoverStrokePathInstancedNVFn = 0;
104 fn.glCoverStrokePathNVFn = 0;
105 fn.glCreateProgramFn = reinterpret_cast<glCreateProgramProc>(
106 GetGLProcAddress("glCreateProgram"));
107 fn.glCreateShaderFn =
108 reinterpret_cast<glCreateShaderProc>(GetGLProcAddress("glCreateShader"));
109 fn.glCullFaceFn =
110 reinterpret_cast<glCullFaceProc>(GetGLProcAddress("glCullFace"));
111 fn.glDebugMessageCallbackFn = 0;
112 fn.glDebugMessageControlFn = 0;
113 fn.glDebugMessageInsertFn = 0;
114 fn.glDeleteBuffersARBFn = reinterpret_cast<glDeleteBuffersARBProc>(
115 GetGLProcAddress("glDeleteBuffers"));
116 fn.glDeleteFencesAPPLEFn = 0;
117 fn.glDeleteFencesNVFn = 0;
118 fn.glDeleteFramebuffersEXTFn = 0;
119 fn.glDeletePathsNVFn = 0;
120 fn.glDeleteProgramFn = reinterpret_cast<glDeleteProgramProc>(
121 GetGLProcAddress("glDeleteProgram"));
122 fn.glDeleteQueriesFn = 0;
123 fn.glDeleteRenderbuffersEXTFn = 0;
124 fn.glDeleteSamplersFn = 0;
125 fn.glDeleteShaderFn =
126 reinterpret_cast<glDeleteShaderProc>(GetGLProcAddress("glDeleteShader"));
127 fn.glDeleteSyncFn = 0;
128 fn.glDeleteTexturesFn = reinterpret_cast<glDeleteTexturesProc>(
129 GetGLProcAddress("glDeleteTextures"));
130 fn.glDeleteTransformFeedbacksFn = 0;
131 fn.glDeleteVertexArraysOESFn = 0;
132 fn.glDepthFuncFn =
133 reinterpret_cast<glDepthFuncProc>(GetGLProcAddress("glDepthFunc"));
134 fn.glDepthMaskFn =
135 reinterpret_cast<glDepthMaskProc>(GetGLProcAddress("glDepthMask"));
136 fn.glDepthRangeFn =
137 reinterpret_cast<glDepthRangeProc>(GetGLProcAddress("glDepthRange"));
138 fn.glDepthRangefFn = 0;
139 fn.glDetachShaderFn =
140 reinterpret_cast<glDetachShaderProc>(GetGLProcAddress("glDetachShader"));
141 fn.glDisableFn =
142 reinterpret_cast<glDisableProc>(GetGLProcAddress("glDisable"));
143 fn.glDisableVertexAttribArrayFn =
144 reinterpret_cast<glDisableVertexAttribArrayProc>(
145 GetGLProcAddress("glDisableVertexAttribArray"));
146 fn.glDiscardFramebufferEXTFn = 0;
147 fn.glDrawArraysFn =
148 reinterpret_cast<glDrawArraysProc>(GetGLProcAddress("glDrawArrays"));
149 fn.glDrawArraysInstancedANGLEFn = 0;
150 fn.glDrawBufferFn = 0;
151 fn.glDrawBuffersARBFn = 0;
152 fn.glDrawElementsFn =
153 reinterpret_cast<glDrawElementsProc>(GetGLProcAddress("glDrawElements"));
154 fn.glDrawElementsInstancedANGLEFn = 0;
155 fn.glDrawRangeElementsFn = 0;
156 fn.glEGLImageTargetRenderbufferStorageOESFn = 0;
157 fn.glEGLImageTargetTexture2DOESFn = 0;
158 fn.glEnableFn = reinterpret_cast<glEnableProc>(GetGLProcAddress("glEnable"));
159 fn.glEnableVertexAttribArrayFn =
160 reinterpret_cast<glEnableVertexAttribArrayProc>(
161 GetGLProcAddress("glEnableVertexAttribArray"));
162 fn.glEndQueryFn = 0;
163 fn.glEndTransformFeedbackFn = 0;
164 fn.glFenceSyncFn = 0;
165 fn.glFinishFn = reinterpret_cast<glFinishProc>(GetGLProcAddress("glFinish"));
166 fn.glFinishFenceAPPLEFn = 0;
167 fn.glFinishFenceNVFn = 0;
168 fn.glFlushFn = reinterpret_cast<glFlushProc>(GetGLProcAddress("glFlush"));
169 fn.glFlushMappedBufferRangeFn = 0;
170 fn.glFramebufferRenderbufferEXTFn = 0;
171 fn.glFramebufferTexture2DEXTFn = 0;
172 fn.glFramebufferTexture2DMultisampleEXTFn = 0;
173 fn.glFramebufferTexture2DMultisampleIMGFn = 0;
174 fn.glFramebufferTextureLayerFn = 0;
175 fn.glFrontFaceFn =
176 reinterpret_cast<glFrontFaceProc>(GetGLProcAddress("glFrontFace"));
177 fn.glGenBuffersARBFn =
178 reinterpret_cast<glGenBuffersARBProc>(GetGLProcAddress("glGenBuffers"));
179 fn.glGenerateMipmapEXTFn = 0;
180 fn.glGenFencesAPPLEFn = 0;
181 fn.glGenFencesNVFn = 0;
182 fn.glGenFramebuffersEXTFn = 0;
183 fn.glGenPathsNVFn = 0;
184 fn.glGenQueriesFn = 0;
185 fn.glGenRenderbuffersEXTFn = 0;
186 fn.glGenSamplersFn = 0;
187 fn.glGenTexturesFn =
188 reinterpret_cast<glGenTexturesProc>(GetGLProcAddress("glGenTextures"));
189 fn.glGenTransformFeedbacksFn = 0;
190 fn.glGenVertexArraysOESFn = 0;
191 fn.glGetActiveAttribFn = reinterpret_cast<glGetActiveAttribProc>(
192 GetGLProcAddress("glGetActiveAttrib"));
193 fn.glGetActiveUniformFn = reinterpret_cast<glGetActiveUniformProc>(
194 GetGLProcAddress("glGetActiveUniform"));
195 fn.glGetActiveUniformBlockivFn = 0;
196 fn.glGetActiveUniformBlockivRobustANGLEFn = 0;
197 fn.glGetActiveUniformBlockNameFn = 0;
198 fn.glGetActiveUniformsivFn = 0;
199 fn.glGetAttachedShadersFn = reinterpret_cast<glGetAttachedShadersProc>(
200 GetGLProcAddress("glGetAttachedShaders"));
201 fn.glGetAttribLocationFn = reinterpret_cast<glGetAttribLocationProc>(
202 GetGLProcAddress("glGetAttribLocation"));
203 fn.glGetBooleani_vRobustANGLEFn = 0;
204 fn.glGetBooleanvFn =
205 reinterpret_cast<glGetBooleanvProc>(GetGLProcAddress("glGetBooleanv"));
206 fn.glGetBooleanvRobustANGLEFn = 0;
207 fn.glGetBufferParameteri64vRobustANGLEFn = 0;
208 fn.glGetBufferParameterivFn = reinterpret_cast<glGetBufferParameterivProc>(
209 GetGLProcAddress("glGetBufferParameteriv"));
210 fn.glGetBufferParameterivRobustANGLEFn = 0;
211 fn.glGetBufferPointervRobustANGLEFn = 0;
212 fn.glGetDebugMessageLogFn = 0;
213 fn.glGetErrorFn =
214 reinterpret_cast<glGetErrorProc>(GetGLProcAddress("glGetError"));
215 fn.glGetFenceivNVFn = 0;
216 fn.glGetFloatvFn =
217 reinterpret_cast<glGetFloatvProc>(GetGLProcAddress("glGetFloatv"));
218 fn.glGetFloatvRobustANGLEFn = 0;
219 fn.glGetFragDataIndexFn = 0;
220 fn.glGetFragDataLocationFn = 0;
221 fn.glGetFramebufferAttachmentParameterivEXTFn = 0;
222 fn.glGetFramebufferAttachmentParameterivRobustANGLEFn = 0;
223 fn.glGetFramebufferParameterivRobustANGLEFn = 0;
224 fn.glGetGraphicsResetStatusARBFn = 0;
225 fn.glGetInteger64i_vFn = 0;
226 fn.glGetInteger64i_vRobustANGLEFn = 0;
227 fn.glGetInteger64vFn = 0;
228 fn.glGetInteger64vRobustANGLEFn = 0;
229 fn.glGetIntegeri_vFn = 0;
230 fn.glGetIntegeri_vRobustANGLEFn = 0;
231 fn.glGetIntegervFn =
232 reinterpret_cast<glGetIntegervProc>(GetGLProcAddress("glGetIntegerv"));
233 fn.glGetIntegervRobustANGLEFn = 0;
234 fn.glGetInternalformativFn = 0;
235 fn.glGetInternalformativRobustANGLEFn = 0;
236 fn.glGetMultisamplefvRobustANGLEFn = 0;
237 fn.glGetnUniformfvRobustANGLEFn = 0;
238 fn.glGetnUniformivRobustANGLEFn = 0;
239 fn.glGetnUniformuivRobustANGLEFn = 0;
240 fn.glGetObjectLabelFn = 0;
241 fn.glGetObjectPtrLabelFn = 0;
242 fn.glGetPointervFn = 0;
243 fn.glGetPointervRobustANGLERobustANGLEFn = 0;
244 fn.glGetProgramBinaryFn = 0;
245 fn.glGetProgramInfoLogFn = reinterpret_cast<glGetProgramInfoLogProc>(
246 GetGLProcAddress("glGetProgramInfoLog"));
247 fn.glGetProgramInterfaceivFn = 0;
248 fn.glGetProgramInterfaceivRobustANGLEFn = 0;
249 fn.glGetProgramivFn =
250 reinterpret_cast<glGetProgramivProc>(GetGLProcAddress("glGetProgramiv"));
251 fn.glGetProgramivRobustANGLEFn = 0;
252 fn.glGetProgramResourceivFn = 0;
253 fn.glGetProgramResourceLocationFn = 0;
254 fn.glGetProgramResourceNameFn = 0;
255 fn.glGetQueryivFn = 0;
256 fn.glGetQueryivRobustANGLEFn = 0;
257 fn.glGetQueryObjecti64vFn = 0;
258 fn.glGetQueryObjecti64vRobustANGLEFn = 0;
259 fn.glGetQueryObjectivFn = 0;
260 fn.glGetQueryObjectivRobustANGLEFn = 0;
261 fn.glGetQueryObjectui64vFn = 0;
262 fn.glGetQueryObjectui64vRobustANGLEFn = 0;
263 fn.glGetQueryObjectuivFn = 0;
264 fn.glGetQueryObjectuivRobustANGLEFn = 0;
265 fn.glGetRenderbufferParameterivEXTFn = 0;
266 fn.glGetRenderbufferParameterivRobustANGLEFn = 0;
267 fn.glGetSamplerParameterfvFn = 0;
268 fn.glGetSamplerParameterfvRobustANGLEFn = 0;
269 fn.glGetSamplerParameterIivRobustANGLEFn = 0;
270 fn.glGetSamplerParameterIuivRobustANGLEFn = 0;
271 fn.glGetSamplerParameterivFn = 0;
272 fn.glGetSamplerParameterivRobustANGLEFn = 0;
273 fn.glGetShaderInfoLogFn = reinterpret_cast<glGetShaderInfoLogProc>(
274 GetGLProcAddress("glGetShaderInfoLog"));
275 fn.glGetShaderivFn =
276 reinterpret_cast<glGetShaderivProc>(GetGLProcAddress("glGetShaderiv"));
277 fn.glGetShaderivRobustANGLEFn = 0;
278 fn.glGetShaderPrecisionFormatFn = 0;
279 fn.glGetShaderSourceFn = reinterpret_cast<glGetShaderSourceProc>(
280 GetGLProcAddress("glGetShaderSource"));
281 fn.glGetStringFn =
282 reinterpret_cast<glGetStringProc>(GetGLProcAddress("glGetString"));
283 fn.glGetStringiFn =
284 reinterpret_cast<glGetStringiProc>(GetGLProcAddress("glGetStringi"));
285 fn.glGetSyncivFn = 0;
286 fn.glGetTexLevelParameterfvFn = 0;
287 fn.glGetTexLevelParameterfvRobustANGLEFn = 0;
288 fn.glGetTexLevelParameterivFn = 0;
289 fn.glGetTexLevelParameterivRobustANGLEFn = 0;
290 fn.glGetTexParameterfvFn = reinterpret_cast<glGetTexParameterfvProc>(
291 GetGLProcAddress("glGetTexParameterfv"));
292 fn.glGetTexParameterfvRobustANGLEFn = 0;
293 fn.glGetTexParameterIivRobustANGLEFn = 0;
294 fn.glGetTexParameterIuivRobustANGLEFn = 0;
295 fn.glGetTexParameterivFn = reinterpret_cast<glGetTexParameterivProc>(
296 GetGLProcAddress("glGetTexParameteriv"));
297 fn.glGetTexParameterivRobustANGLEFn = 0;
298 fn.glGetTransformFeedbackVaryingFn = 0;
299 fn.glGetTranslatedShaderSourceANGLEFn = 0;
300 fn.glGetUniformBlockIndexFn = 0;
301 fn.glGetUniformfvFn =
302 reinterpret_cast<glGetUniformfvProc>(GetGLProcAddress("glGetUniformfv"));
303 fn.glGetUniformfvRobustANGLEFn = 0;
304 fn.glGetUniformIndicesFn = 0;
305 fn.glGetUniformivFn =
306 reinterpret_cast<glGetUniformivProc>(GetGLProcAddress("glGetUniformiv"));
307 fn.glGetUniformivRobustANGLEFn = 0;
308 fn.glGetUniformLocationFn = reinterpret_cast<glGetUniformLocationProc>(
309 GetGLProcAddress("glGetUniformLocation"));
310 fn.glGetUniformuivFn = 0;
311 fn.glGetUniformuivRobustANGLEFn = 0;
312 fn.glGetVertexAttribfvFn = reinterpret_cast<glGetVertexAttribfvProc>(
313 GetGLProcAddress("glGetVertexAttribfv"));
314 fn.glGetVertexAttribfvRobustANGLEFn = 0;
315 fn.glGetVertexAttribIivRobustANGLEFn = 0;
316 fn.glGetVertexAttribIuivRobustANGLEFn = 0;
317 fn.glGetVertexAttribivFn = reinterpret_cast<glGetVertexAttribivProc>(
318 GetGLProcAddress("glGetVertexAttribiv"));
319 fn.glGetVertexAttribivRobustANGLEFn = 0;
320 fn.glGetVertexAttribPointervFn =
321 reinterpret_cast<glGetVertexAttribPointervProc>(
322 GetGLProcAddress("glGetVertexAttribPointerv"));
323 fn.glGetVertexAttribPointervRobustANGLEFn = 0;
324 fn.glHintFn = reinterpret_cast<glHintProc>(GetGLProcAddress("glHint"));
325 fn.glInsertEventMarkerEXTFn = 0;
326 fn.glInvalidateFramebufferFn = 0;
327 fn.glInvalidateSubFramebufferFn = 0;
328 fn.glIsBufferFn =
329 reinterpret_cast<glIsBufferProc>(GetGLProcAddress("glIsBuffer"));
330 fn.glIsEnabledFn =
331 reinterpret_cast<glIsEnabledProc>(GetGLProcAddress("glIsEnabled"));
332 fn.glIsFenceAPPLEFn = 0;
333 fn.glIsFenceNVFn = 0;
334 fn.glIsFramebufferEXTFn = 0;
335 fn.glIsPathNVFn = 0;
336 fn.glIsProgramFn =
337 reinterpret_cast<glIsProgramProc>(GetGLProcAddress("glIsProgram"));
338 fn.glIsQueryFn = 0;
339 fn.glIsRenderbufferEXTFn = 0;
340 fn.glIsSamplerFn = 0;
341 fn.glIsShaderFn =
342 reinterpret_cast<glIsShaderProc>(GetGLProcAddress("glIsShader"));
343 fn.glIsSyncFn = 0;
344 fn.glIsTextureFn =
345 reinterpret_cast<glIsTextureProc>(GetGLProcAddress("glIsTexture"));
346 fn.glIsTransformFeedbackFn = 0;
347 fn.glIsVertexArrayOESFn = 0;
348 fn.glLineWidthFn =
349 reinterpret_cast<glLineWidthProc>(GetGLProcAddress("glLineWidth"));
350 fn.glLinkProgramFn =
351 reinterpret_cast<glLinkProgramProc>(GetGLProcAddress("glLinkProgram"));
352 fn.glMapBufferFn = 0;
353 fn.glMapBufferRangeFn = 0;
354 fn.glMatrixLoadfEXTFn = 0;
355 fn.glMatrixLoadIdentityEXTFn = 0;
356 fn.glMemoryBarrierEXTFn = 0;
357 fn.glObjectLabelFn = 0;
358 fn.glObjectPtrLabelFn = 0;
359 fn.glPathCommandsNVFn = 0;
360 fn.glPathParameterfNVFn = 0;
361 fn.glPathParameteriNVFn = 0;
362 fn.glPathStencilFuncNVFn = 0;
363 fn.glPauseTransformFeedbackFn = 0;
364 fn.glPixelStoreiFn =
365 reinterpret_cast<glPixelStoreiProc>(GetGLProcAddress("glPixelStorei"));
366 fn.glPointParameteriFn = 0;
367 fn.glPolygonOffsetFn = reinterpret_cast<glPolygonOffsetProc>(
368 GetGLProcAddress("glPolygonOffset"));
369 fn.glPopDebugGroupFn = 0;
370 fn.glPopGroupMarkerEXTFn = 0;
371 fn.glPrimitiveRestartIndexFn = 0;
372 fn.glProgramBinaryFn = 0;
373 fn.glProgramParameteriFn = 0;
374 fn.glProgramPathFragmentInputGenNVFn = 0;
375 fn.glPushDebugGroupFn = 0;
376 fn.glPushGroupMarkerEXTFn = 0;
377 fn.glQueryCounterFn = 0;
378 fn.glReadBufferFn = 0;
379 fn.glReadnPixelsRobustANGLEFn = 0;
380 fn.glReadPixelsFn =
381 reinterpret_cast<glReadPixelsProc>(GetGLProcAddress("glReadPixels"));
382 fn.glReadPixelsRobustANGLEFn = 0;
383 fn.glReleaseShaderCompilerFn = 0;
384 fn.glRenderbufferStorageEXTFn = 0;
385 fn.glRenderbufferStorageMultisampleFn = 0;
386 fn.glRenderbufferStorageMultisampleANGLEFn = 0;
387 fn.glRenderbufferStorageMultisampleEXTFn = 0;
388 fn.glRenderbufferStorageMultisampleIMGFn = 0;
389 fn.glResumeTransformFeedbackFn = 0;
390 fn.glSampleCoverageFn = reinterpret_cast<glSampleCoverageProc>(
391 GetGLProcAddress("glSampleCoverage"));
392 fn.glSamplerParameterfFn = 0;
393 fn.glSamplerParameterfvFn = 0;
394 fn.glSamplerParameterfvRobustANGLEFn = 0;
395 fn.glSamplerParameteriFn = 0;
396 fn.glSamplerParameterIivRobustANGLEFn = 0;
397 fn.glSamplerParameterIuivRobustANGLEFn = 0;
398 fn.glSamplerParameterivFn = 0;
399 fn.glSamplerParameterivRobustANGLEFn = 0;
400 fn.glScissorFn =
401 reinterpret_cast<glScissorProc>(GetGLProcAddress("glScissor"));
402 fn.glSetFenceAPPLEFn = 0;
403 fn.glSetFenceNVFn = 0;
404 fn.glShaderBinaryFn = 0;
405 fn.glShaderSourceFn =
406 reinterpret_cast<glShaderSourceProc>(GetGLProcAddress("glShaderSource"));
407 fn.glStencilFillPathInstancedNVFn = 0;
408 fn.glStencilFillPathNVFn = 0;
409 fn.glStencilFuncFn =
410 reinterpret_cast<glStencilFuncProc>(GetGLProcAddress("glStencilFunc"));
411 fn.glStencilFuncSeparateFn = reinterpret_cast<glStencilFuncSeparateProc>(
412 GetGLProcAddress("glStencilFuncSeparate"));
413 fn.glStencilMaskFn =
414 reinterpret_cast<glStencilMaskProc>(GetGLProcAddress("glStencilMask"));
415 fn.glStencilMaskSeparateFn = reinterpret_cast<glStencilMaskSeparateProc>(
416 GetGLProcAddress("glStencilMaskSeparate"));
417 fn.glStencilOpFn =
418 reinterpret_cast<glStencilOpProc>(GetGLProcAddress("glStencilOp"));
419 fn.glStencilOpSeparateFn = reinterpret_cast<glStencilOpSeparateProc>(
420 GetGLProcAddress("glStencilOpSeparate"));
421 fn.glStencilStrokePathInstancedNVFn = 0;
422 fn.glStencilStrokePathNVFn = 0;
423 fn.glStencilThenCoverFillPathInstancedNVFn = 0;
424 fn.glStencilThenCoverFillPathNVFn = 0;
425 fn.glStencilThenCoverStrokePathInstancedNVFn = 0;
426 fn.glStencilThenCoverStrokePathNVFn = 0;
427 fn.glTestFenceAPPLEFn = 0;
428 fn.glTestFenceNVFn = 0;
429 fn.glTexImage2DFn =
430 reinterpret_cast<glTexImage2DProc>(GetGLProcAddress("glTexImage2D"));
431 fn.glTexImage2DRobustANGLEFn = 0;
432 fn.glTexImage3DFn = 0;
433 fn.glTexImage3DRobustANGLEFn = 0;
434 fn.glTexParameterfFn = reinterpret_cast<glTexParameterfProc>(
435 GetGLProcAddress("glTexParameterf"));
436 fn.glTexParameterfvFn = reinterpret_cast<glTexParameterfvProc>(
437 GetGLProcAddress("glTexParameterfv"));
438 fn.glTexParameterfvRobustANGLEFn = 0;
439 fn.glTexParameteriFn = reinterpret_cast<glTexParameteriProc>(
440 GetGLProcAddress("glTexParameteri"));
441 fn.glTexParameterIivRobustANGLEFn = 0;
442 fn.glTexParameterIuivRobustANGLEFn = 0;
443 fn.glTexParameterivFn = reinterpret_cast<glTexParameterivProc>(
444 GetGLProcAddress("glTexParameteriv"));
445 fn.glTexParameterivRobustANGLEFn = 0;
446 fn.glTexStorage2DEXTFn = 0;
447 fn.glTexStorage3DFn = 0;
448 fn.glTexSubImage2DFn = reinterpret_cast<glTexSubImage2DProc>(
449 GetGLProcAddress("glTexSubImage2D"));
450 fn.glTexSubImage2DRobustANGLEFn = 0;
451 fn.glTexSubImage3DFn = 0;
452 fn.glTexSubImage3DRobustANGLEFn = 0;
453 fn.glTransformFeedbackVaryingsFn = 0;
454 fn.glUniform1fFn =
455 reinterpret_cast<glUniform1fProc>(GetGLProcAddress("glUniform1f"));
456 fn.glUniform1fvFn =
457 reinterpret_cast<glUniform1fvProc>(GetGLProcAddress("glUniform1fv"));
458 fn.glUniform1iFn =
459 reinterpret_cast<glUniform1iProc>(GetGLProcAddress("glUniform1i"));
460 fn.glUniform1ivFn =
461 reinterpret_cast<glUniform1ivProc>(GetGLProcAddress("glUniform1iv"));
462 fn.glUniform1uiFn = 0;
463 fn.glUniform1uivFn = 0;
464 fn.glUniform2fFn =
465 reinterpret_cast<glUniform2fProc>(GetGLProcAddress("glUniform2f"));
466 fn.glUniform2fvFn =
467 reinterpret_cast<glUniform2fvProc>(GetGLProcAddress("glUniform2fv"));
468 fn.glUniform2iFn =
469 reinterpret_cast<glUniform2iProc>(GetGLProcAddress("glUniform2i"));
470 fn.glUniform2ivFn =
471 reinterpret_cast<glUniform2ivProc>(GetGLProcAddress("glUniform2iv"));
472 fn.glUniform2uiFn = 0;
473 fn.glUniform2uivFn = 0;
474 fn.glUniform3fFn =
475 reinterpret_cast<glUniform3fProc>(GetGLProcAddress("glUniform3f"));
476 fn.glUniform3fvFn =
477 reinterpret_cast<glUniform3fvProc>(GetGLProcAddress("glUniform3fv"));
478 fn.glUniform3iFn =
479 reinterpret_cast<glUniform3iProc>(GetGLProcAddress("glUniform3i"));
480 fn.glUniform3ivFn =
481 reinterpret_cast<glUniform3ivProc>(GetGLProcAddress("glUniform3iv"));
482 fn.glUniform3uiFn = 0;
483 fn.glUniform3uivFn = 0;
484 fn.glUniform4fFn =
485 reinterpret_cast<glUniform4fProc>(GetGLProcAddress("glUniform4f"));
486 fn.glUniform4fvFn =
487 reinterpret_cast<glUniform4fvProc>(GetGLProcAddress("glUniform4fv"));
488 fn.glUniform4iFn =
489 reinterpret_cast<glUniform4iProc>(GetGLProcAddress("glUniform4i"));
490 fn.glUniform4ivFn =
491 reinterpret_cast<glUniform4ivProc>(GetGLProcAddress("glUniform4iv"));
492 fn.glUniform4uiFn = 0;
493 fn.glUniform4uivFn = 0;
494 fn.glUniformBlockBindingFn = 0;
495 fn.glUniformMatrix2fvFn = reinterpret_cast<glUniformMatrix2fvProc>(
496 GetGLProcAddress("glUniformMatrix2fv"));
497 fn.glUniformMatrix2x3fvFn = 0;
498 fn.glUniformMatrix2x4fvFn = 0;
499 fn.glUniformMatrix3fvFn = reinterpret_cast<glUniformMatrix3fvProc>(
500 GetGLProcAddress("glUniformMatrix3fv"));
501 fn.glUniformMatrix3x2fvFn = 0;
502 fn.glUniformMatrix3x4fvFn = 0;
503 fn.glUniformMatrix4fvFn = reinterpret_cast<glUniformMatrix4fvProc>(
504 GetGLProcAddress("glUniformMatrix4fv"));
505 fn.glUniformMatrix4x2fvFn = 0;
506 fn.glUniformMatrix4x3fvFn = 0;
507 fn.glUnmapBufferFn = 0;
508 fn.glUseProgramFn =
509 reinterpret_cast<glUseProgramProc>(GetGLProcAddress("glUseProgram"));
510 fn.glValidateProgramFn = reinterpret_cast<glValidateProgramProc>(
511 GetGLProcAddress("glValidateProgram"));
512 fn.glVertexAttrib1fFn = reinterpret_cast<glVertexAttrib1fProc>(
513 GetGLProcAddress("glVertexAttrib1f"));
514 fn.glVertexAttrib1fvFn = reinterpret_cast<glVertexAttrib1fvProc>(
515 GetGLProcAddress("glVertexAttrib1fv"));
516 fn.glVertexAttrib2fFn = reinterpret_cast<glVertexAttrib2fProc>(
517 GetGLProcAddress("glVertexAttrib2f"));
518 fn.glVertexAttrib2fvFn = reinterpret_cast<glVertexAttrib2fvProc>(
519 GetGLProcAddress("glVertexAttrib2fv"));
520 fn.glVertexAttrib3fFn = reinterpret_cast<glVertexAttrib3fProc>(
521 GetGLProcAddress("glVertexAttrib3f"));
522 fn.glVertexAttrib3fvFn = reinterpret_cast<glVertexAttrib3fvProc>(
523 GetGLProcAddress("glVertexAttrib3fv"));
524 fn.glVertexAttrib4fFn = reinterpret_cast<glVertexAttrib4fProc>(
525 GetGLProcAddress("glVertexAttrib4f"));
526 fn.glVertexAttrib4fvFn = reinterpret_cast<glVertexAttrib4fvProc>(
527 GetGLProcAddress("glVertexAttrib4fv"));
528 fn.glVertexAttribDivisorANGLEFn = 0;
529 fn.glVertexAttribI4iFn = 0;
530 fn.glVertexAttribI4ivFn = 0;
531 fn.glVertexAttribI4uiFn = 0;
532 fn.glVertexAttribI4uivFn = 0;
533 fn.glVertexAttribIPointerFn = 0;
534 fn.glVertexAttribPointerFn = reinterpret_cast<glVertexAttribPointerProc>(
535 GetGLProcAddress("glVertexAttribPointer"));
536 fn.glViewportFn =
537 reinterpret_cast<glViewportProc>(GetGLProcAddress("glViewport"));
538 fn.glWaitSyncFn = 0;
539 }
540
541 void DriverGL::InitializeDynamicBindings(
542 const GLVersionInfo* ver,
543 const std::string& context_extensions) {
544 std::string extensions = context_extensions + " ";
545 ALLOW_UNUSED_LOCAL(extensions);
546
547 ext.b_GL_ANGLE_framebuffer_blit =
548 extensions.find("GL_ANGLE_framebuffer_blit ") != std::string::npos;
549 ext.b_GL_ANGLE_framebuffer_multisample =
550 extensions.find("GL_ANGLE_framebuffer_multisample ") != std::string::npos;
551 ext.b_GL_ANGLE_instanced_arrays =
552 extensions.find("GL_ANGLE_instanced_arrays ") != std::string::npos;
553 ext.b_GL_ANGLE_robust_client_memory =
554 extensions.find("GL_ANGLE_robust_client_memory ") != std::string::npos;
555 ext.b_GL_ANGLE_translated_shader_source =
556 extensions.find("GL_ANGLE_translated_shader_source ") !=
557 std::string::npos;
558 ext.b_GL_APPLE_fence =
559 extensions.find("GL_APPLE_fence ") != std::string::npos;
560 ext.b_GL_APPLE_vertex_array_object =
561 extensions.find("GL_APPLE_vertex_array_object ") != std::string::npos;
562 ext.b_GL_ARB_blend_func_extended =
563 extensions.find("GL_ARB_blend_func_extended ") != std::string::npos;
564 ext.b_GL_ARB_draw_buffers =
565 extensions.find("GL_ARB_draw_buffers ") != std::string::npos;
566 ext.b_GL_ARB_draw_instanced =
567 extensions.find("GL_ARB_draw_instanced ") != std::string::npos;
568 ext.b_GL_ARB_get_program_binary =
569 extensions.find("GL_ARB_get_program_binary ") != std::string::npos;
570 ext.b_GL_ARB_instanced_arrays =
571 extensions.find("GL_ARB_instanced_arrays ") != std::string::npos;
572 ext.b_GL_ARB_map_buffer_range =
573 extensions.find("GL_ARB_map_buffer_range ") != std::string::npos;
574 ext.b_GL_ARB_occlusion_query =
575 extensions.find("GL_ARB_occlusion_query ") != std::string::npos;
576 ext.b_GL_ARB_program_interface_query =
577 extensions.find("GL_ARB_program_interface_query ") != std::string::npos;
578 ext.b_GL_ARB_robustness =
579 extensions.find("GL_ARB_robustness ") != std::string::npos;
580 ext.b_GL_ARB_sampler_objects =
581 extensions.find("GL_ARB_sampler_objects ") != std::string::npos;
582 ext.b_GL_ARB_shader_image_load_store =
583 extensions.find("GL_ARB_shader_image_load_store ") != std::string::npos;
584 ext.b_GL_ARB_sync = extensions.find("GL_ARB_sync ") != std::string::npos;
585 ext.b_GL_ARB_texture_storage =
586 extensions.find("GL_ARB_texture_storage ") != std::string::npos;
587 ext.b_GL_ARB_timer_query =
588 extensions.find("GL_ARB_timer_query ") != std::string::npos;
589 ext.b_GL_ARB_transform_feedback2 =
590 extensions.find("GL_ARB_transform_feedback2 ") != std::string::npos;
591 ext.b_GL_ARB_vertex_array_object =
592 extensions.find("GL_ARB_vertex_array_object ") != std::string::npos;
593 ext.b_GL_CHROMIUM_bind_uniform_location =
594 extensions.find("GL_CHROMIUM_bind_uniform_location ") !=
595 std::string::npos;
596 ext.b_GL_CHROMIUM_compressed_copy_texture =
597 extensions.find("GL_CHROMIUM_compressed_copy_texture ") !=
598 std::string::npos;
599 ext.b_GL_CHROMIUM_copy_compressed_texture =
600 extensions.find("GL_CHROMIUM_copy_compressed_texture ") !=
601 std::string::npos;
602 ext.b_GL_CHROMIUM_copy_texture =
603 extensions.find("GL_CHROMIUM_copy_texture ") != std::string::npos;
604 ext.b_GL_CHROMIUM_gles_depth_binding_hack =
605 extensions.find("GL_CHROMIUM_gles_depth_binding_hack ") !=
606 std::string::npos;
607 ext.b_GL_CHROMIUM_glgetstringi_hack =
608 extensions.find("GL_CHROMIUM_glgetstringi_hack ") != std::string::npos;
609 ext.b_GL_EXT_blend_func_extended =
610 extensions.find("GL_EXT_blend_func_extended ") != std::string::npos;
611 ext.b_GL_EXT_debug_marker =
612 extensions.find("GL_EXT_debug_marker ") != std::string::npos;
613 ext.b_GL_EXT_direct_state_access =
614 extensions.find("GL_EXT_direct_state_access ") != std::string::npos;
615 ext.b_GL_EXT_discard_framebuffer =
616 extensions.find("GL_EXT_discard_framebuffer ") != std::string::npos;
617 ext.b_GL_EXT_disjoint_timer_query =
618 extensions.find("GL_EXT_disjoint_timer_query ") != std::string::npos;
619 ext.b_GL_EXT_draw_buffers =
620 extensions.find("GL_EXT_draw_buffers ") != std::string::npos;
621 ext.b_GL_EXT_framebuffer_blit =
622 extensions.find("GL_EXT_framebuffer_blit ") != std::string::npos;
623 ext.b_GL_EXT_framebuffer_multisample =
624 extensions.find("GL_EXT_framebuffer_multisample ") != std::string::npos;
625 ext.b_GL_EXT_framebuffer_object =
626 extensions.find("GL_EXT_framebuffer_object ") != std::string::npos;
627 ext.b_GL_EXT_gpu_shader4 =
628 extensions.find("GL_EXT_gpu_shader4 ") != std::string::npos;
629 ext.b_GL_EXT_map_buffer_range =
630 extensions.find("GL_EXT_map_buffer_range ") != std::string::npos;
631 ext.b_GL_EXT_multisampled_render_to_texture =
632 extensions.find("GL_EXT_multisampled_render_to_texture ") !=
633 std::string::npos;
634 ext.b_GL_EXT_occlusion_query_boolean =
635 extensions.find("GL_EXT_occlusion_query_boolean ") != std::string::npos;
636 ext.b_GL_EXT_robustness =
637 extensions.find("GL_EXT_robustness ") != std::string::npos;
638 ext.b_GL_EXT_shader_image_load_store =
639 extensions.find("GL_EXT_shader_image_load_store ") != std::string::npos;
640 ext.b_GL_EXT_texture_storage =
641 extensions.find("GL_EXT_texture_storage ") != std::string::npos;
642 ext.b_GL_EXT_timer_query =
643 extensions.find("GL_EXT_timer_query ") != std::string::npos;
644 ext.b_GL_EXT_transform_feedback =
645 extensions.find("GL_EXT_transform_feedback ") != std::string::npos;
646 ext.b_GL_EXT_unpack_subimage =
647 extensions.find("GL_EXT_unpack_subimage ") != std::string::npos;
648 ext.b_GL_IMG_multisampled_render_to_texture =
649 extensions.find("GL_IMG_multisampled_render_to_texture ") !=
650 std::string::npos;
651 ext.b_GL_INTEL_framebuffer_CMAA =
652 extensions.find("GL_INTEL_framebuffer_CMAA ") != std::string::npos;
653 ext.b_GL_KHR_blend_equation_advanced =
654 extensions.find("GL_KHR_blend_equation_advanced ") != std::string::npos;
655 ext.b_GL_KHR_debug = extensions.find("GL_KHR_debug ") != std::string::npos;
656 ext.b_GL_KHR_robustness =
657 extensions.find("GL_KHR_robustness ") != std::string::npos;
658 ext.b_GL_NV_blend_equation_advanced =
659 extensions.find("GL_NV_blend_equation_advanced ") != std::string::npos;
660 ext.b_GL_NV_fence = extensions.find("GL_NV_fence ") != std::string::npos;
661 ext.b_GL_NV_framebuffer_mixed_samples =
662 extensions.find("GL_NV_framebuffer_mixed_samples ") != std::string::npos;
663 ext.b_GL_NV_path_rendering =
664 extensions.find("GL_NV_path_rendering ") != std::string::npos;
665 ext.b_GL_OES_EGL_image =
666 extensions.find("GL_OES_EGL_image ") != std::string::npos;
667 ext.b_GL_OES_get_program_binary =
668 extensions.find("GL_OES_get_program_binary ") != std::string::npos;
669 ext.b_GL_OES_mapbuffer =
670 extensions.find("GL_OES_mapbuffer ") != std::string::npos;
671 ext.b_GL_OES_vertex_array_object =
672 extensions.find("GL_OES_vertex_array_object ") != std::string::npos;
673
674 if (ext.b_GL_INTEL_framebuffer_CMAA) {
675 fn.glApplyFramebufferAttachmentCMAAINTELFn =
676 reinterpret_cast<glApplyFramebufferAttachmentCMAAINTELProc>(
677 GetGLProcAddress("glApplyFramebufferAttachmentCMAAINTEL"));
678 }
679
680 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
681 fn.glBeginQueryFn =
682 reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQuery"));
683 } else if (ext.b_GL_ARB_occlusion_query) {
684 fn.glBeginQueryFn =
685 reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQueryARB"));
686 } else if (ext.b_GL_EXT_disjoint_timer_query ||
687 ext.b_GL_EXT_occlusion_query_boolean) {
688 fn.glBeginQueryFn =
689 reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQueryEXT"));
690 }
691
692 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
693 fn.glBeginTransformFeedbackFn =
694 reinterpret_cast<glBeginTransformFeedbackProc>(
695 GetGLProcAddress("glBeginTransformFeedback"));
696 } else if (ext.b_GL_EXT_transform_feedback) {
697 fn.glBeginTransformFeedbackFn =
698 reinterpret_cast<glBeginTransformFeedbackProc>(
699 GetGLProcAddress("glBeginTransformFeedbackEXT"));
700 }
701
702 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
703 fn.glBindBufferBaseFn = reinterpret_cast<glBindBufferBaseProc>(
704 GetGLProcAddress("glBindBufferBase"));
705 } else if (ext.b_GL_EXT_transform_feedback) {
706 fn.glBindBufferBaseFn = reinterpret_cast<glBindBufferBaseProc>(
707 GetGLProcAddress("glBindBufferBaseEXT"));
708 }
709
710 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
711 fn.glBindBufferRangeFn = reinterpret_cast<glBindBufferRangeProc>(
712 GetGLProcAddress("glBindBufferRange"));
713 } else if (ext.b_GL_EXT_transform_feedback) {
714 fn.glBindBufferRangeFn = reinterpret_cast<glBindBufferRangeProc>(
715 GetGLProcAddress("glBindBufferRangeEXT"));
716 }
717
718 if (ver->IsAtLeastGL(3u, 0u) || ext.b_GL_ARB_blend_func_extended) {
719 fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
720 GetGLProcAddress("glBindFragDataLocation"));
721 } else if (ext.b_GL_EXT_gpu_shader4 || ext.b_GL_EXT_blend_func_extended) {
722 fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
723 GetGLProcAddress("glBindFragDataLocationEXT"));
724 }
725
726 if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_blend_func_extended) {
727 fn.glBindFragDataLocationIndexedFn =
728 reinterpret_cast<glBindFragDataLocationIndexedProc>(
729 GetGLProcAddress("glBindFragDataLocationIndexed"));
730 } else if (ext.b_GL_EXT_blend_func_extended) {
731 fn.glBindFragDataLocationIndexedFn =
732 reinterpret_cast<glBindFragDataLocationIndexedProc>(
733 GetGLProcAddress("glBindFragDataLocationIndexedEXT"));
734 }
735
736 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
737 fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>(
738 GetGLProcAddress("glBindFramebuffer"));
739 } else if (ext.b_GL_EXT_framebuffer_object) {
740 fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>(
741 GetGLProcAddress("glBindFramebufferEXT"));
742 }
743
744 if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 1u) ||
745 ext.b_GL_ARB_shader_image_load_store) {
746 fn.glBindImageTextureEXTFn = reinterpret_cast<glBindImageTextureEXTProc>(
747 GetGLProcAddress("glBindImageTexture"));
748 } else if (ext.b_GL_EXT_shader_image_load_store) {
749 fn.glBindImageTextureEXTFn = reinterpret_cast<glBindImageTextureEXTProc>(
750 GetGLProcAddress("glBindImageTextureEXT"));
751 }
752
753 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
754 fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
755 GetGLProcAddress("glBindRenderbuffer"));
756 } else if (ext.b_GL_EXT_framebuffer_object) {
757 fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
758 GetGLProcAddress("glBindRenderbufferEXT"));
759 }
760
761 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
762 ext.b_GL_ARB_sampler_objects) {
763 fn.glBindSamplerFn =
764 reinterpret_cast<glBindSamplerProc>(GetGLProcAddress("glBindSampler"));
765 }
766
767 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
768 ext.b_GL_ARB_transform_feedback2) {
769 fn.glBindTransformFeedbackFn =
770 reinterpret_cast<glBindTransformFeedbackProc>(
771 GetGLProcAddress("glBindTransformFeedback"));
772 }
773
774 if (ext.b_GL_CHROMIUM_bind_uniform_location) {
775 fn.glBindUniformLocationCHROMIUMFn =
776 reinterpret_cast<glBindUniformLocationCHROMIUMProc>(
777 GetGLProcAddress("glBindUniformLocationCHROMIUM"));
778 }
779
780 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
781 ext.b_GL_ARB_vertex_array_object) {
782 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
783 GetGLProcAddress("glBindVertexArray"));
784 } else if (ext.b_GL_OES_vertex_array_object) {
785 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
786 GetGLProcAddress("glBindVertexArrayOES"));
787 } else if (ext.b_GL_APPLE_vertex_array_object) {
788 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
789 GetGLProcAddress("glBindVertexArrayAPPLE"));
790 }
791
792 if (ext.b_GL_NV_blend_equation_advanced) {
793 fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>(
794 GetGLProcAddress("glBlendBarrierNV"));
795 } else if (ext.b_GL_KHR_blend_equation_advanced) {
796 fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>(
797 GetGLProcAddress("glBlendBarrierKHR"));
798 }
799
800 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
801 fn.glBlitFramebufferFn = reinterpret_cast<glBlitFramebufferProc>(
802 GetGLProcAddress("glBlitFramebuffer"));
803 }
804
805 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
806 fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
807 GetGLProcAddress("glBlitFramebuffer"));
808 } else if (ext.b_GL_ANGLE_framebuffer_blit) {
809 fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
810 GetGLProcAddress("glBlitFramebufferANGLE"));
811 }
812
813 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
814 fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>(
815 GetGLProcAddress("glBlitFramebuffer"));
816 } else if (ext.b_GL_EXT_framebuffer_blit) {
817 fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>(
818 GetGLProcAddress("glBlitFramebufferEXT"));
819 }
820
821 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
822 fn.glCheckFramebufferStatusEXTFn =
823 reinterpret_cast<glCheckFramebufferStatusEXTProc>(
824 GetGLProcAddress("glCheckFramebufferStatus"));
825 } else if (ext.b_GL_EXT_framebuffer_object) {
826 fn.glCheckFramebufferStatusEXTFn =
827 reinterpret_cast<glCheckFramebufferStatusEXTProc>(
828 GetGLProcAddress("glCheckFramebufferStatusEXT"));
829 }
830
831 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
832 fn.glClearBufferfiFn = reinterpret_cast<glClearBufferfiProc>(
833 GetGLProcAddress("glClearBufferfi"));
834 }
835
836 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
837 fn.glClearBufferfvFn = reinterpret_cast<glClearBufferfvProc>(
838 GetGLProcAddress("glClearBufferfv"));
839 }
840
841 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
842 fn.glClearBufferivFn = reinterpret_cast<glClearBufferivProc>(
843 GetGLProcAddress("glClearBufferiv"));
844 }
845
846 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
847 fn.glClearBufferuivFn = reinterpret_cast<glClearBufferuivProc>(
848 GetGLProcAddress("glClearBufferuiv"));
849 }
850
851 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
852 fn.glClearDepthfFn =
853 reinterpret_cast<glClearDepthfProc>(GetGLProcAddress("glClearDepthf"));
854 }
855
856 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
857 ext.b_GL_ARB_sync) {
858 fn.glClientWaitSyncFn = reinterpret_cast<glClientWaitSyncProc>(
859 GetGLProcAddress("glClientWaitSync"));
860 }
861
862 if (ext.b_GL_CHROMIUM_copy_compressed_texture ||
863 ext.b_GL_CHROMIUM_compressed_copy_texture) {
864 fn.glCompressedCopyTextureCHROMIUMFn =
865 reinterpret_cast<glCompressedCopyTextureCHROMIUMProc>(
866 GetGLProcAddress("glCompressedCopyTextureCHROMIUM"));
867 }
868
869 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
870 fn.glCompressedTexImage3DFn = reinterpret_cast<glCompressedTexImage3DProc>(
871 GetGLProcAddress("glCompressedTexImage3D"));
872 }
873
874 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
875 fn.glCompressedTexSubImage3DFn =
876 reinterpret_cast<glCompressedTexSubImage3DProc>(
877 GetGLProcAddress("glCompressedTexSubImage3D"));
878 }
879
880 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
881 fn.glCopyBufferSubDataFn = reinterpret_cast<glCopyBufferSubDataProc>(
882 GetGLProcAddress("glCopyBufferSubData"));
883 }
884
885 if (ext.b_GL_CHROMIUM_copy_texture) {
886 fn.glCopySubTextureCHROMIUMFn =
887 reinterpret_cast<glCopySubTextureCHROMIUMProc>(
888 GetGLProcAddress("glCopySubTextureCHROMIUM"));
889 }
890
891 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
892 fn.glCopyTexSubImage3DFn = reinterpret_cast<glCopyTexSubImage3DProc>(
893 GetGLProcAddress("glCopyTexSubImage3D"));
894 }
895
896 if (ext.b_GL_CHROMIUM_copy_texture) {
897 fn.glCopyTextureCHROMIUMFn = reinterpret_cast<glCopyTextureCHROMIUMProc>(
898 GetGLProcAddress("glCopyTextureCHROMIUM"));
899 }
900
901 if (ext.b_GL_NV_framebuffer_mixed_samples) {
902 fn.glCoverageModulationNVFn = reinterpret_cast<glCoverageModulationNVProc>(
903 GetGLProcAddress("glCoverageModulationNV"));
904 }
905
906 if (ext.b_GL_NV_path_rendering) {
907 fn.glCoverFillPathInstancedNVFn =
908 reinterpret_cast<glCoverFillPathInstancedNVProc>(
909 GetGLProcAddress("glCoverFillPathInstancedNV"));
910 }
911
912 if (ext.b_GL_NV_path_rendering) {
913 fn.glCoverFillPathNVFn = reinterpret_cast<glCoverFillPathNVProc>(
914 GetGLProcAddress("glCoverFillPathNV"));
915 }
916
917 if (ext.b_GL_NV_path_rendering) {
918 fn.glCoverStrokePathInstancedNVFn =
919 reinterpret_cast<glCoverStrokePathInstancedNVProc>(
920 GetGLProcAddress("glCoverStrokePathInstancedNV"));
921 }
922
923 if (ext.b_GL_NV_path_rendering) {
924 fn.glCoverStrokePathNVFn = reinterpret_cast<glCoverStrokePathNVProc>(
925 GetGLProcAddress("glCoverStrokePathNV"));
926 }
927
928 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
929 fn.glDebugMessageCallbackFn = reinterpret_cast<glDebugMessageCallbackProc>(
930 GetGLProcAddress("glDebugMessageCallback"));
931 } else if (ext.b_GL_KHR_debug) {
932 fn.glDebugMessageCallbackFn = reinterpret_cast<glDebugMessageCallbackProc>(
933 GetGLProcAddress("glDebugMessageCallbackKHR"));
934 }
935
936 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
937 fn.glDebugMessageControlFn = reinterpret_cast<glDebugMessageControlProc>(
938 GetGLProcAddress("glDebugMessageControl"));
939 } else if (ext.b_GL_KHR_debug) {
940 fn.glDebugMessageControlFn = reinterpret_cast<glDebugMessageControlProc>(
941 GetGLProcAddress("glDebugMessageControlKHR"));
942 }
943
944 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
945 fn.glDebugMessageInsertFn = reinterpret_cast<glDebugMessageInsertProc>(
946 GetGLProcAddress("glDebugMessageInsert"));
947 } else if (ext.b_GL_KHR_debug) {
948 fn.glDebugMessageInsertFn = reinterpret_cast<glDebugMessageInsertProc>(
949 GetGLProcAddress("glDebugMessageInsertKHR"));
950 }
951
952 if (ext.b_GL_APPLE_fence) {
953 fn.glDeleteFencesAPPLEFn = reinterpret_cast<glDeleteFencesAPPLEProc>(
954 GetGLProcAddress("glDeleteFencesAPPLE"));
955 }
956
957 if (ext.b_GL_NV_fence) {
958 fn.glDeleteFencesNVFn = reinterpret_cast<glDeleteFencesNVProc>(
959 GetGLProcAddress("glDeleteFencesNV"));
960 }
961
962 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
963 fn.glDeleteFramebuffersEXTFn =
964 reinterpret_cast<glDeleteFramebuffersEXTProc>(
965 GetGLProcAddress("glDeleteFramebuffers"));
966 } else if (ext.b_GL_EXT_framebuffer_object) {
967 fn.glDeleteFramebuffersEXTFn =
968 reinterpret_cast<glDeleteFramebuffersEXTProc>(
969 GetGLProcAddress("glDeleteFramebuffersEXT"));
970 }
971
972 if (ext.b_GL_NV_path_rendering) {
973 fn.glDeletePathsNVFn = reinterpret_cast<glDeletePathsNVProc>(
974 GetGLProcAddress("glDeletePathsNV"));
975 }
976
977 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
978 fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
979 GetGLProcAddress("glDeleteQueries"));
980 } else if (ext.b_GL_ARB_occlusion_query) {
981 fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
982 GetGLProcAddress("glDeleteQueriesARB"));
983 } else if (ext.b_GL_EXT_disjoint_timer_query ||
984 ext.b_GL_EXT_occlusion_query_boolean) {
985 fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
986 GetGLProcAddress("glDeleteQueriesEXT"));
987 }
988
989 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
990 fn.glDeleteRenderbuffersEXTFn =
991 reinterpret_cast<glDeleteRenderbuffersEXTProc>(
992 GetGLProcAddress("glDeleteRenderbuffers"));
993 } else if (ext.b_GL_EXT_framebuffer_object) {
994 fn.glDeleteRenderbuffersEXTFn =
995 reinterpret_cast<glDeleteRenderbuffersEXTProc>(
996 GetGLProcAddress("glDeleteRenderbuffersEXT"));
997 }
998
999 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
1000 ext.b_GL_ARB_sampler_objects) {
1001 fn.glDeleteSamplersFn = reinterpret_cast<glDeleteSamplersProc>(
1002 GetGLProcAddress("glDeleteSamplers"));
1003 }
1004
1005 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
1006 ext.b_GL_ARB_sync) {
1007 fn.glDeleteSyncFn =
1008 reinterpret_cast<glDeleteSyncProc>(GetGLProcAddress("glDeleteSync"));
1009 }
1010
1011 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
1012 ext.b_GL_ARB_transform_feedback2) {
1013 fn.glDeleteTransformFeedbacksFn =
1014 reinterpret_cast<glDeleteTransformFeedbacksProc>(
1015 GetGLProcAddress("glDeleteTransformFeedbacks"));
1016 }
1017
1018 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
1019 ext.b_GL_ARB_vertex_array_object) {
1020 fn.glDeleteVertexArraysOESFn =
1021 reinterpret_cast<glDeleteVertexArraysOESProc>(
1022 GetGLProcAddress("glDeleteVertexArrays"));
1023 } else if (ext.b_GL_OES_vertex_array_object) {
1024 fn.glDeleteVertexArraysOESFn =
1025 reinterpret_cast<glDeleteVertexArraysOESProc>(
1026 GetGLProcAddress("glDeleteVertexArraysOES"));
1027 } else if (ext.b_GL_APPLE_vertex_array_object) {
1028 fn.glDeleteVertexArraysOESFn =
1029 reinterpret_cast<glDeleteVertexArraysOESProc>(
1030 GetGLProcAddress("glDeleteVertexArraysAPPLE"));
1031 }
1032
1033 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
1034 fn.glDepthRangefFn =
1035 reinterpret_cast<glDepthRangefProc>(GetGLProcAddress("glDepthRangef"));
1036 }
1037
1038 if (ext.b_GL_EXT_discard_framebuffer) {
1039 fn.glDiscardFramebufferEXTFn =
1040 reinterpret_cast<glDiscardFramebufferEXTProc>(
1041 GetGLProcAddress("glDiscardFramebufferEXT"));
1042 }
1043
1044 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1045 fn.glDrawArraysInstancedANGLEFn =
1046 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
1047 GetGLProcAddress("glDrawArraysInstanced"));
1048 } else if (ext.b_GL_ARB_draw_instanced) {
1049 fn.glDrawArraysInstancedANGLEFn =
1050 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
1051 GetGLProcAddress("glDrawArraysInstancedARB"));
1052 } else if (ext.b_GL_ANGLE_instanced_arrays) {
1053 fn.glDrawArraysInstancedANGLEFn =
1054 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
1055 GetGLProcAddress("glDrawArraysInstancedANGLE"));
1056 }
1057
1058 if (!ver->is_es) {
1059 fn.glDrawBufferFn =
1060 reinterpret_cast<glDrawBufferProc>(GetGLProcAddress("glDrawBuffer"));
1061 }
1062
1063 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1064 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
1065 GetGLProcAddress("glDrawBuffers"));
1066 } else if (ext.b_GL_ARB_draw_buffers) {
1067 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
1068 GetGLProcAddress("glDrawBuffersARB"));
1069 } else if (ext.b_GL_EXT_draw_buffers) {
1070 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
1071 GetGLProcAddress("glDrawBuffersEXT"));
1072 }
1073
1074 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1075 fn.glDrawElementsInstancedANGLEFn =
1076 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
1077 GetGLProcAddress("glDrawElementsInstanced"));
1078 } else if (ext.b_GL_ARB_draw_instanced) {
1079 fn.glDrawElementsInstancedANGLEFn =
1080 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
1081 GetGLProcAddress("glDrawElementsInstancedARB"));
1082 } else if (ext.b_GL_ANGLE_instanced_arrays) {
1083 fn.glDrawElementsInstancedANGLEFn =
1084 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
1085 GetGLProcAddress("glDrawElementsInstancedANGLE"));
1086 }
1087
1088 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1089 fn.glDrawRangeElementsFn = reinterpret_cast<glDrawRangeElementsProc>(
1090 GetGLProcAddress("glDrawRangeElements"));
1091 }
1092
1093 if (ext.b_GL_OES_EGL_image) {
1094 fn.glEGLImageTargetRenderbufferStorageOESFn =
1095 reinterpret_cast<glEGLImageTargetRenderbufferStorageOESProc>(
1096 GetGLProcAddress("glEGLImageTargetRenderbufferStorageOES"));
1097 }
1098
1099 if (ext.b_GL_OES_EGL_image) {
1100 fn.glEGLImageTargetTexture2DOESFn =
1101 reinterpret_cast<glEGLImageTargetTexture2DOESProc>(
1102 GetGLProcAddress("glEGLImageTargetTexture2DOES"));
1103 }
1104
1105 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1106 fn.glEndQueryFn =
1107 reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQuery"));
1108 } else if (ext.b_GL_ARB_occlusion_query) {
1109 fn.glEndQueryFn =
1110 reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQueryARB"));
1111 } else if (ext.b_GL_EXT_disjoint_timer_query ||
1112 ext.b_GL_EXT_occlusion_query_boolean) {
1113 fn.glEndQueryFn =
1114 reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQueryEXT"));
1115 }
1116
1117 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1118 fn.glEndTransformFeedbackFn = reinterpret_cast<glEndTransformFeedbackProc>(
1119 GetGLProcAddress("glEndTransformFeedback"));
1120 } else if (ext.b_GL_EXT_transform_feedback) {
1121 fn.glEndTransformFeedbackFn = reinterpret_cast<glEndTransformFeedbackProc>(
1122 GetGLProcAddress("glEndTransformFeedbackEXT"));
1123 }
1124
1125 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
1126 ext.b_GL_ARB_sync) {
1127 fn.glFenceSyncFn =
1128 reinterpret_cast<glFenceSyncProc>(GetGLProcAddress("glFenceSync"));
1129 }
1130
1131 if (ext.b_GL_APPLE_fence) {
1132 fn.glFinishFenceAPPLEFn = reinterpret_cast<glFinishFenceAPPLEProc>(
1133 GetGLProcAddress("glFinishFenceAPPLE"));
1134 }
1135
1136 if (ext.b_GL_NV_fence) {
1137 fn.glFinishFenceNVFn = reinterpret_cast<glFinishFenceNVProc>(
1138 GetGLProcAddress("glFinishFenceNV"));
1139 }
1140
1141 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1142 fn.glFlushMappedBufferRangeFn =
1143 reinterpret_cast<glFlushMappedBufferRangeProc>(
1144 GetGLProcAddress("glFlushMappedBufferRange"));
1145 }
1146
1147 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1148 fn.glFramebufferRenderbufferEXTFn =
1149 reinterpret_cast<glFramebufferRenderbufferEXTProc>(
1150 GetGLProcAddress("glFramebufferRenderbuffer"));
1151 } else if (ext.b_GL_EXT_framebuffer_object) {
1152 fn.glFramebufferRenderbufferEXTFn =
1153 reinterpret_cast<glFramebufferRenderbufferEXTProc>(
1154 GetGLProcAddress("glFramebufferRenderbufferEXT"));
1155 }
1156
1157 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1158 fn.glFramebufferTexture2DEXTFn =
1159 reinterpret_cast<glFramebufferTexture2DEXTProc>(
1160 GetGLProcAddress("glFramebufferTexture2D"));
1161 } else if (ext.b_GL_EXT_framebuffer_object) {
1162 fn.glFramebufferTexture2DEXTFn =
1163 reinterpret_cast<glFramebufferTexture2DEXTProc>(
1164 GetGLProcAddress("glFramebufferTexture2DEXT"));
1165 }
1166
1167 if (ext.b_GL_EXT_multisampled_render_to_texture) {
1168 fn.glFramebufferTexture2DMultisampleEXTFn =
1169 reinterpret_cast<glFramebufferTexture2DMultisampleEXTProc>(
1170 GetGLProcAddress("glFramebufferTexture2DMultisampleEXT"));
1171 }
1172
1173 if (ext.b_GL_IMG_multisampled_render_to_texture) {
1174 fn.glFramebufferTexture2DMultisampleIMGFn =
1175 reinterpret_cast<glFramebufferTexture2DMultisampleIMGProc>(
1176 GetGLProcAddress("glFramebufferTexture2DMultisampleIMG"));
1177 }
1178
1179 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1180 fn.glFramebufferTextureLayerFn =
1181 reinterpret_cast<glFramebufferTextureLayerProc>(
1182 GetGLProcAddress("glFramebufferTextureLayer"));
1183 }
1184
1185 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1186 fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
1187 GetGLProcAddress("glGenerateMipmap"));
1188 } else if (ext.b_GL_EXT_framebuffer_object) {
1189 fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
1190 GetGLProcAddress("glGenerateMipmapEXT"));
1191 }
1192
1193 if (ext.b_GL_APPLE_fence) {
1194 fn.glGenFencesAPPLEFn = reinterpret_cast<glGenFencesAPPLEProc>(
1195 GetGLProcAddress("glGenFencesAPPLE"));
1196 }
1197
1198 if (ext.b_GL_NV_fence) {
1199 fn.glGenFencesNVFn =
1200 reinterpret_cast<glGenFencesNVProc>(GetGLProcAddress("glGenFencesNV"));
1201 }
1202
1203 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1204 fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>(
1205 GetGLProcAddress("glGenFramebuffers"));
1206 } else if (ext.b_GL_EXT_framebuffer_object) {
1207 fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>(
1208 GetGLProcAddress("glGenFramebuffersEXT"));
1209 }
1210
1211 if (ext.b_GL_NV_path_rendering) {
1212 fn.glGenPathsNVFn =
1213 reinterpret_cast<glGenPathsNVProc>(GetGLProcAddress("glGenPathsNV"));
1214 }
1215
1216 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1217 fn.glGenQueriesFn =
1218 reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueries"));
1219 } else if (ext.b_GL_ARB_occlusion_query) {
1220 fn.glGenQueriesFn =
1221 reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueriesARB"));
1222 } else if (ext.b_GL_EXT_disjoint_timer_query ||
1223 ext.b_GL_EXT_occlusion_query_boolean) {
1224 fn.glGenQueriesFn =
1225 reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueriesEXT"));
1226 }
1227
1228 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1229 fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
1230 GetGLProcAddress("glGenRenderbuffers"));
1231 } else if (ext.b_GL_EXT_framebuffer_object) {
1232 fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
1233 GetGLProcAddress("glGenRenderbuffersEXT"));
1234 }
1235
1236 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
1237 ext.b_GL_ARB_sampler_objects) {
1238 fn.glGenSamplersFn =
1239 reinterpret_cast<glGenSamplersProc>(GetGLProcAddress("glGenSamplers"));
1240 }
1241
1242 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
1243 ext.b_GL_ARB_transform_feedback2) {
1244 fn.glGenTransformFeedbacksFn =
1245 reinterpret_cast<glGenTransformFeedbacksProc>(
1246 GetGLProcAddress("glGenTransformFeedbacks"));
1247 }
1248
1249 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
1250 ext.b_GL_ARB_vertex_array_object) {
1251 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
1252 GetGLProcAddress("glGenVertexArrays"));
1253 } else if (ext.b_GL_OES_vertex_array_object) {
1254 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
1255 GetGLProcAddress("glGenVertexArraysOES"));
1256 } else if (ext.b_GL_APPLE_vertex_array_object) {
1257 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
1258 GetGLProcAddress("glGenVertexArraysAPPLE"));
1259 }
1260
1261 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1262 fn.glGetActiveUniformBlockivFn =
1263 reinterpret_cast<glGetActiveUniformBlockivProc>(
1264 GetGLProcAddress("glGetActiveUniformBlockiv"));
1265 }
1266
1267 if (ext.b_GL_ANGLE_robust_client_memory) {
1268 fn.glGetActiveUniformBlockivRobustANGLEFn =
1269 reinterpret_cast<glGetActiveUniformBlockivRobustANGLEProc>(
1270 GetGLProcAddress("glGetActiveUniformBlockivRobustANGLE"));
1271 }
1272
1273 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1274 fn.glGetActiveUniformBlockNameFn =
1275 reinterpret_cast<glGetActiveUniformBlockNameProc>(
1276 GetGLProcAddress("glGetActiveUniformBlockName"));
1277 }
1278
1279 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1280 fn.glGetActiveUniformsivFn = reinterpret_cast<glGetActiveUniformsivProc>(
1281 GetGLProcAddress("glGetActiveUniformsiv"));
1282 }
1283
1284 if (ext.b_GL_ANGLE_robust_client_memory) {
1285 fn.glGetBooleani_vRobustANGLEFn =
1286 reinterpret_cast<glGetBooleani_vRobustANGLEProc>(
1287 GetGLProcAddress("glGetBooleani_vRobustANGLE"));
1288 }
1289
1290 if (ext.b_GL_ANGLE_robust_client_memory) {
1291 fn.glGetBooleanvRobustANGLEFn =
1292 reinterpret_cast<glGetBooleanvRobustANGLEProc>(
1293 GetGLProcAddress("glGetBooleanvRobustANGLE"));
1294 }
1295
1296 if (ext.b_GL_ANGLE_robust_client_memory) {
1297 fn.glGetBufferParameteri64vRobustANGLEFn =
1298 reinterpret_cast<glGetBufferParameteri64vRobustANGLEProc>(
1299 GetGLProcAddress("glGetBufferParameteri64vRobustANGLE"));
1300 }
1301
1302 if (ext.b_GL_ANGLE_robust_client_memory) {
1303 fn.glGetBufferParameterivRobustANGLEFn =
1304 reinterpret_cast<glGetBufferParameterivRobustANGLEProc>(
1305 GetGLProcAddress("glGetBufferParameterivRobustANGLE"));
1306 }
1307
1308 if (ext.b_GL_ANGLE_robust_client_memory) {
1309 fn.glGetBufferPointervRobustANGLEFn =
1310 reinterpret_cast<glGetBufferPointervRobustANGLEProc>(
1311 GetGLProcAddress("glGetBufferPointervRobustANGLE"));
1312 }
1313
1314 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
1315 fn.glGetDebugMessageLogFn = reinterpret_cast<glGetDebugMessageLogProc>(
1316 GetGLProcAddress("glGetDebugMessageLog"));
1317 } else if (ext.b_GL_KHR_debug) {
1318 fn.glGetDebugMessageLogFn = reinterpret_cast<glGetDebugMessageLogProc>(
1319 GetGLProcAddress("glGetDebugMessageLogKHR"));
1320 }
1321
1322 if (ext.b_GL_NV_fence) {
1323 fn.glGetFenceivNVFn = reinterpret_cast<glGetFenceivNVProc>(
1324 GetGLProcAddress("glGetFenceivNV"));
1325 }
1326
1327 if (ext.b_GL_ANGLE_robust_client_memory) {
1328 fn.glGetFloatvRobustANGLEFn = reinterpret_cast<glGetFloatvRobustANGLEProc>(
1329 GetGLProcAddress("glGetFloatvRobustANGLE"));
1330 }
1331
1332 if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_blend_func_extended) {
1333 fn.glGetFragDataIndexFn = reinterpret_cast<glGetFragDataIndexProc>(
1334 GetGLProcAddress("glGetFragDataIndex"));
1335 } else if (ext.b_GL_EXT_blend_func_extended) {
1336 fn.glGetFragDataIndexFn = reinterpret_cast<glGetFragDataIndexProc>(
1337 GetGLProcAddress("glGetFragDataIndexEXT"));
1338 }
1339
1340 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1341 fn.glGetFragDataLocationFn = reinterpret_cast<glGetFragDataLocationProc>(
1342 GetGLProcAddress("glGetFragDataLocation"));
1343 }
1344
1345 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1346 fn.glGetFramebufferAttachmentParameterivEXTFn =
1347 reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>(
1348 GetGLProcAddress("glGetFramebufferAttachmentParameteriv"));
1349 } else if (ext.b_GL_EXT_framebuffer_object) {
1350 fn.glGetFramebufferAttachmentParameterivEXTFn =
1351 reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>(
1352 GetGLProcAddress("glGetFramebufferAttachmentParameterivEXT"));
1353 }
1354
1355 if (ext.b_GL_ANGLE_robust_client_memory) {
1356 fn.glGetFramebufferAttachmentParameterivRobustANGLEFn =
1357 reinterpret_cast<glGetFramebufferAttachmentParameterivRobustANGLEProc>(
1358 GetGLProcAddress(
1359 "glGetFramebufferAttachmentParameterivRobustANGLE"));
1360 }
1361
1362 if (ext.b_GL_ANGLE_robust_client_memory) {
1363 fn.glGetFramebufferParameterivRobustANGLEFn =
1364 reinterpret_cast<glGetFramebufferParameterivRobustANGLEProc>(
1365 GetGLProcAddress("glGetFramebufferParameterivRobustANGLE"));
1366 }
1367
1368 if (ver->IsAtLeastGL(4u, 5u) || ver->IsAtLeastGLES(3u, 2u)) {
1369 fn.glGetGraphicsResetStatusARBFn =
1370 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1371 GetGLProcAddress("glGetGraphicsResetStatus"));
1372 } else if (ext.b_GL_ARB_robustness) {
1373 fn.glGetGraphicsResetStatusARBFn =
1374 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1375 GetGLProcAddress("glGetGraphicsResetStatusARB"));
1376 } else if (ext.b_GL_KHR_robustness) {
1377 fn.glGetGraphicsResetStatusARBFn =
1378 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1379 GetGLProcAddress("glGetGraphicsResetStatusKHR"));
1380 } else if (ext.b_GL_EXT_robustness) {
1381 fn.glGetGraphicsResetStatusARBFn =
1382 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1383 GetGLProcAddress("glGetGraphicsResetStatusEXT"));
1384 }
1385
1386 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
1387 fn.glGetInteger64i_vFn = reinterpret_cast<glGetInteger64i_vProc>(
1388 GetGLProcAddress("glGetInteger64i_v"));
1389 }
1390
1391 if (ext.b_GL_ANGLE_robust_client_memory) {
1392 fn.glGetInteger64i_vRobustANGLEFn =
1393 reinterpret_cast<glGetInteger64i_vRobustANGLEProc>(
1394 GetGLProcAddress("glGetInteger64i_vRobustANGLE"));
1395 }
1396
1397 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
1398 fn.glGetInteger64vFn = reinterpret_cast<glGetInteger64vProc>(
1399 GetGLProcAddress("glGetInteger64v"));
1400 }
1401
1402 if (ext.b_GL_ANGLE_robust_client_memory) {
1403 fn.glGetInteger64vRobustANGLEFn =
1404 reinterpret_cast<glGetInteger64vRobustANGLEProc>(
1405 GetGLProcAddress("glGetInteger64vRobustANGLE"));
1406 }
1407
1408 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1409 fn.glGetIntegeri_vFn = reinterpret_cast<glGetIntegeri_vProc>(
1410 GetGLProcAddress("glGetIntegeri_v"));
1411 }
1412
1413 if (ext.b_GL_ANGLE_robust_client_memory) {
1414 fn.glGetIntegeri_vRobustANGLEFn =
1415 reinterpret_cast<glGetIntegeri_vRobustANGLEProc>(
1416 GetGLProcAddress("glGetIntegeri_vRobustANGLE"));
1417 }
1418
1419 if (ext.b_GL_ANGLE_robust_client_memory) {
1420 fn.glGetIntegervRobustANGLEFn =
1421 reinterpret_cast<glGetIntegervRobustANGLEProc>(
1422 GetGLProcAddress("glGetIntegervRobustANGLE"));
1423 }
1424
1425 if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
1426 fn.glGetInternalformativFn = reinterpret_cast<glGetInternalformativProc>(
1427 GetGLProcAddress("glGetInternalformativ"));
1428 }
1429
1430 if (ext.b_GL_ANGLE_robust_client_memory) {
1431 fn.glGetInternalformativRobustANGLEFn =
1432 reinterpret_cast<glGetInternalformativRobustANGLEProc>(
1433 GetGLProcAddress("glGetInternalformativRobustANGLE"));
1434 }
1435
1436 if (ext.b_GL_ANGLE_robust_client_memory) {
1437 fn.glGetMultisamplefvRobustANGLEFn =
1438 reinterpret_cast<glGetMultisamplefvRobustANGLEProc>(
1439 GetGLProcAddress("glGetMultisamplefvRobustANGLE"));
1440 }
1441
1442 if (ext.b_GL_ANGLE_robust_client_memory) {
1443 fn.glGetnUniformfvRobustANGLEFn =
1444 reinterpret_cast<glGetnUniformfvRobustANGLEProc>(
1445 GetGLProcAddress("glGetnUniformfvRobustANGLE"));
1446 }
1447
1448 if (ext.b_GL_ANGLE_robust_client_memory) {
1449 fn.glGetnUniformivRobustANGLEFn =
1450 reinterpret_cast<glGetnUniformivRobustANGLEProc>(
1451 GetGLProcAddress("glGetnUniformivRobustANGLE"));
1452 }
1453
1454 if (ext.b_GL_ANGLE_robust_client_memory) {
1455 fn.glGetnUniformuivRobustANGLEFn =
1456 reinterpret_cast<glGetnUniformuivRobustANGLEProc>(
1457 GetGLProcAddress("glGetnUniformuivRobustANGLE"));
1458 }
1459
1460 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
1461 fn.glGetObjectLabelFn = reinterpret_cast<glGetObjectLabelProc>(
1462 GetGLProcAddress("glGetObjectLabel"));
1463 } else if (ext.b_GL_KHR_debug) {
1464 fn.glGetObjectLabelFn = reinterpret_cast<glGetObjectLabelProc>(
1465 GetGLProcAddress("glGetObjectLabelKHR"));
1466 }
1467
1468 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
1469 fn.glGetObjectPtrLabelFn = reinterpret_cast<glGetObjectPtrLabelProc>(
1470 GetGLProcAddress("glGetObjectPtrLabel"));
1471 } else if (ext.b_GL_KHR_debug) {
1472 fn.glGetObjectPtrLabelFn = reinterpret_cast<glGetObjectPtrLabelProc>(
1473 GetGLProcAddress("glGetObjectPtrLabelKHR"));
1474 }
1475
1476 if (!ver->is_es || ver->IsAtLeastGLES(3u, 2u)) {
1477 fn.glGetPointervFn =
1478 reinterpret_cast<glGetPointervProc>(GetGLProcAddress("glGetPointerv"));
1479 } else if (ext.b_GL_KHR_debug) {
1480 fn.glGetPointervFn = reinterpret_cast<glGetPointervProc>(
1481 GetGLProcAddress("glGetPointervKHR"));
1482 }
1483
1484 if (ext.b_GL_ANGLE_robust_client_memory) {
1485 fn.glGetPointervRobustANGLERobustANGLEFn =
1486 reinterpret_cast<glGetPointervRobustANGLERobustANGLEProc>(
1487 GetGLProcAddress("glGetPointervRobustANGLERobustANGLE"));
1488 }
1489
1490 if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) ||
1491 ext.b_GL_ARB_get_program_binary) {
1492 fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>(
1493 GetGLProcAddress("glGetProgramBinary"));
1494 } else if (ext.b_GL_OES_get_program_binary) {
1495 fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>(
1496 GetGLProcAddress("glGetProgramBinaryOES"));
1497 }
1498
1499 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u) ||
1500 ext.b_GL_ARB_program_interface_query) {
1501 fn.glGetProgramInterfaceivFn =
1502 reinterpret_cast<glGetProgramInterfaceivProc>(
1503 GetGLProcAddress("glGetProgramInterfaceiv"));
1504 }
1505
1506 if (ext.b_GL_ANGLE_robust_client_memory) {
1507 fn.glGetProgramInterfaceivRobustANGLEFn =
1508 reinterpret_cast<glGetProgramInterfaceivRobustANGLEProc>(
1509 GetGLProcAddress("glGetProgramInterfaceivRobustANGLE"));
1510 }
1511
1512 if (ext.b_GL_ANGLE_robust_client_memory) {
1513 fn.glGetProgramivRobustANGLEFn =
1514 reinterpret_cast<glGetProgramivRobustANGLEProc>(
1515 GetGLProcAddress("glGetProgramivRobustANGLE"));
1516 }
1517
1518 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u) ||
1519 ext.b_GL_ARB_program_interface_query) {
1520 fn.glGetProgramResourceivFn = reinterpret_cast<glGetProgramResourceivProc>(
1521 GetGLProcAddress("glGetProgramResourceiv"));
1522 }
1523
1524 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u)) {
1525 fn.glGetProgramResourceLocationFn =
1526 reinterpret_cast<glGetProgramResourceLocationProc>(
1527 GetGLProcAddress("glGetProgramResourceLocation"));
1528 }
1529
1530 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u) ||
1531 ext.b_GL_ARB_program_interface_query) {
1532 fn.glGetProgramResourceNameFn =
1533 reinterpret_cast<glGetProgramResourceNameProc>(
1534 GetGLProcAddress("glGetProgramResourceName"));
1535 }
1536
1537 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1538 fn.glGetQueryivFn =
1539 reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryiv"));
1540 } else if (ext.b_GL_ARB_occlusion_query) {
1541 fn.glGetQueryivFn =
1542 reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryivARB"));
1543 } else if (ext.b_GL_EXT_disjoint_timer_query ||
1544 ext.b_GL_EXT_occlusion_query_boolean) {
1545 fn.glGetQueryivFn =
1546 reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryivEXT"));
1547 }
1548
1549 if (ext.b_GL_ANGLE_robust_client_memory) {
1550 fn.glGetQueryivRobustANGLEFn =
1551 reinterpret_cast<glGetQueryivRobustANGLEProc>(
1552 GetGLProcAddress("glGetQueryivRobustANGLE"));
1553 }
1554
1555 if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) {
1556 fn.glGetQueryObjecti64vFn = reinterpret_cast<glGetQueryObjecti64vProc>(
1557 GetGLProcAddress("glGetQueryObjecti64v"));
1558 } else if (ext.b_GL_EXT_timer_query || ext.b_GL_EXT_disjoint_timer_query) {
1559 fn.glGetQueryObjecti64vFn = reinterpret_cast<glGetQueryObjecti64vProc>(
1560 GetGLProcAddress("glGetQueryObjecti64vEXT"));
1561 }
1562
1563 if (ext.b_GL_ANGLE_robust_client_memory) {
1564 fn.glGetQueryObjecti64vRobustANGLEFn =
1565 reinterpret_cast<glGetQueryObjecti64vRobustANGLEProc>(
1566 GetGLProcAddress("glGetQueryObjecti64vRobustANGLE"));
1567 }
1568
1569 if (!ver->is_es) {
1570 fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>(
1571 GetGLProcAddress("glGetQueryObjectiv"));
1572 } else if (ext.b_GL_ARB_occlusion_query) {
1573 fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>(
1574 GetGLProcAddress("glGetQueryObjectivARB"));
1575 } else if (ext.b_GL_EXT_disjoint_timer_query) {
1576 fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>(
1577 GetGLProcAddress("glGetQueryObjectivEXT"));
1578 }
1579
1580 if (ext.b_GL_ANGLE_robust_client_memory) {
1581 fn.glGetQueryObjectivRobustANGLEFn =
1582 reinterpret_cast<glGetQueryObjectivRobustANGLEProc>(
1583 GetGLProcAddress("glGetQueryObjectivRobustANGLE"));
1584 }
1585
1586 if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) {
1587 fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>(
1588 GetGLProcAddress("glGetQueryObjectui64v"));
1589 } else if (ext.b_GL_EXT_timer_query || ext.b_GL_EXT_disjoint_timer_query) {
1590 fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>(
1591 GetGLProcAddress("glGetQueryObjectui64vEXT"));
1592 }
1593
1594 if (ext.b_GL_ANGLE_robust_client_memory) {
1595 fn.glGetQueryObjectui64vRobustANGLEFn =
1596 reinterpret_cast<glGetQueryObjectui64vRobustANGLEProc>(
1597 GetGLProcAddress("glGetQueryObjectui64vRobustANGLE"));
1598 }
1599
1600 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1601 fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>(
1602 GetGLProcAddress("glGetQueryObjectuiv"));
1603 } else if (ext.b_GL_ARB_occlusion_query) {
1604 fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>(
1605 GetGLProcAddress("glGetQueryObjectuivARB"));
1606 } else if (ext.b_GL_EXT_disjoint_timer_query ||
1607 ext.b_GL_EXT_occlusion_query_boolean) {
1608 fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>(
1609 GetGLProcAddress("glGetQueryObjectuivEXT"));
1610 }
1611
1612 if (ext.b_GL_ANGLE_robust_client_memory) {
1613 fn.glGetQueryObjectuivRobustANGLEFn =
1614 reinterpret_cast<glGetQueryObjectuivRobustANGLEProc>(
1615 GetGLProcAddress("glGetQueryObjectuivRobustANGLE"));
1616 }
1617
1618 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1619 fn.glGetRenderbufferParameterivEXTFn =
1620 reinterpret_cast<glGetRenderbufferParameterivEXTProc>(
1621 GetGLProcAddress("glGetRenderbufferParameteriv"));
1622 } else if (ext.b_GL_EXT_framebuffer_object) {
1623 fn.glGetRenderbufferParameterivEXTFn =
1624 reinterpret_cast<glGetRenderbufferParameterivEXTProc>(
1625 GetGLProcAddress("glGetRenderbufferParameterivEXT"));
1626 }
1627
1628 if (ext.b_GL_ANGLE_robust_client_memory) {
1629 fn.glGetRenderbufferParameterivRobustANGLEFn =
1630 reinterpret_cast<glGetRenderbufferParameterivRobustANGLEProc>(
1631 GetGLProcAddress("glGetRenderbufferParameterivRobustANGLE"));
1632 }
1633
1634 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
1635 ext.b_GL_ARB_sampler_objects) {
1636 fn.glGetSamplerParameterfvFn =
1637 reinterpret_cast<glGetSamplerParameterfvProc>(
1638 GetGLProcAddress("glGetSamplerParameterfv"));
1639 }
1640
1641 if (ext.b_GL_ANGLE_robust_client_memory) {
1642 fn.glGetSamplerParameterfvRobustANGLEFn =
1643 reinterpret_cast<glGetSamplerParameterfvRobustANGLEProc>(
1644 GetGLProcAddress("glGetSamplerParameterfvRobustANGLE"));
1645 }
1646
1647 if (ext.b_GL_ANGLE_robust_client_memory) {
1648 fn.glGetSamplerParameterIivRobustANGLEFn =
1649 reinterpret_cast<glGetSamplerParameterIivRobustANGLEProc>(
1650 GetGLProcAddress("glGetSamplerParameterIivRobustANGLE"));
1651 }
1652
1653 if (ext.b_GL_ANGLE_robust_client_memory) {
1654 fn.glGetSamplerParameterIuivRobustANGLEFn =
1655 reinterpret_cast<glGetSamplerParameterIuivRobustANGLEProc>(
1656 GetGLProcAddress("glGetSamplerParameterIuivRobustANGLE"));
1657 }
1658
1659 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
1660 ext.b_GL_ARB_sampler_objects) {
1661 fn.glGetSamplerParameterivFn =
1662 reinterpret_cast<glGetSamplerParameterivProc>(
1663 GetGLProcAddress("glGetSamplerParameteriv"));
1664 }
1665
1666 if (ext.b_GL_ANGLE_robust_client_memory) {
1667 fn.glGetSamplerParameterivRobustANGLEFn =
1668 reinterpret_cast<glGetSamplerParameterivRobustANGLEProc>(
1669 GetGLProcAddress("glGetSamplerParameterivRobustANGLE"));
1670 }
1671
1672 if (ext.b_GL_ANGLE_robust_client_memory) {
1673 fn.glGetShaderivRobustANGLEFn =
1674 reinterpret_cast<glGetShaderivRobustANGLEProc>(
1675 GetGLProcAddress("glGetShaderivRobustANGLE"));
1676 }
1677
1678 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
1679 fn.glGetShaderPrecisionFormatFn =
1680 reinterpret_cast<glGetShaderPrecisionFormatProc>(
1681 GetGLProcAddress("glGetShaderPrecisionFormat"));
1682 }
1683
1684 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
1685 ext.b_GL_ARB_sync) {
1686 fn.glGetSyncivFn =
1687 reinterpret_cast<glGetSyncivProc>(GetGLProcAddress("glGetSynciv"));
1688 }
1689
1690 if (!ver->is_es || ver->IsAtLeastGLES(3u, 1u)) {
1691 fn.glGetTexLevelParameterfvFn =
1692 reinterpret_cast<glGetTexLevelParameterfvProc>(
1693 GetGLProcAddress("glGetTexLevelParameterfv"));
1694 }
1695
1696 if (ext.b_GL_ANGLE_robust_client_memory) {
1697 fn.glGetTexLevelParameterfvRobustANGLEFn =
1698 reinterpret_cast<glGetTexLevelParameterfvRobustANGLEProc>(
1699 GetGLProcAddress("glGetTexLevelParameterfvRobustANGLE"));
1700 }
1701
1702 if (!ver->is_es || ver->IsAtLeastGLES(3u, 1u)) {
1703 fn.glGetTexLevelParameterivFn =
1704 reinterpret_cast<glGetTexLevelParameterivProc>(
1705 GetGLProcAddress("glGetTexLevelParameteriv"));
1706 }
1707
1708 if (ext.b_GL_ANGLE_robust_client_memory) {
1709 fn.glGetTexLevelParameterivRobustANGLEFn =
1710 reinterpret_cast<glGetTexLevelParameterivRobustANGLEProc>(
1711 GetGLProcAddress("glGetTexLevelParameterivRobustANGLE"));
1712 }
1713
1714 if (ext.b_GL_ANGLE_robust_client_memory) {
1715 fn.glGetTexParameterfvRobustANGLEFn =
1716 reinterpret_cast<glGetTexParameterfvRobustANGLEProc>(
1717 GetGLProcAddress("glGetTexParameterfvRobustANGLE"));
1718 }
1719
1720 if (ext.b_GL_ANGLE_robust_client_memory) {
1721 fn.glGetTexParameterIivRobustANGLEFn =
1722 reinterpret_cast<glGetTexParameterIivRobustANGLEProc>(
1723 GetGLProcAddress("glGetTexParameterIivRobustANGLE"));
1724 }
1725
1726 if (ext.b_GL_ANGLE_robust_client_memory) {
1727 fn.glGetTexParameterIuivRobustANGLEFn =
1728 reinterpret_cast<glGetTexParameterIuivRobustANGLEProc>(
1729 GetGLProcAddress("glGetTexParameterIuivRobustANGLE"));
1730 }
1731
1732 if (ext.b_GL_ANGLE_robust_client_memory) {
1733 fn.glGetTexParameterivRobustANGLEFn =
1734 reinterpret_cast<glGetTexParameterivRobustANGLEProc>(
1735 GetGLProcAddress("glGetTexParameterivRobustANGLE"));
1736 }
1737
1738 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1739 fn.glGetTransformFeedbackVaryingFn =
1740 reinterpret_cast<glGetTransformFeedbackVaryingProc>(
1741 GetGLProcAddress("glGetTransformFeedbackVarying"));
1742 } else if (ext.b_GL_EXT_transform_feedback) {
1743 fn.glGetTransformFeedbackVaryingFn =
1744 reinterpret_cast<glGetTransformFeedbackVaryingProc>(
1745 GetGLProcAddress("glGetTransformFeedbackVaryingEXT"));
1746 }
1747
1748 if (ext.b_GL_ANGLE_translated_shader_source) {
1749 fn.glGetTranslatedShaderSourceANGLEFn =
1750 reinterpret_cast<glGetTranslatedShaderSourceANGLEProc>(
1751 GetGLProcAddress("glGetTranslatedShaderSourceANGLE"));
1752 }
1753
1754 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1755 fn.glGetUniformBlockIndexFn = reinterpret_cast<glGetUniformBlockIndexProc>(
1756 GetGLProcAddress("glGetUniformBlockIndex"));
1757 }
1758
1759 if (ext.b_GL_ANGLE_robust_client_memory) {
1760 fn.glGetUniformfvRobustANGLEFn =
1761 reinterpret_cast<glGetUniformfvRobustANGLEProc>(
1762 GetGLProcAddress("glGetUniformfvRobustANGLE"));
1763 }
1764
1765 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1766 fn.glGetUniformIndicesFn = reinterpret_cast<glGetUniformIndicesProc>(
1767 GetGLProcAddress("glGetUniformIndices"));
1768 }
1769
1770 if (ext.b_GL_ANGLE_robust_client_memory) {
1771 fn.glGetUniformivRobustANGLEFn =
1772 reinterpret_cast<glGetUniformivRobustANGLEProc>(
1773 GetGLProcAddress("glGetUniformivRobustANGLE"));
1774 }
1775
1776 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1777 fn.glGetUniformuivFn = reinterpret_cast<glGetUniformuivProc>(
1778 GetGLProcAddress("glGetUniformuiv"));
1779 }
1780
1781 if (ext.b_GL_ANGLE_robust_client_memory) {
1782 fn.glGetUniformuivRobustANGLEFn =
1783 reinterpret_cast<glGetUniformuivRobustANGLEProc>(
1784 GetGLProcAddress("glGetUniformuivRobustANGLE"));
1785 }
1786
1787 if (ext.b_GL_ANGLE_robust_client_memory) {
1788 fn.glGetVertexAttribfvRobustANGLEFn =
1789 reinterpret_cast<glGetVertexAttribfvRobustANGLEProc>(
1790 GetGLProcAddress("glGetVertexAttribfvRobustANGLE"));
1791 }
1792
1793 if (ext.b_GL_ANGLE_robust_client_memory) {
1794 fn.glGetVertexAttribIivRobustANGLEFn =
1795 reinterpret_cast<glGetVertexAttribIivRobustANGLEProc>(
1796 GetGLProcAddress("glGetVertexAttribIivRobustANGLE"));
1797 }
1798
1799 if (ext.b_GL_ANGLE_robust_client_memory) {
1800 fn.glGetVertexAttribIuivRobustANGLEFn =
1801 reinterpret_cast<glGetVertexAttribIuivRobustANGLEProc>(
1802 GetGLProcAddress("glGetVertexAttribIuivRobustANGLE"));
1803 }
1804
1805 if (ext.b_GL_ANGLE_robust_client_memory) {
1806 fn.glGetVertexAttribivRobustANGLEFn =
1807 reinterpret_cast<glGetVertexAttribivRobustANGLEProc>(
1808 GetGLProcAddress("glGetVertexAttribivRobustANGLE"));
1809 }
1810
1811 if (ext.b_GL_ANGLE_robust_client_memory) {
1812 fn.glGetVertexAttribPointervRobustANGLEFn =
1813 reinterpret_cast<glGetVertexAttribPointervRobustANGLEProc>(
1814 GetGLProcAddress("glGetVertexAttribPointervRobustANGLE"));
1815 }
1816
1817 if (ext.b_GL_EXT_debug_marker) {
1818 fn.glInsertEventMarkerEXTFn = reinterpret_cast<glInsertEventMarkerEXTProc>(
1819 GetGLProcAddress("glInsertEventMarkerEXT"));
1820 }
1821
1822 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1823 fn.glInvalidateFramebufferFn =
1824 reinterpret_cast<glInvalidateFramebufferProc>(
1825 GetGLProcAddress("glInvalidateFramebuffer"));
1826 }
1827
1828 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1829 fn.glInvalidateSubFramebufferFn =
1830 reinterpret_cast<glInvalidateSubFramebufferProc>(
1831 GetGLProcAddress("glInvalidateSubFramebuffer"));
1832 }
1833
1834 if (ext.b_GL_APPLE_fence) {
1835 fn.glIsFenceAPPLEFn = reinterpret_cast<glIsFenceAPPLEProc>(
1836 GetGLProcAddress("glIsFenceAPPLE"));
1837 }
1838
1839 if (ext.b_GL_NV_fence) {
1840 fn.glIsFenceNVFn =
1841 reinterpret_cast<glIsFenceNVProc>(GetGLProcAddress("glIsFenceNV"));
1842 }
1843
1844 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1845 fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>(
1846 GetGLProcAddress("glIsFramebuffer"));
1847 } else if (ext.b_GL_EXT_framebuffer_object) {
1848 fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>(
1849 GetGLProcAddress("glIsFramebufferEXT"));
1850 }
1851
1852 if (ext.b_GL_NV_path_rendering) {
1853 fn.glIsPathNVFn =
1854 reinterpret_cast<glIsPathNVProc>(GetGLProcAddress("glIsPathNV"));
1855 }
1856
1857 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1858 fn.glIsQueryFn =
1859 reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQuery"));
1860 } else if (ext.b_GL_ARB_occlusion_query) {
1861 fn.glIsQueryFn =
1862 reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQueryARB"));
1863 } else if (ext.b_GL_EXT_disjoint_timer_query ||
1864 ext.b_GL_EXT_occlusion_query_boolean) {
1865 fn.glIsQueryFn =
1866 reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQueryEXT"));
1867 }
1868
1869 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
1870 fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>(
1871 GetGLProcAddress("glIsRenderbuffer"));
1872 } else if (ext.b_GL_EXT_framebuffer_object) {
1873 fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>(
1874 GetGLProcAddress("glIsRenderbufferEXT"));
1875 }
1876
1877 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
1878 ext.b_GL_ARB_sampler_objects) {
1879 fn.glIsSamplerFn =
1880 reinterpret_cast<glIsSamplerProc>(GetGLProcAddress("glIsSampler"));
1881 }
1882
1883 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
1884 ext.b_GL_ARB_sync) {
1885 fn.glIsSyncFn =
1886 reinterpret_cast<glIsSyncProc>(GetGLProcAddress("glIsSync"));
1887 }
1888
1889 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
1890 ext.b_GL_ARB_transform_feedback2) {
1891 fn.glIsTransformFeedbackFn = reinterpret_cast<glIsTransformFeedbackProc>(
1892 GetGLProcAddress("glIsTransformFeedback"));
1893 }
1894
1895 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
1896 ext.b_GL_ARB_vertex_array_object) {
1897 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
1898 GetGLProcAddress("glIsVertexArray"));
1899 } else if (ext.b_GL_OES_vertex_array_object) {
1900 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
1901 GetGLProcAddress("glIsVertexArrayOES"));
1902 } else if (ext.b_GL_APPLE_vertex_array_object) {
1903 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
1904 GetGLProcAddress("glIsVertexArrayAPPLE"));
1905 }
1906
1907 if (!ver->is_es) {
1908 fn.glMapBufferFn =
1909 reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBuffer"));
1910 } else if (ext.b_GL_OES_mapbuffer) {
1911 fn.glMapBufferFn =
1912 reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBufferOES"));
1913 }
1914
1915 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
1916 ext.b_GL_ARB_map_buffer_range) {
1917 fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>(
1918 GetGLProcAddress("glMapBufferRange"));
1919 } else if (ext.b_GL_EXT_map_buffer_range) {
1920 fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>(
1921 GetGLProcAddress("glMapBufferRangeEXT"));
1922 }
1923
1924 if (ext.b_GL_EXT_direct_state_access || ext.b_GL_NV_path_rendering) {
1925 fn.glMatrixLoadfEXTFn = reinterpret_cast<glMatrixLoadfEXTProc>(
1926 GetGLProcAddress("glMatrixLoadfEXT"));
1927 }
1928
1929 if (ext.b_GL_EXT_direct_state_access || ext.b_GL_NV_path_rendering) {
1930 fn.glMatrixLoadIdentityEXTFn =
1931 reinterpret_cast<glMatrixLoadIdentityEXTProc>(
1932 GetGLProcAddress("glMatrixLoadIdentityEXT"));
1933 }
1934
1935 if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 1u) ||
1936 ext.b_GL_ARB_shader_image_load_store) {
1937 fn.glMemoryBarrierEXTFn = reinterpret_cast<glMemoryBarrierEXTProc>(
1938 GetGLProcAddress("glMemoryBarrier"));
1939 } else if (ext.b_GL_EXT_shader_image_load_store) {
1940 fn.glMemoryBarrierEXTFn = reinterpret_cast<glMemoryBarrierEXTProc>(
1941 GetGLProcAddress("glMemoryBarrierEXT"));
1942 }
1943
1944 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
1945 fn.glObjectLabelFn =
1946 reinterpret_cast<glObjectLabelProc>(GetGLProcAddress("glObjectLabel"));
1947 } else if (ext.b_GL_KHR_debug) {
1948 fn.glObjectLabelFn = reinterpret_cast<glObjectLabelProc>(
1949 GetGLProcAddress("glObjectLabelKHR"));
1950 }
1951
1952 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
1953 fn.glObjectPtrLabelFn = reinterpret_cast<glObjectPtrLabelProc>(
1954 GetGLProcAddress("glObjectPtrLabel"));
1955 } else if (ext.b_GL_KHR_debug) {
1956 fn.glObjectPtrLabelFn = reinterpret_cast<glObjectPtrLabelProc>(
1957 GetGLProcAddress("glObjectPtrLabelKHR"));
1958 }
1959
1960 if (ext.b_GL_NV_path_rendering) {
1961 fn.glPathCommandsNVFn = reinterpret_cast<glPathCommandsNVProc>(
1962 GetGLProcAddress("glPathCommandsNV"));
1963 }
1964
1965 if (ext.b_GL_NV_path_rendering) {
1966 fn.glPathParameterfNVFn = reinterpret_cast<glPathParameterfNVProc>(
1967 GetGLProcAddress("glPathParameterfNV"));
1968 }
1969
1970 if (ext.b_GL_NV_path_rendering) {
1971 fn.glPathParameteriNVFn = reinterpret_cast<glPathParameteriNVProc>(
1972 GetGLProcAddress("glPathParameteriNV"));
1973 }
1974
1975 if (ext.b_GL_NV_path_rendering) {
1976 fn.glPathStencilFuncNVFn = reinterpret_cast<glPathStencilFuncNVProc>(
1977 GetGLProcAddress("glPathStencilFuncNV"));
1978 }
1979
1980 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
1981 ext.b_GL_ARB_transform_feedback2) {
1982 fn.glPauseTransformFeedbackFn =
1983 reinterpret_cast<glPauseTransformFeedbackProc>(
1984 GetGLProcAddress("glPauseTransformFeedback"));
1985 }
1986
1987 if (!ver->is_es) {
1988 fn.glPointParameteriFn = reinterpret_cast<glPointParameteriProc>(
1989 GetGLProcAddress("glPointParameteri"));
1990 }
1991
1992 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
1993 fn.glPopDebugGroupFn = reinterpret_cast<glPopDebugGroupProc>(
1994 GetGLProcAddress("glPopDebugGroup"));
1995 } else if (ext.b_GL_KHR_debug) {
1996 fn.glPopDebugGroupFn = reinterpret_cast<glPopDebugGroupProc>(
1997 GetGLProcAddress("glPopDebugGroupKHR"));
1998 }
1999
2000 if (ext.b_GL_EXT_debug_marker) {
2001 fn.glPopGroupMarkerEXTFn = reinterpret_cast<glPopGroupMarkerEXTProc>(
2002 GetGLProcAddress("glPopGroupMarkerEXT"));
2003 }
2004
2005 if (ver->IsAtLeastGL(3u, 1u)) {
2006 fn.glPrimitiveRestartIndexFn =
2007 reinterpret_cast<glPrimitiveRestartIndexProc>(
2008 GetGLProcAddress("glPrimitiveRestartIndex"));
2009 }
2010
2011 if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) ||
2012 ext.b_GL_ARB_get_program_binary) {
2013 fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>(
2014 GetGLProcAddress("glProgramBinary"));
2015 } else if (ext.b_GL_OES_get_program_binary) {
2016 fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>(
2017 GetGLProcAddress("glProgramBinaryOES"));
2018 }
2019
2020 if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) ||
2021 ext.b_GL_ARB_get_program_binary) {
2022 fn.glProgramParameteriFn = reinterpret_cast<glProgramParameteriProc>(
2023 GetGLProcAddress("glProgramParameteri"));
2024 }
2025
2026 if (ext.b_GL_NV_path_rendering) {
2027 fn.glProgramPathFragmentInputGenNVFn =
2028 reinterpret_cast<glProgramPathFragmentInputGenNVProc>(
2029 GetGLProcAddress("glProgramPathFragmentInputGenNV"));
2030 }
2031
2032 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
2033 fn.glPushDebugGroupFn = reinterpret_cast<glPushDebugGroupProc>(
2034 GetGLProcAddress("glPushDebugGroup"));
2035 } else if (ext.b_GL_KHR_debug) {
2036 fn.glPushDebugGroupFn = reinterpret_cast<glPushDebugGroupProc>(
2037 GetGLProcAddress("glPushDebugGroupKHR"));
2038 }
2039
2040 if (ext.b_GL_EXT_debug_marker) {
2041 fn.glPushGroupMarkerEXTFn = reinterpret_cast<glPushGroupMarkerEXTProc>(
2042 GetGLProcAddress("glPushGroupMarkerEXT"));
2043 }
2044
2045 if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) {
2046 fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>(
2047 GetGLProcAddress("glQueryCounter"));
2048 } else if (ext.b_GL_EXT_disjoint_timer_query) {
2049 fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>(
2050 GetGLProcAddress("glQueryCounterEXT"));
2051 }
2052
2053 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2054 fn.glReadBufferFn =
2055 reinterpret_cast<glReadBufferProc>(GetGLProcAddress("glReadBuffer"));
2056 }
2057
2058 if (ext.b_GL_ANGLE_robust_client_memory) {
2059 fn.glReadnPixelsRobustANGLEFn =
2060 reinterpret_cast<glReadnPixelsRobustANGLEProc>(
2061 GetGLProcAddress("glReadnPixelsRobustANGLE"));
2062 }
2063
2064 if (ext.b_GL_ANGLE_robust_client_memory) {
2065 fn.glReadPixelsRobustANGLEFn =
2066 reinterpret_cast<glReadPixelsRobustANGLEProc>(
2067 GetGLProcAddress("glReadPixelsRobustANGLE"));
2068 }
2069
2070 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
2071 fn.glReleaseShaderCompilerFn =
2072 reinterpret_cast<glReleaseShaderCompilerProc>(
2073 GetGLProcAddress("glReleaseShaderCompiler"));
2074 }
2075
2076 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
2077 fn.glRenderbufferStorageEXTFn =
2078 reinterpret_cast<glRenderbufferStorageEXTProc>(
2079 GetGLProcAddress("glRenderbufferStorage"));
2080 } else if (ext.b_GL_EXT_framebuffer_object) {
2081 fn.glRenderbufferStorageEXTFn =
2082 reinterpret_cast<glRenderbufferStorageEXTProc>(
2083 GetGLProcAddress("glRenderbufferStorageEXT"));
2084 }
2085
2086 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2087 fn.glRenderbufferStorageMultisampleFn =
2088 reinterpret_cast<glRenderbufferStorageMultisampleProc>(
2089 GetGLProcAddress("glRenderbufferStorageMultisample"));
2090 }
2091
2092 if (ext.b_GL_ANGLE_framebuffer_multisample) {
2093 fn.glRenderbufferStorageMultisampleANGLEFn =
2094 reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>(
2095 GetGLProcAddress("glRenderbufferStorageMultisampleANGLE"));
2096 }
2097
2098 if (ext.b_GL_EXT_multisampled_render_to_texture ||
2099 ext.b_GL_EXT_framebuffer_multisample) {
2100 fn.glRenderbufferStorageMultisampleEXTFn =
2101 reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>(
2102 GetGLProcAddress("glRenderbufferStorageMultisampleEXT"));
2103 }
2104
2105 if (ext.b_GL_IMG_multisampled_render_to_texture) {
2106 fn.glRenderbufferStorageMultisampleIMGFn =
2107 reinterpret_cast<glRenderbufferStorageMultisampleIMGProc>(
2108 GetGLProcAddress("glRenderbufferStorageMultisampleIMG"));
2109 }
2110
2111 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
2112 ext.b_GL_ARB_transform_feedback2) {
2113 fn.glResumeTransformFeedbackFn =
2114 reinterpret_cast<glResumeTransformFeedbackProc>(
2115 GetGLProcAddress("glResumeTransformFeedback"));
2116 }
2117
2118 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
2119 ext.b_GL_ARB_sampler_objects) {
2120 fn.glSamplerParameterfFn = reinterpret_cast<glSamplerParameterfProc>(
2121 GetGLProcAddress("glSamplerParameterf"));
2122 }
2123
2124 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
2125 ext.b_GL_ARB_sampler_objects) {
2126 fn.glSamplerParameterfvFn = reinterpret_cast<glSamplerParameterfvProc>(
2127 GetGLProcAddress("glSamplerParameterfv"));
2128 }
2129
2130 if (ext.b_GL_ANGLE_robust_client_memory) {
2131 fn.glSamplerParameterfvRobustANGLEFn =
2132 reinterpret_cast<glSamplerParameterfvRobustANGLEProc>(
2133 GetGLProcAddress("glSamplerParameterfvRobustANGLE"));
2134 }
2135
2136 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
2137 ext.b_GL_ARB_sampler_objects) {
2138 fn.glSamplerParameteriFn = reinterpret_cast<glSamplerParameteriProc>(
2139 GetGLProcAddress("glSamplerParameteri"));
2140 }
2141
2142 if (ext.b_GL_ANGLE_robust_client_memory) {
2143 fn.glSamplerParameterIivRobustANGLEFn =
2144 reinterpret_cast<glSamplerParameterIivRobustANGLEProc>(
2145 GetGLProcAddress("glSamplerParameterIivRobustANGLE"));
2146 }
2147
2148 if (ext.b_GL_ANGLE_robust_client_memory) {
2149 fn.glSamplerParameterIuivRobustANGLEFn =
2150 reinterpret_cast<glSamplerParameterIuivRobustANGLEProc>(
2151 GetGLProcAddress("glSamplerParameterIuivRobustANGLE"));
2152 }
2153
2154 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
2155 ext.b_GL_ARB_sampler_objects) {
2156 fn.glSamplerParameterivFn = reinterpret_cast<glSamplerParameterivProc>(
2157 GetGLProcAddress("glSamplerParameteriv"));
2158 }
2159
2160 if (ext.b_GL_ANGLE_robust_client_memory) {
2161 fn.glSamplerParameterivRobustANGLEFn =
2162 reinterpret_cast<glSamplerParameterivRobustANGLEProc>(
2163 GetGLProcAddress("glSamplerParameterivRobustANGLE"));
2164 }
2165
2166 if (ext.b_GL_APPLE_fence) {
2167 fn.glSetFenceAPPLEFn = reinterpret_cast<glSetFenceAPPLEProc>(
2168 GetGLProcAddress("glSetFenceAPPLE"));
2169 }
2170
2171 if (ext.b_GL_NV_fence) {
2172 fn.glSetFenceNVFn =
2173 reinterpret_cast<glSetFenceNVProc>(GetGLProcAddress("glSetFenceNV"));
2174 }
2175
2176 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
2177 fn.glShaderBinaryFn = reinterpret_cast<glShaderBinaryProc>(
2178 GetGLProcAddress("glShaderBinary"));
2179 }
2180
2181 if (ext.b_GL_NV_path_rendering) {
2182 fn.glStencilFillPathInstancedNVFn =
2183 reinterpret_cast<glStencilFillPathInstancedNVProc>(
2184 GetGLProcAddress("glStencilFillPathInstancedNV"));
2185 }
2186
2187 if (ext.b_GL_NV_path_rendering) {
2188 fn.glStencilFillPathNVFn = reinterpret_cast<glStencilFillPathNVProc>(
2189 GetGLProcAddress("glStencilFillPathNV"));
2190 }
2191
2192 if (ext.b_GL_NV_path_rendering) {
2193 fn.glStencilStrokePathInstancedNVFn =
2194 reinterpret_cast<glStencilStrokePathInstancedNVProc>(
2195 GetGLProcAddress("glStencilStrokePathInstancedNV"));
2196 }
2197
2198 if (ext.b_GL_NV_path_rendering) {
2199 fn.glStencilStrokePathNVFn = reinterpret_cast<glStencilStrokePathNVProc>(
2200 GetGLProcAddress("glStencilStrokePathNV"));
2201 }
2202
2203 if (ext.b_GL_NV_path_rendering) {
2204 fn.glStencilThenCoverFillPathInstancedNVFn =
2205 reinterpret_cast<glStencilThenCoverFillPathInstancedNVProc>(
2206 GetGLProcAddress("glStencilThenCoverFillPathInstancedNV"));
2207 }
2208
2209 if (ext.b_GL_NV_path_rendering) {
2210 fn.glStencilThenCoverFillPathNVFn =
2211 reinterpret_cast<glStencilThenCoverFillPathNVProc>(
2212 GetGLProcAddress("glStencilThenCoverFillPathNV"));
2213 }
2214
2215 if (ext.b_GL_NV_path_rendering) {
2216 fn.glStencilThenCoverStrokePathInstancedNVFn =
2217 reinterpret_cast<glStencilThenCoverStrokePathInstancedNVProc>(
2218 GetGLProcAddress("glStencilThenCoverStrokePathInstancedNV"));
2219 }
2220
2221 if (ext.b_GL_NV_path_rendering) {
2222 fn.glStencilThenCoverStrokePathNVFn =
2223 reinterpret_cast<glStencilThenCoverStrokePathNVProc>(
2224 GetGLProcAddress("glStencilThenCoverStrokePathNV"));
2225 }
2226
2227 if (ext.b_GL_APPLE_fence) {
2228 fn.glTestFenceAPPLEFn = reinterpret_cast<glTestFenceAPPLEProc>(
2229 GetGLProcAddress("glTestFenceAPPLE"));
2230 }
2231
2232 if (ext.b_GL_NV_fence) {
2233 fn.glTestFenceNVFn =
2234 reinterpret_cast<glTestFenceNVProc>(GetGLProcAddress("glTestFenceNV"));
2235 }
2236
2237 if (ext.b_GL_ANGLE_robust_client_memory) {
2238 fn.glTexImage2DRobustANGLEFn =
2239 reinterpret_cast<glTexImage2DRobustANGLEProc>(
2240 GetGLProcAddress("glTexImage2DRobustANGLE"));
2241 }
2242
2243 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2244 fn.glTexImage3DFn =
2245 reinterpret_cast<glTexImage3DProc>(GetGLProcAddress("glTexImage3D"));
2246 }
2247
2248 if (ext.b_GL_ANGLE_robust_client_memory) {
2249 fn.glTexImage3DRobustANGLEFn =
2250 reinterpret_cast<glTexImage3DRobustANGLEProc>(
2251 GetGLProcAddress("glTexImage3DRobustANGLE"));
2252 }
2253
2254 if (ext.b_GL_ANGLE_robust_client_memory) {
2255 fn.glTexParameterfvRobustANGLEFn =
2256 reinterpret_cast<glTexParameterfvRobustANGLEProc>(
2257 GetGLProcAddress("glTexParameterfvRobustANGLE"));
2258 }
2259
2260 if (ext.b_GL_ANGLE_robust_client_memory) {
2261 fn.glTexParameterIivRobustANGLEFn =
2262 reinterpret_cast<glTexParameterIivRobustANGLEProc>(
2263 GetGLProcAddress("glTexParameterIivRobustANGLE"));
2264 }
2265
2266 if (ext.b_GL_ANGLE_robust_client_memory) {
2267 fn.glTexParameterIuivRobustANGLEFn =
2268 reinterpret_cast<glTexParameterIuivRobustANGLEProc>(
2269 GetGLProcAddress("glTexParameterIuivRobustANGLE"));
2270 }
2271
2272 if (ext.b_GL_ANGLE_robust_client_memory) {
2273 fn.glTexParameterivRobustANGLEFn =
2274 reinterpret_cast<glTexParameterivRobustANGLEProc>(
2275 GetGLProcAddress("glTexParameterivRobustANGLE"));
2276 }
2277
2278 if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
2279 ext.b_GL_ARB_texture_storage) {
2280 fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>(
2281 GetGLProcAddress("glTexStorage2D"));
2282 } else if (ext.b_GL_EXT_texture_storage) {
2283 fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>(
2284 GetGLProcAddress("glTexStorage2DEXT"));
2285 }
2286
2287 if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
2288 ext.b_GL_ARB_texture_storage) {
2289 fn.glTexStorage3DFn = reinterpret_cast<glTexStorage3DProc>(
2290 GetGLProcAddress("glTexStorage3D"));
2291 }
2292
2293 if (ext.b_GL_ANGLE_robust_client_memory) {
2294 fn.glTexSubImage2DRobustANGLEFn =
2295 reinterpret_cast<glTexSubImage2DRobustANGLEProc>(
2296 GetGLProcAddress("glTexSubImage2DRobustANGLE"));
2297 }
2298
2299 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2300 fn.glTexSubImage3DFn = reinterpret_cast<glTexSubImage3DProc>(
2301 GetGLProcAddress("glTexSubImage3D"));
2302 }
2303
2304 if (ext.b_GL_ANGLE_robust_client_memory) {
2305 fn.glTexSubImage3DRobustANGLEFn =
2306 reinterpret_cast<glTexSubImage3DRobustANGLEProc>(
2307 GetGLProcAddress("glTexSubImage3DRobustANGLE"));
2308 }
2309
2310 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2311 fn.glTransformFeedbackVaryingsFn =
2312 reinterpret_cast<glTransformFeedbackVaryingsProc>(
2313 GetGLProcAddress("glTransformFeedbackVaryings"));
2314 } else if (ext.b_GL_EXT_transform_feedback) {
2315 fn.glTransformFeedbackVaryingsFn =
2316 reinterpret_cast<glTransformFeedbackVaryingsProc>(
2317 GetGLProcAddress("glTransformFeedbackVaryingsEXT"));
2318 }
2319
2320 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2321 fn.glUniform1uiFn =
2322 reinterpret_cast<glUniform1uiProc>(GetGLProcAddress("glUniform1ui"));
2323 }
2324
2325 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2326 fn.glUniform1uivFn =
2327 reinterpret_cast<glUniform1uivProc>(GetGLProcAddress("glUniform1uiv"));
2328 }
2329
2330 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2331 fn.glUniform2uiFn =
2332 reinterpret_cast<glUniform2uiProc>(GetGLProcAddress("glUniform2ui"));
2333 }
2334
2335 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2336 fn.glUniform2uivFn =
2337 reinterpret_cast<glUniform2uivProc>(GetGLProcAddress("glUniform2uiv"));
2338 }
2339
2340 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2341 fn.glUniform3uiFn =
2342 reinterpret_cast<glUniform3uiProc>(GetGLProcAddress("glUniform3ui"));
2343 }
2344
2345 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2346 fn.glUniform3uivFn =
2347 reinterpret_cast<glUniform3uivProc>(GetGLProcAddress("glUniform3uiv"));
2348 }
2349
2350 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2351 fn.glUniform4uiFn =
2352 reinterpret_cast<glUniform4uiProc>(GetGLProcAddress("glUniform4ui"));
2353 }
2354
2355 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2356 fn.glUniform4uivFn =
2357 reinterpret_cast<glUniform4uivProc>(GetGLProcAddress("glUniform4uiv"));
2358 }
2359
2360 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
2361 fn.glUniformBlockBindingFn = reinterpret_cast<glUniformBlockBindingProc>(
2362 GetGLProcAddress("glUniformBlockBinding"));
2363 }
2364
2365 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2366 fn.glUniformMatrix2x3fvFn = reinterpret_cast<glUniformMatrix2x3fvProc>(
2367 GetGLProcAddress("glUniformMatrix2x3fv"));
2368 }
2369
2370 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2371 fn.glUniformMatrix2x4fvFn = reinterpret_cast<glUniformMatrix2x4fvProc>(
2372 GetGLProcAddress("glUniformMatrix2x4fv"));
2373 }
2374
2375 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2376 fn.glUniformMatrix3x2fvFn = reinterpret_cast<glUniformMatrix3x2fvProc>(
2377 GetGLProcAddress("glUniformMatrix3x2fv"));
2378 }
2379
2380 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2381 fn.glUniformMatrix3x4fvFn = reinterpret_cast<glUniformMatrix3x4fvProc>(
2382 GetGLProcAddress("glUniformMatrix3x4fv"));
2383 }
2384
2385 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2386 fn.glUniformMatrix4x2fvFn = reinterpret_cast<glUniformMatrix4x2fvProc>(
2387 GetGLProcAddress("glUniformMatrix4x2fv"));
2388 }
2389
2390 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2391 fn.glUniformMatrix4x3fvFn = reinterpret_cast<glUniformMatrix4x3fvProc>(
2392 GetGLProcAddress("glUniformMatrix4x3fv"));
2393 }
2394
2395 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
2396 fn.glUnmapBufferFn =
2397 reinterpret_cast<glUnmapBufferProc>(GetGLProcAddress("glUnmapBuffer"));
2398 } else if (ext.b_GL_OES_mapbuffer) {
2399 fn.glUnmapBufferFn = reinterpret_cast<glUnmapBufferProc>(
2400 GetGLProcAddress("glUnmapBufferOES"));
2401 }
2402
2403 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
2404 fn.glVertexAttribDivisorANGLEFn =
2405 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
2406 GetGLProcAddress("glVertexAttribDivisor"));
2407 } else if (ext.b_GL_ARB_instanced_arrays) {
2408 fn.glVertexAttribDivisorANGLEFn =
2409 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
2410 GetGLProcAddress("glVertexAttribDivisorARB"));
2411 } else if (ext.b_GL_ANGLE_instanced_arrays) {
2412 fn.glVertexAttribDivisorANGLEFn =
2413 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
2414 GetGLProcAddress("glVertexAttribDivisorANGLE"));
2415 }
2416
2417 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2418 fn.glVertexAttribI4iFn = reinterpret_cast<glVertexAttribI4iProc>(
2419 GetGLProcAddress("glVertexAttribI4i"));
2420 }
2421
2422 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2423 fn.glVertexAttribI4ivFn = reinterpret_cast<glVertexAttribI4ivProc>(
2424 GetGLProcAddress("glVertexAttribI4iv"));
2425 }
2426
2427 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2428 fn.glVertexAttribI4uiFn = reinterpret_cast<glVertexAttribI4uiProc>(
2429 GetGLProcAddress("glVertexAttribI4ui"));
2430 }
2431
2432 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2433 fn.glVertexAttribI4uivFn = reinterpret_cast<glVertexAttribI4uivProc>(
2434 GetGLProcAddress("glVertexAttribI4uiv"));
2435 }
2436
2437 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
2438 fn.glVertexAttribIPointerFn = reinterpret_cast<glVertexAttribIPointerProc>(
2439 GetGLProcAddress("glVertexAttribIPointer"));
2440 }
2441
2442 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
2443 ext.b_GL_ARB_sync) {
2444 fn.glWaitSyncFn =
2445 reinterpret_cast<glWaitSyncProc>(GetGLProcAddress("glWaitSync"));
2446 }
2447 }
2448
2449 void DriverGL::ClearBindings() {
2450 memset(this, 0, sizeof(*this));
2451 }
2452
2453 } // namespace gl
OLDNEW
« no previous file with comments | « ui/gl/gl_bindings_autogen_egl.cc ('k') | ui/gl/gl_bindings_autogen_gl1.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698