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

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

Issue 893213002: Revert of Make GL bindings conditional (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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_gl.h ('k') | ui/gl/gl_bindings_autogen_glx.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // This file is auto-generated from 5 // This file is auto-generated from
6 // ui/gl/generate_bindings.py 6 // ui/gl/generate_bindings.py
7 // It's formatted by clang-format using chromium coding style: 7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename 8 // clang-format -i -style=chromium filename
9 // DO NOT EDIT! 9 // DO NOT EDIT!
10 10
11 #include <string> 11 #include <string>
12 12
13 #include "base/trace_event/trace_event.h" 13 #include "base/trace_event/trace_event.h"
14 #include "ui/gl/gl_bindings.h" 14 #include "ui/gl/gl_bindings.h"
15 #include "ui/gl/gl_context.h" 15 #include "ui/gl/gl_context.h"
16 #include "ui/gl/gl_enums.h" 16 #include "ui/gl/gl_enums.h"
17 #include "ui/gl/gl_gl_api_implementation.h" 17 #include "ui/gl/gl_gl_api_implementation.h"
18 #include "ui/gl/gl_implementation.h" 18 #include "ui/gl/gl_implementation.h"
19 #include "ui/gl/gl_version_info.h" 19 #include "ui/gl/gl_version_info.h"
20 20
21 namespace gfx { 21 namespace gfx {
22 22
23 static bool g_debugBindingsInitialized; 23 static bool g_debugBindingsInitialized;
24 DriverGL g_driver_gl; 24 DriverGL g_driver_gl;
25 25
26 void glBeginQueryARBNotBound(GLenum target, GLuint id) {
27 NOTREACHED();
28 }
29 void glBindFramebufferEXTNotBound(GLenum target, GLuint framebuffer) {
30 NOTREACHED();
31 }
32 void glBindRenderbufferEXTNotBound(GLenum target, GLuint renderbuffer) {
33 NOTREACHED();
34 }
35 void glBindVertexArrayOESNotBound(GLuint array) {
36 NOTREACHED();
37 }
38 void glBlendBarrierKHRNotBound(void) {
39 NOTREACHED();
40 }
41 void glBlitFramebufferANGLENotBound(GLint srcX0,
42 GLint srcY0,
43 GLint srcX1,
44 GLint srcY1,
45 GLint dstX0,
46 GLint dstY0,
47 GLint dstX1,
48 GLint dstY1,
49 GLbitfield mask,
50 GLenum filter) {
51 NOTREACHED();
52 }
53 void glBlitFramebufferEXTNotBound(GLint srcX0,
54 GLint srcY0,
55 GLint srcX1,
56 GLint srcY1,
57 GLint dstX0,
58 GLint dstY0,
59 GLint dstX1,
60 GLint dstY1,
61 GLbitfield mask,
62 GLenum filter) {
63 NOTREACHED();
64 }
65 GLenum glCheckFramebufferStatusEXTNotBound(GLenum target) {
66 NOTREACHED();
67 return 0;
68 }
69 void glDeleteBuffersARBNotBound(GLsizei n, const GLuint* buffers) {
70 NOTREACHED();
71 }
72 void glDeleteFramebuffersEXTNotBound(GLsizei n, const GLuint* framebuffers) {
73 NOTREACHED();
74 }
75 void glDeleteQueriesARBNotBound(GLsizei n, const GLuint* ids) {
76 NOTREACHED();
77 }
78 void glDeleteRenderbuffersEXTNotBound(GLsizei n, const GLuint* renderbuffers) {
79 NOTREACHED();
80 }
81 void glDeleteVertexArraysOESNotBound(GLsizei n, const GLuint* arrays) {
82 NOTREACHED();
83 }
84 void glDrawArraysInstancedANGLENotBound(GLenum mode,
85 GLint first,
86 GLsizei count,
87 GLsizei primcount) {
88 NOTREACHED();
89 }
90 void glDrawBuffersARBNotBound(GLsizei n, const GLenum* bufs) {
91 NOTREACHED();
92 }
93 void glDrawElementsInstancedANGLENotBound(GLenum mode,
94 GLsizei count,
95 GLenum type,
96 const void* indices,
97 GLsizei primcount) {
98 NOTREACHED();
99 }
100 void glEndQueryARBNotBound(GLenum target) {
101 NOTREACHED();
102 }
103 void glFramebufferRenderbufferEXTNotBound(GLenum target,
104 GLenum attachment,
105 GLenum renderbuffertarget,
106 GLuint renderbuffer) {
107 NOTREACHED();
108 }
109 void glFramebufferTexture2DEXTNotBound(GLenum target,
110 GLenum attachment,
111 GLenum textarget,
112 GLuint texture,
113 GLint level) {
114 NOTREACHED();
115 }
116 void glGenBuffersARBNotBound(GLsizei n, GLuint* buffers) {
117 NOTREACHED();
118 }
119 void glGenerateMipmapEXTNotBound(GLenum target) {
120 NOTREACHED();
121 }
122 void glGenFramebuffersEXTNotBound(GLsizei n, GLuint* framebuffers) {
123 NOTREACHED();
124 }
125 void glGenQueriesARBNotBound(GLsizei n, GLuint* ids) {
126 NOTREACHED();
127 }
128 void glGenRenderbuffersEXTNotBound(GLsizei n, GLuint* renderbuffers) {
129 NOTREACHED();
130 }
131 void glGenVertexArraysOESNotBound(GLsizei n, GLuint* arrays) {
132 NOTREACHED();
133 }
134 void glGetFramebufferAttachmentParameterivEXTNotBound(GLenum target,
135 GLenum attachment,
136 GLenum pname,
137 GLint* params) {
138 NOTREACHED();
139 }
140 GLenum glGetGraphicsResetStatusARBNotBound(void) {
141 NOTREACHED();
142 return 0;
143 }
144 void glGetProgramBinaryNotBound(GLuint program,
145 GLsizei bufSize,
146 GLsizei* length,
147 GLenum* binaryFormat,
148 GLvoid* binary) {
149 NOTREACHED();
150 }
151 void glGetQueryivARBNotBound(GLenum target, GLenum pname, GLint* params) {
152 NOTREACHED();
153 }
154 void glGetQueryObjectivARBNotBound(GLuint id, GLenum pname, GLint* params) {
155 NOTREACHED();
156 }
157 void glGetQueryObjectui64vNotBound(GLuint id, GLenum pname, GLuint64* params) {
158 NOTREACHED();
159 }
160 void glGetQueryObjectuivARBNotBound(GLuint id, GLenum pname, GLuint* params) {
161 NOTREACHED();
162 }
163 void glGetRenderbufferParameterivEXTNotBound(GLenum target,
164 GLenum pname,
165 GLint* params) {
166 NOTREACHED();
167 }
168 GLboolean glIsFramebufferEXTNotBound(GLuint framebuffer) {
169 NOTREACHED();
170 return 0;
171 }
172 GLboolean glIsQueryARBNotBound(GLuint query) {
173 NOTREACHED();
174 return 0;
175 }
176 GLboolean glIsRenderbufferEXTNotBound(GLuint renderbuffer) {
177 NOTREACHED();
178 return 0;
179 }
180 GLboolean glIsVertexArrayOESNotBound(GLuint array) {
181 NOTREACHED();
182 return 0;
183 }
184 void* glMapBufferNotBound(GLenum target, GLenum access) {
185 NOTREACHED();
186 return 0;
187 }
188 void* glMapBufferRangeNotBound(GLenum target,
189 GLintptr offset,
190 GLsizeiptr length,
191 GLbitfield access) {
192 NOTREACHED();
193 return 0;
194 }
195 void glProgramBinaryNotBound(GLuint program,
196 GLenum binaryFormat,
197 const GLvoid* binary,
198 GLsizei length) {
199 NOTREACHED();
200 }
201 void glQueryCounterNotBound(GLuint id, GLenum target) {
202 NOTREACHED();
203 }
204 void glRenderbufferStorageEXTNotBound(GLenum target,
205 GLenum internalformat,
206 GLsizei width,
207 GLsizei height) {
208 NOTREACHED();
209 }
210 void glRenderbufferStorageMultisampleANGLENotBound(GLenum target,
211 GLsizei samples,
212 GLenum internalformat,
213 GLsizei width,
214 GLsizei height) {
215 NOTREACHED();
216 }
217 void glRenderbufferStorageMultisampleEXTNotBound(GLenum target,
218 GLsizei samples,
219 GLenum internalformat,
220 GLsizei width,
221 GLsizei height) {
222 NOTREACHED();
223 }
224 void glTexStorage2DEXTNotBound(GLenum target,
225 GLsizei levels,
226 GLenum internalformat,
227 GLsizei width,
228 GLsizei height) {
229 NOTREACHED();
230 }
231 GLboolean glUnmapBufferNotBound(GLenum target) {
232 NOTREACHED();
233 return 0;
234 }
235 void glVertexAttribDivisorANGLENotBound(GLuint index, GLuint divisor) {
236 NOTREACHED();
237 }
238
26 void DriverGL::InitializeStaticBindings() { 239 void DriverGL::InitializeStaticBindings() {
27 fn.glActiveTextureFn = reinterpret_cast<glActiveTextureProc>( 240 fn.glActiveTextureFn = reinterpret_cast<glActiveTextureProc>(
28 GetGLProcAddress("glActiveTexture")); 241 GetGLProcAddress("glActiveTexture"));
29 fn.glAttachShaderFn = 242 fn.glAttachShaderFn =
30 reinterpret_cast<glAttachShaderProc>(GetGLProcAddress("glAttachShader")); 243 reinterpret_cast<glAttachShaderProc>(GetGLProcAddress("glAttachShader"));
31 fn.glBeginQueryFn = 0; 244 fn.glBeginQueryFn =
32 fn.glBeginQueryARBFn = 0; 245 reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQuery"));
33 fn.glBeginTransformFeedbackFn = 0; 246 fn.glBeginQueryARBFn =
247 reinterpret_cast<glBeginQueryARBProc>(glBeginQueryARBNotBound);
248 fn.glBeginTransformFeedbackFn =
249 reinterpret_cast<glBeginTransformFeedbackProc>(
250 GetGLProcAddress("glBeginTransformFeedback"));
34 fn.glBindAttribLocationFn = reinterpret_cast<glBindAttribLocationProc>( 251 fn.glBindAttribLocationFn = reinterpret_cast<glBindAttribLocationProc>(
35 GetGLProcAddress("glBindAttribLocation")); 252 GetGLProcAddress("glBindAttribLocation"));
36 fn.glBindBufferFn = 253 fn.glBindBufferFn =
37 reinterpret_cast<glBindBufferProc>(GetGLProcAddress("glBindBuffer")); 254 reinterpret_cast<glBindBufferProc>(GetGLProcAddress("glBindBuffer"));
38 fn.glBindBufferBaseFn = 0; 255 fn.glBindBufferBaseFn = reinterpret_cast<glBindBufferBaseProc>(
39 fn.glBindBufferRangeFn = 0; 256 GetGLProcAddress("glBindBufferBase"));
40 fn.glBindFragDataLocationFn = 0; 257 fn.glBindBufferRangeFn = reinterpret_cast<glBindBufferRangeProc>(
41 fn.glBindFragDataLocationIndexedFn = 0; 258 GetGLProcAddress("glBindBufferRange"));
42 fn.glBindFramebufferEXTFn = 0; 259 fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
43 fn.glBindRenderbufferEXTFn = 0; 260 GetGLProcAddress("glBindFragDataLocation"));
44 fn.glBindSamplerFn = 0; 261 fn.glBindFragDataLocationIndexedFn =
262 reinterpret_cast<glBindFragDataLocationIndexedProc>(
263 GetGLProcAddress("glBindFragDataLocationIndexed"));
264 fn.glBindFramebufferEXTFn =
265 reinterpret_cast<glBindFramebufferEXTProc>(glBindFramebufferEXTNotBound);
266 fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
267 glBindRenderbufferEXTNotBound);
268 fn.glBindSamplerFn =
269 reinterpret_cast<glBindSamplerProc>(GetGLProcAddress("glBindSampler"));
45 fn.glBindTextureFn = 270 fn.glBindTextureFn =
46 reinterpret_cast<glBindTextureProc>(GetGLProcAddress("glBindTexture")); 271 reinterpret_cast<glBindTextureProc>(GetGLProcAddress("glBindTexture"));
47 fn.glBindTransformFeedbackFn = 0; 272 fn.glBindTransformFeedbackFn = reinterpret_cast<glBindTransformFeedbackProc>(
48 fn.glBindVertexArrayOESFn = 0; 273 GetGLProcAddress("glBindTransformFeedback"));
49 fn.glBlendBarrierKHRFn = 0; 274 fn.glBindVertexArrayOESFn =
275 reinterpret_cast<glBindVertexArrayOESProc>(glBindVertexArrayOESNotBound);
276 fn.glBlendBarrierKHRFn =
277 reinterpret_cast<glBlendBarrierKHRProc>(glBlendBarrierKHRNotBound);
50 fn.glBlendColorFn = 278 fn.glBlendColorFn =
51 reinterpret_cast<glBlendColorProc>(GetGLProcAddress("glBlendColor")); 279 reinterpret_cast<glBlendColorProc>(GetGLProcAddress("glBlendColor"));
52 fn.glBlendEquationFn = reinterpret_cast<glBlendEquationProc>( 280 fn.glBlendEquationFn = reinterpret_cast<glBlendEquationProc>(
53 GetGLProcAddress("glBlendEquation")); 281 GetGLProcAddress("glBlendEquation"));
54 fn.glBlendEquationSeparateFn = reinterpret_cast<glBlendEquationSeparateProc>( 282 fn.glBlendEquationSeparateFn = reinterpret_cast<glBlendEquationSeparateProc>(
55 GetGLProcAddress("glBlendEquationSeparate")); 283 GetGLProcAddress("glBlendEquationSeparate"));
56 fn.glBlendFuncFn = 284 fn.glBlendFuncFn =
57 reinterpret_cast<glBlendFuncProc>(GetGLProcAddress("glBlendFunc")); 285 reinterpret_cast<glBlendFuncProc>(GetGLProcAddress("glBlendFunc"));
58 fn.glBlendFuncSeparateFn = reinterpret_cast<glBlendFuncSeparateProc>( 286 fn.glBlendFuncSeparateFn = reinterpret_cast<glBlendFuncSeparateProc>(
59 GetGLProcAddress("glBlendFuncSeparate")); 287 GetGLProcAddress("glBlendFuncSeparate"));
60 fn.glBlitFramebufferFn = 0; 288 fn.glBlitFramebufferFn = reinterpret_cast<glBlitFramebufferProc>(
61 fn.glBlitFramebufferANGLEFn = 0; 289 GetGLProcAddress("glBlitFramebuffer"));
62 fn.glBlitFramebufferEXTFn = 0; 290 fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
291 glBlitFramebufferANGLENotBound);
292 fn.glBlitFramebufferEXTFn =
293 reinterpret_cast<glBlitFramebufferEXTProc>(glBlitFramebufferEXTNotBound);
63 fn.glBufferDataFn = 294 fn.glBufferDataFn =
64 reinterpret_cast<glBufferDataProc>(GetGLProcAddress("glBufferData")); 295 reinterpret_cast<glBufferDataProc>(GetGLProcAddress("glBufferData"));
65 fn.glBufferSubDataFn = reinterpret_cast<glBufferSubDataProc>( 296 fn.glBufferSubDataFn = reinterpret_cast<glBufferSubDataProc>(
66 GetGLProcAddress("glBufferSubData")); 297 GetGLProcAddress("glBufferSubData"));
67 fn.glCheckFramebufferStatusEXTFn = 0; 298 fn.glCheckFramebufferStatusEXTFn =
299 reinterpret_cast<glCheckFramebufferStatusEXTProc>(
300 glCheckFramebufferStatusEXTNotBound);
68 fn.glClearFn = reinterpret_cast<glClearProc>(GetGLProcAddress("glClear")); 301 fn.glClearFn = reinterpret_cast<glClearProc>(GetGLProcAddress("glClear"));
69 fn.glClearBufferfiFn = 0; 302 fn.glClearBufferfiFn = reinterpret_cast<glClearBufferfiProc>(
70 fn.glClearBufferfvFn = 0; 303 GetGLProcAddress("glClearBufferfi"));
71 fn.glClearBufferivFn = 0; 304 fn.glClearBufferfvFn = reinterpret_cast<glClearBufferfvProc>(
72 fn.glClearBufferuivFn = 0; 305 GetGLProcAddress("glClearBufferfv"));
306 fn.glClearBufferivFn = reinterpret_cast<glClearBufferivProc>(
307 GetGLProcAddress("glClearBufferiv"));
308 fn.glClearBufferuivFn = reinterpret_cast<glClearBufferuivProc>(
309 GetGLProcAddress("glClearBufferuiv"));
73 fn.glClearColorFn = 310 fn.glClearColorFn =
74 reinterpret_cast<glClearColorProc>(GetGLProcAddress("glClearColor")); 311 reinterpret_cast<glClearColorProc>(GetGLProcAddress("glClearColor"));
75 fn.glClearDepthFn = 312 fn.glClearDepthFn =
76 reinterpret_cast<glClearDepthProc>(GetGLProcAddress("glClearDepth")); 313 reinterpret_cast<glClearDepthProc>(GetGLProcAddress("glClearDepth"));
77 fn.glClearDepthfFn = 0; 314 fn.glClearDepthfFn =
315 reinterpret_cast<glClearDepthfProc>(GetGLProcAddress("glClearDepthf"));
78 fn.glClearStencilFn = 316 fn.glClearStencilFn =
79 reinterpret_cast<glClearStencilProc>(GetGLProcAddress("glClearStencil")); 317 reinterpret_cast<glClearStencilProc>(GetGLProcAddress("glClearStencil"));
80 fn.glClientWaitSyncFn = 0; 318 fn.glClientWaitSyncFn = reinterpret_cast<glClientWaitSyncProc>(
319 GetGLProcAddress("glClientWaitSync"));
81 fn.glColorMaskFn = 320 fn.glColorMaskFn =
82 reinterpret_cast<glColorMaskProc>(GetGLProcAddress("glColorMask")); 321 reinterpret_cast<glColorMaskProc>(GetGLProcAddress("glColorMask"));
83 fn.glCompileShaderFn = reinterpret_cast<glCompileShaderProc>( 322 fn.glCompileShaderFn = reinterpret_cast<glCompileShaderProc>(
84 GetGLProcAddress("glCompileShader")); 323 GetGLProcAddress("glCompileShader"));
85 fn.glCompressedTexImage2DFn = reinterpret_cast<glCompressedTexImage2DProc>( 324 fn.glCompressedTexImage2DFn = reinterpret_cast<glCompressedTexImage2DProc>(
86 GetGLProcAddress("glCompressedTexImage2D")); 325 GetGLProcAddress("glCompressedTexImage2D"));
87 fn.glCompressedTexImage3DFn = 0; 326 fn.glCompressedTexImage3DFn = reinterpret_cast<glCompressedTexImage3DProc>(
327 GetGLProcAddress("glCompressedTexImage3D"));
88 fn.glCompressedTexSubImage2DFn = 328 fn.glCompressedTexSubImage2DFn =
89 reinterpret_cast<glCompressedTexSubImage2DProc>( 329 reinterpret_cast<glCompressedTexSubImage2DProc>(
90 GetGLProcAddress("glCompressedTexSubImage2D")); 330 GetGLProcAddress("glCompressedTexSubImage2D"));
91 fn.glCopyBufferSubDataFn = 0; 331 fn.glCopyBufferSubDataFn = reinterpret_cast<glCopyBufferSubDataProc>(
332 GetGLProcAddress("glCopyBufferSubData"));
92 fn.glCopyTexImage2DFn = reinterpret_cast<glCopyTexImage2DProc>( 333 fn.glCopyTexImage2DFn = reinterpret_cast<glCopyTexImage2DProc>(
93 GetGLProcAddress("glCopyTexImage2D")); 334 GetGLProcAddress("glCopyTexImage2D"));
94 fn.glCopyTexSubImage2DFn = reinterpret_cast<glCopyTexSubImage2DProc>( 335 fn.glCopyTexSubImage2DFn = reinterpret_cast<glCopyTexSubImage2DProc>(
95 GetGLProcAddress("glCopyTexSubImage2D")); 336 GetGLProcAddress("glCopyTexSubImage2D"));
96 fn.glCopyTexSubImage3DFn = 0; 337 fn.glCopyTexSubImage3DFn = reinterpret_cast<glCopyTexSubImage3DProc>(
338 GetGLProcAddress("glCopyTexSubImage3D"));
97 fn.glCreateProgramFn = reinterpret_cast<glCreateProgramProc>( 339 fn.glCreateProgramFn = reinterpret_cast<glCreateProgramProc>(
98 GetGLProcAddress("glCreateProgram")); 340 GetGLProcAddress("glCreateProgram"));
99 fn.glCreateShaderFn = 341 fn.glCreateShaderFn =
100 reinterpret_cast<glCreateShaderProc>(GetGLProcAddress("glCreateShader")); 342 reinterpret_cast<glCreateShaderProc>(GetGLProcAddress("glCreateShader"));
101 fn.glCullFaceFn = 343 fn.glCullFaceFn =
102 reinterpret_cast<glCullFaceProc>(GetGLProcAddress("glCullFace")); 344 reinterpret_cast<glCullFaceProc>(GetGLProcAddress("glCullFace"));
103 fn.glDeleteBuffersARBFn = reinterpret_cast<glDeleteBuffersARBProc>( 345 fn.glDeleteBuffersARBFn =
104 GetGLProcAddress("glDeleteBuffers")); 346 reinterpret_cast<glDeleteBuffersARBProc>(glDeleteBuffersARBNotBound);
105 fn.glDeleteFencesAPPLEFn = 0; 347 fn.glDeleteFencesAPPLEFn = reinterpret_cast<glDeleteFencesAPPLEProc>(
106 fn.glDeleteFencesNVFn = 0; 348 GetGLProcAddress("glDeleteFencesAPPLE"));
107 fn.glDeleteFramebuffersEXTFn = 0; 349 fn.glDeleteFencesNVFn = reinterpret_cast<glDeleteFencesNVProc>(
350 GetGLProcAddress("glDeleteFencesNV"));
351 fn.glDeleteFramebuffersEXTFn = reinterpret_cast<glDeleteFramebuffersEXTProc>(
352 glDeleteFramebuffersEXTNotBound);
108 fn.glDeleteProgramFn = reinterpret_cast<glDeleteProgramProc>( 353 fn.glDeleteProgramFn = reinterpret_cast<glDeleteProgramProc>(
109 GetGLProcAddress("glDeleteProgram")); 354 GetGLProcAddress("glDeleteProgram"));
110 fn.glDeleteQueriesFn = 0; 355 fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
111 fn.glDeleteQueriesARBFn = 0; 356 GetGLProcAddress("glDeleteQueries"));
112 fn.glDeleteRenderbuffersEXTFn = 0; 357 fn.glDeleteQueriesARBFn =
113 fn.glDeleteSamplersFn = 0; 358 reinterpret_cast<glDeleteQueriesARBProc>(glDeleteQueriesARBNotBound);
359 fn.glDeleteRenderbuffersEXTFn =
360 reinterpret_cast<glDeleteRenderbuffersEXTProc>(
361 glDeleteRenderbuffersEXTNotBound);
362 fn.glDeleteSamplersFn = reinterpret_cast<glDeleteSamplersProc>(
363 GetGLProcAddress("glDeleteSamplers"));
114 fn.glDeleteShaderFn = 364 fn.glDeleteShaderFn =
115 reinterpret_cast<glDeleteShaderProc>(GetGLProcAddress("glDeleteShader")); 365 reinterpret_cast<glDeleteShaderProc>(GetGLProcAddress("glDeleteShader"));
116 fn.glDeleteSyncFn = 0; 366 fn.glDeleteSyncFn =
367 reinterpret_cast<glDeleteSyncProc>(GetGLProcAddress("glDeleteSync"));
117 fn.glDeleteTexturesFn = reinterpret_cast<glDeleteTexturesProc>( 368 fn.glDeleteTexturesFn = reinterpret_cast<glDeleteTexturesProc>(
118 GetGLProcAddress("glDeleteTextures")); 369 GetGLProcAddress("glDeleteTextures"));
119 fn.glDeleteTransformFeedbacksFn = 0; 370 fn.glDeleteTransformFeedbacksFn =
120 fn.glDeleteVertexArraysOESFn = 0; 371 reinterpret_cast<glDeleteTransformFeedbacksProc>(
372 GetGLProcAddress("glDeleteTransformFeedbacks"));
373 fn.glDeleteVertexArraysOESFn = reinterpret_cast<glDeleteVertexArraysOESProc>(
374 glDeleteVertexArraysOESNotBound);
121 fn.glDepthFuncFn = 375 fn.glDepthFuncFn =
122 reinterpret_cast<glDepthFuncProc>(GetGLProcAddress("glDepthFunc")); 376 reinterpret_cast<glDepthFuncProc>(GetGLProcAddress("glDepthFunc"));
123 fn.glDepthMaskFn = 377 fn.glDepthMaskFn =
124 reinterpret_cast<glDepthMaskProc>(GetGLProcAddress("glDepthMask")); 378 reinterpret_cast<glDepthMaskProc>(GetGLProcAddress("glDepthMask"));
125 fn.glDepthRangeFn = 379 fn.glDepthRangeFn =
126 reinterpret_cast<glDepthRangeProc>(GetGLProcAddress("glDepthRange")); 380 reinterpret_cast<glDepthRangeProc>(GetGLProcAddress("glDepthRange"));
127 fn.glDepthRangefFn = 0; 381 fn.glDepthRangefFn =
382 reinterpret_cast<glDepthRangefProc>(GetGLProcAddress("glDepthRangef"));
128 fn.glDetachShaderFn = 383 fn.glDetachShaderFn =
129 reinterpret_cast<glDetachShaderProc>(GetGLProcAddress("glDetachShader")); 384 reinterpret_cast<glDetachShaderProc>(GetGLProcAddress("glDetachShader"));
130 fn.glDisableFn = 385 fn.glDisableFn =
131 reinterpret_cast<glDisableProc>(GetGLProcAddress("glDisable")); 386 reinterpret_cast<glDisableProc>(GetGLProcAddress("glDisable"));
132 fn.glDisableVertexAttribArrayFn = 387 fn.glDisableVertexAttribArrayFn =
133 reinterpret_cast<glDisableVertexAttribArrayProc>( 388 reinterpret_cast<glDisableVertexAttribArrayProc>(
134 GetGLProcAddress("glDisableVertexAttribArray")); 389 GetGLProcAddress("glDisableVertexAttribArray"));
135 fn.glDiscardFramebufferEXTFn = 0; 390 fn.glDiscardFramebufferEXTFn = reinterpret_cast<glDiscardFramebufferEXTProc>(
391 GetGLProcAddress("glDiscardFramebufferEXT"));
136 fn.glDrawArraysFn = 392 fn.glDrawArraysFn =
137 reinterpret_cast<glDrawArraysProc>(GetGLProcAddress("glDrawArrays")); 393 reinterpret_cast<glDrawArraysProc>(GetGLProcAddress("glDrawArrays"));
138 fn.glDrawArraysInstancedANGLEFn = 0; 394 fn.glDrawArraysInstancedANGLEFn =
139 fn.glDrawBufferFn = 0; 395 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
140 fn.glDrawBuffersARBFn = 0; 396 glDrawArraysInstancedANGLENotBound);
397 fn.glDrawBufferFn =
398 reinterpret_cast<glDrawBufferProc>(GetGLProcAddress("glDrawBuffer"));
399 fn.glDrawBuffersARBFn =
400 reinterpret_cast<glDrawBuffersARBProc>(glDrawBuffersARBNotBound);
141 fn.glDrawElementsFn = 401 fn.glDrawElementsFn =
142 reinterpret_cast<glDrawElementsProc>(GetGLProcAddress("glDrawElements")); 402 reinterpret_cast<glDrawElementsProc>(GetGLProcAddress("glDrawElements"));
143 fn.glDrawElementsInstancedANGLEFn = 0; 403 fn.glDrawElementsInstancedANGLEFn =
144 fn.glDrawRangeElementsFn = 0; 404 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
145 fn.glEGLImageTargetRenderbufferStorageOESFn = 0; 405 glDrawElementsInstancedANGLENotBound);
146 fn.glEGLImageTargetTexture2DOESFn = 0; 406 fn.glDrawRangeElementsFn = reinterpret_cast<glDrawRangeElementsProc>(
407 GetGLProcAddress("glDrawRangeElements"));
408 fn.glEGLImageTargetRenderbufferStorageOESFn =
409 reinterpret_cast<glEGLImageTargetRenderbufferStorageOESProc>(
410 GetGLProcAddress("glEGLImageTargetRenderbufferStorageOES"));
411 fn.glEGLImageTargetTexture2DOESFn =
412 reinterpret_cast<glEGLImageTargetTexture2DOESProc>(
413 GetGLProcAddress("glEGLImageTargetTexture2DOES"));
147 fn.glEnableFn = reinterpret_cast<glEnableProc>(GetGLProcAddress("glEnable")); 414 fn.glEnableFn = reinterpret_cast<glEnableProc>(GetGLProcAddress("glEnable"));
148 fn.glEnableVertexAttribArrayFn = 415 fn.glEnableVertexAttribArrayFn =
149 reinterpret_cast<glEnableVertexAttribArrayProc>( 416 reinterpret_cast<glEnableVertexAttribArrayProc>(
150 GetGLProcAddress("glEnableVertexAttribArray")); 417 GetGLProcAddress("glEnableVertexAttribArray"));
151 fn.glEndQueryFn = 0; 418 fn.glEndQueryFn =
152 fn.glEndQueryARBFn = 0; 419 reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQuery"));
153 fn.glEndTransformFeedbackFn = 0; 420 fn.glEndQueryARBFn =
154 fn.glFenceSyncFn = 0; 421 reinterpret_cast<glEndQueryARBProc>(glEndQueryARBNotBound);
422 fn.glEndTransformFeedbackFn = reinterpret_cast<glEndTransformFeedbackProc>(
423 GetGLProcAddress("glEndTransformFeedback"));
424 fn.glFenceSyncFn =
425 reinterpret_cast<glFenceSyncProc>(GetGLProcAddress("glFenceSync"));
155 fn.glFinishFn = reinterpret_cast<glFinishProc>(GetGLProcAddress("glFinish")); 426 fn.glFinishFn = reinterpret_cast<glFinishProc>(GetGLProcAddress("glFinish"));
156 fn.glFinishFenceAPPLEFn = 0; 427 fn.glFinishFenceAPPLEFn = reinterpret_cast<glFinishFenceAPPLEProc>(
157 fn.glFinishFenceNVFn = 0; 428 GetGLProcAddress("glFinishFenceAPPLE"));
429 fn.glFinishFenceNVFn = reinterpret_cast<glFinishFenceNVProc>(
430 GetGLProcAddress("glFinishFenceNV"));
158 fn.glFlushFn = reinterpret_cast<glFlushProc>(GetGLProcAddress("glFlush")); 431 fn.glFlushFn = reinterpret_cast<glFlushProc>(GetGLProcAddress("glFlush"));
159 fn.glFlushMappedBufferRangeFn = 0; 432 fn.glFlushMappedBufferRangeFn =
160 fn.glFramebufferRenderbufferEXTFn = 0; 433 reinterpret_cast<glFlushMappedBufferRangeProc>(
161 fn.glFramebufferTexture2DEXTFn = 0; 434 GetGLProcAddress("glFlushMappedBufferRange"));
162 fn.glFramebufferTexture2DMultisampleEXTFn = 0; 435 fn.glFramebufferRenderbufferEXTFn =
163 fn.glFramebufferTexture2DMultisampleIMGFn = 0; 436 reinterpret_cast<glFramebufferRenderbufferEXTProc>(
164 fn.glFramebufferTextureLayerFn = 0; 437 glFramebufferRenderbufferEXTNotBound);
438 fn.glFramebufferTexture2DEXTFn =
439 reinterpret_cast<glFramebufferTexture2DEXTProc>(
440 glFramebufferTexture2DEXTNotBound);
441 fn.glFramebufferTexture2DMultisampleEXTFn =
442 reinterpret_cast<glFramebufferTexture2DMultisampleEXTProc>(
443 GetGLProcAddress("glFramebufferTexture2DMultisampleEXT"));
444 fn.glFramebufferTexture2DMultisampleIMGFn =
445 reinterpret_cast<glFramebufferTexture2DMultisampleIMGProc>(
446 GetGLProcAddress("glFramebufferTexture2DMultisampleIMG"));
447 fn.glFramebufferTextureLayerFn =
448 reinterpret_cast<glFramebufferTextureLayerProc>(
449 GetGLProcAddress("glFramebufferTextureLayer"));
165 fn.glFrontFaceFn = 450 fn.glFrontFaceFn =
166 reinterpret_cast<glFrontFaceProc>(GetGLProcAddress("glFrontFace")); 451 reinterpret_cast<glFrontFaceProc>(GetGLProcAddress("glFrontFace"));
167 fn.glGenBuffersARBFn = 452 fn.glGenBuffersARBFn =
168 reinterpret_cast<glGenBuffersARBProc>(GetGLProcAddress("glGenBuffers")); 453 reinterpret_cast<glGenBuffersARBProc>(glGenBuffersARBNotBound);
169 fn.glGenerateMipmapEXTFn = 0; 454 fn.glGenerateMipmapEXTFn =
170 fn.glGenFencesAPPLEFn = 0; 455 reinterpret_cast<glGenerateMipmapEXTProc>(glGenerateMipmapEXTNotBound);
171 fn.glGenFencesNVFn = 0; 456 fn.glGenFencesAPPLEFn = reinterpret_cast<glGenFencesAPPLEProc>(
172 fn.glGenFramebuffersEXTFn = 0; 457 GetGLProcAddress("glGenFencesAPPLE"));
173 fn.glGenQueriesFn = 0; 458 fn.glGenFencesNVFn =
174 fn.glGenQueriesARBFn = 0; 459 reinterpret_cast<glGenFencesNVProc>(GetGLProcAddress("glGenFencesNV"));
175 fn.glGenRenderbuffersEXTFn = 0; 460 fn.glGenFramebuffersEXTFn =
176 fn.glGenSamplersFn = 0; 461 reinterpret_cast<glGenFramebuffersEXTProc>(glGenFramebuffersEXTNotBound);
462 fn.glGenQueriesFn =
463 reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueries"));
464 fn.glGenQueriesARBFn =
465 reinterpret_cast<glGenQueriesARBProc>(glGenQueriesARBNotBound);
466 fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
467 glGenRenderbuffersEXTNotBound);
468 fn.glGenSamplersFn =
469 reinterpret_cast<glGenSamplersProc>(GetGLProcAddress("glGenSamplers"));
177 fn.glGenTexturesFn = 470 fn.glGenTexturesFn =
178 reinterpret_cast<glGenTexturesProc>(GetGLProcAddress("glGenTextures")); 471 reinterpret_cast<glGenTexturesProc>(GetGLProcAddress("glGenTextures"));
179 fn.glGenTransformFeedbacksFn = 0; 472 fn.glGenTransformFeedbacksFn = reinterpret_cast<glGenTransformFeedbacksProc>(
180 fn.glGenVertexArraysOESFn = 0; 473 GetGLProcAddress("glGenTransformFeedbacks"));
474 fn.glGenVertexArraysOESFn =
475 reinterpret_cast<glGenVertexArraysOESProc>(glGenVertexArraysOESNotBound);
181 fn.glGetActiveAttribFn = reinterpret_cast<glGetActiveAttribProc>( 476 fn.glGetActiveAttribFn = reinterpret_cast<glGetActiveAttribProc>(
182 GetGLProcAddress("glGetActiveAttrib")); 477 GetGLProcAddress("glGetActiveAttrib"));
183 fn.glGetActiveUniformFn = reinterpret_cast<glGetActiveUniformProc>( 478 fn.glGetActiveUniformFn = reinterpret_cast<glGetActiveUniformProc>(
184 GetGLProcAddress("glGetActiveUniform")); 479 GetGLProcAddress("glGetActiveUniform"));
185 fn.glGetActiveUniformBlockivFn = 0; 480 fn.glGetActiveUniformBlockivFn =
186 fn.glGetActiveUniformBlockNameFn = 0; 481 reinterpret_cast<glGetActiveUniformBlockivProc>(
187 fn.glGetActiveUniformsivFn = 0; 482 GetGLProcAddress("glGetActiveUniformBlockiv"));
483 fn.glGetActiveUniformBlockNameFn =
484 reinterpret_cast<glGetActiveUniformBlockNameProc>(
485 GetGLProcAddress("glGetActiveUniformBlockName"));
486 fn.glGetActiveUniformsivFn = reinterpret_cast<glGetActiveUniformsivProc>(
487 GetGLProcAddress("glGetActiveUniformsiv"));
188 fn.glGetAttachedShadersFn = reinterpret_cast<glGetAttachedShadersProc>( 488 fn.glGetAttachedShadersFn = reinterpret_cast<glGetAttachedShadersProc>(
189 GetGLProcAddress("glGetAttachedShaders")); 489 GetGLProcAddress("glGetAttachedShaders"));
190 fn.glGetAttribLocationFn = reinterpret_cast<glGetAttribLocationProc>( 490 fn.glGetAttribLocationFn = reinterpret_cast<glGetAttribLocationProc>(
191 GetGLProcAddress("glGetAttribLocation")); 491 GetGLProcAddress("glGetAttribLocation"));
192 fn.glGetBooleanvFn = 492 fn.glGetBooleanvFn =
193 reinterpret_cast<glGetBooleanvProc>(GetGLProcAddress("glGetBooleanv")); 493 reinterpret_cast<glGetBooleanvProc>(GetGLProcAddress("glGetBooleanv"));
194 fn.glGetBufferParameterivFn = reinterpret_cast<glGetBufferParameterivProc>( 494 fn.glGetBufferParameterivFn = reinterpret_cast<glGetBufferParameterivProc>(
195 GetGLProcAddress("glGetBufferParameteriv")); 495 GetGLProcAddress("glGetBufferParameteriv"));
196 fn.glGetErrorFn = 496 fn.glGetErrorFn =
197 reinterpret_cast<glGetErrorProc>(GetGLProcAddress("glGetError")); 497 reinterpret_cast<glGetErrorProc>(GetGLProcAddress("glGetError"));
198 fn.glGetFenceivNVFn = 0; 498 fn.glGetFenceivNVFn =
499 reinterpret_cast<glGetFenceivNVProc>(GetGLProcAddress("glGetFenceivNV"));
199 fn.glGetFloatvFn = 500 fn.glGetFloatvFn =
200 reinterpret_cast<glGetFloatvProc>(GetGLProcAddress("glGetFloatv")); 501 reinterpret_cast<glGetFloatvProc>(GetGLProcAddress("glGetFloatv"));
201 fn.glGetFragDataLocationFn = 0; 502 fn.glGetFragDataLocationFn = reinterpret_cast<glGetFragDataLocationProc>(
202 fn.glGetFramebufferAttachmentParameterivEXTFn = 0; 503 GetGLProcAddress("glGetFragDataLocation"));
203 fn.glGetGraphicsResetStatusARBFn = 0; 504 fn.glGetFramebufferAttachmentParameterivEXTFn =
204 fn.glGetInteger64i_vFn = 0; 505 reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>(
205 fn.glGetInteger64vFn = 0; 506 glGetFramebufferAttachmentParameterivEXTNotBound);
206 fn.glGetIntegeri_vFn = 0; 507 fn.glGetGraphicsResetStatusARBFn =
508 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
509 glGetGraphicsResetStatusARBNotBound);
510 fn.glGetInteger64i_vFn = reinterpret_cast<glGetInteger64i_vProc>(
511 GetGLProcAddress("glGetInteger64i_v"));
512 fn.glGetInteger64vFn = reinterpret_cast<glGetInteger64vProc>(
513 GetGLProcAddress("glGetInteger64v"));
514 fn.glGetIntegeri_vFn = reinterpret_cast<glGetIntegeri_vProc>(
515 GetGLProcAddress("glGetIntegeri_v"));
207 fn.glGetIntegervFn = 516 fn.glGetIntegervFn =
208 reinterpret_cast<glGetIntegervProc>(GetGLProcAddress("glGetIntegerv")); 517 reinterpret_cast<glGetIntegervProc>(GetGLProcAddress("glGetIntegerv"));
209 fn.glGetInternalformativFn = 0; 518 fn.glGetInternalformativFn = reinterpret_cast<glGetInternalformativProc>(
210 fn.glGetProgramBinaryFn = 0; 519 GetGLProcAddress("glGetInternalformativ"));
520 fn.glGetProgramBinaryFn =
521 reinterpret_cast<glGetProgramBinaryProc>(glGetProgramBinaryNotBound);
211 fn.glGetProgramInfoLogFn = reinterpret_cast<glGetProgramInfoLogProc>( 522 fn.glGetProgramInfoLogFn = reinterpret_cast<glGetProgramInfoLogProc>(
212 GetGLProcAddress("glGetProgramInfoLog")); 523 GetGLProcAddress("glGetProgramInfoLog"));
213 fn.glGetProgramivFn = 524 fn.glGetProgramivFn =
214 reinterpret_cast<glGetProgramivProc>(GetGLProcAddress("glGetProgramiv")); 525 reinterpret_cast<glGetProgramivProc>(GetGLProcAddress("glGetProgramiv"));
215 fn.glGetQueryivFn = 0; 526 fn.glGetQueryivFn =
216 fn.glGetQueryivARBFn = 0; 527 reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryiv"));
217 fn.glGetQueryObjecti64vFn = 0; 528 fn.glGetQueryivARBFn =
218 fn.glGetQueryObjectivFn = 0; 529 reinterpret_cast<glGetQueryivARBProc>(glGetQueryivARBNotBound);
219 fn.glGetQueryObjectivARBFn = 0; 530 fn.glGetQueryObjecti64vFn = reinterpret_cast<glGetQueryObjecti64vProc>(
220 fn.glGetQueryObjectui64vFn = 0; 531 GetGLProcAddress("glGetQueryObjecti64v"));
221 fn.glGetQueryObjectuivFn = 0; 532 fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>(
222 fn.glGetQueryObjectuivARBFn = 0; 533 GetGLProcAddress("glGetQueryObjectiv"));
223 fn.glGetRenderbufferParameterivEXTFn = 0; 534 fn.glGetQueryObjectivARBFn = reinterpret_cast<glGetQueryObjectivARBProc>(
224 fn.glGetSamplerParameterfvFn = 0; 535 glGetQueryObjectivARBNotBound);
225 fn.glGetSamplerParameterivFn = 0; 536 fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>(
537 glGetQueryObjectui64vNotBound);
538 fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>(
539 GetGLProcAddress("glGetQueryObjectuiv"));
540 fn.glGetQueryObjectuivARBFn = reinterpret_cast<glGetQueryObjectuivARBProc>(
541 glGetQueryObjectuivARBNotBound);
542 fn.glGetRenderbufferParameterivEXTFn =
543 reinterpret_cast<glGetRenderbufferParameterivEXTProc>(
544 glGetRenderbufferParameterivEXTNotBound);
545 fn.glGetSamplerParameterfvFn = reinterpret_cast<glGetSamplerParameterfvProc>(
546 GetGLProcAddress("glGetSamplerParameterfv"));
547 fn.glGetSamplerParameterivFn = reinterpret_cast<glGetSamplerParameterivProc>(
548 GetGLProcAddress("glGetSamplerParameteriv"));
226 fn.glGetShaderInfoLogFn = reinterpret_cast<glGetShaderInfoLogProc>( 549 fn.glGetShaderInfoLogFn = reinterpret_cast<glGetShaderInfoLogProc>(
227 GetGLProcAddress("glGetShaderInfoLog")); 550 GetGLProcAddress("glGetShaderInfoLog"));
228 fn.glGetShaderivFn = 551 fn.glGetShaderivFn =
229 reinterpret_cast<glGetShaderivProc>(GetGLProcAddress("glGetShaderiv")); 552 reinterpret_cast<glGetShaderivProc>(GetGLProcAddress("glGetShaderiv"));
230 fn.glGetShaderPrecisionFormatFn = 0; 553 fn.glGetShaderPrecisionFormatFn =
554 reinterpret_cast<glGetShaderPrecisionFormatProc>(
555 GetGLProcAddress("glGetShaderPrecisionFormat"));
231 fn.glGetShaderSourceFn = reinterpret_cast<glGetShaderSourceProc>( 556 fn.glGetShaderSourceFn = reinterpret_cast<glGetShaderSourceProc>(
232 GetGLProcAddress("glGetShaderSource")); 557 GetGLProcAddress("glGetShaderSource"));
233 fn.glGetStringFn = 558 fn.glGetStringFn =
234 reinterpret_cast<glGetStringProc>(GetGLProcAddress("glGetString")); 559 reinterpret_cast<glGetStringProc>(GetGLProcAddress("glGetString"));
235 fn.glGetSyncivFn = 0; 560 fn.glGetSyncivFn =
236 fn.glGetTexLevelParameterfvFn = 0; 561 reinterpret_cast<glGetSyncivProc>(GetGLProcAddress("glGetSynciv"));
237 fn.glGetTexLevelParameterivFn = 0; 562 fn.glGetTexLevelParameterfvFn =
563 reinterpret_cast<glGetTexLevelParameterfvProc>(
564 GetGLProcAddress("glGetTexLevelParameterfv"));
565 fn.glGetTexLevelParameterivFn =
566 reinterpret_cast<glGetTexLevelParameterivProc>(
567 GetGLProcAddress("glGetTexLevelParameteriv"));
238 fn.glGetTexParameterfvFn = reinterpret_cast<glGetTexParameterfvProc>( 568 fn.glGetTexParameterfvFn = reinterpret_cast<glGetTexParameterfvProc>(
239 GetGLProcAddress("glGetTexParameterfv")); 569 GetGLProcAddress("glGetTexParameterfv"));
240 fn.glGetTexParameterivFn = reinterpret_cast<glGetTexParameterivProc>( 570 fn.glGetTexParameterivFn = reinterpret_cast<glGetTexParameterivProc>(
241 GetGLProcAddress("glGetTexParameteriv")); 571 GetGLProcAddress("glGetTexParameteriv"));
242 fn.glGetTransformFeedbackVaryingFn = 0; 572 fn.glGetTransformFeedbackVaryingFn =
243 fn.glGetTranslatedShaderSourceANGLEFn = 0; 573 reinterpret_cast<glGetTransformFeedbackVaryingProc>(
244 fn.glGetUniformBlockIndexFn = 0; 574 GetGLProcAddress("glGetTransformFeedbackVarying"));
575 fn.glGetTranslatedShaderSourceANGLEFn =
576 reinterpret_cast<glGetTranslatedShaderSourceANGLEProc>(
577 GetGLProcAddress("glGetTranslatedShaderSourceANGLE"));
578 fn.glGetUniformBlockIndexFn = reinterpret_cast<glGetUniformBlockIndexProc>(
579 GetGLProcAddress("glGetUniformBlockIndex"));
245 fn.glGetUniformfvFn = 580 fn.glGetUniformfvFn =
246 reinterpret_cast<glGetUniformfvProc>(GetGLProcAddress("glGetUniformfv")); 581 reinterpret_cast<glGetUniformfvProc>(GetGLProcAddress("glGetUniformfv"));
247 fn.glGetUniformIndicesFn = 0; 582 fn.glGetUniformIndicesFn = reinterpret_cast<glGetUniformIndicesProc>(
583 GetGLProcAddress("glGetUniformIndices"));
248 fn.glGetUniformivFn = 584 fn.glGetUniformivFn =
249 reinterpret_cast<glGetUniformivProc>(GetGLProcAddress("glGetUniformiv")); 585 reinterpret_cast<glGetUniformivProc>(GetGLProcAddress("glGetUniformiv"));
250 fn.glGetUniformLocationFn = reinterpret_cast<glGetUniformLocationProc>( 586 fn.glGetUniformLocationFn = reinterpret_cast<glGetUniformLocationProc>(
251 GetGLProcAddress("glGetUniformLocation")); 587 GetGLProcAddress("glGetUniformLocation"));
252 fn.glGetVertexAttribfvFn = reinterpret_cast<glGetVertexAttribfvProc>( 588 fn.glGetVertexAttribfvFn = reinterpret_cast<glGetVertexAttribfvProc>(
253 GetGLProcAddress("glGetVertexAttribfv")); 589 GetGLProcAddress("glGetVertexAttribfv"));
254 fn.glGetVertexAttribivFn = reinterpret_cast<glGetVertexAttribivProc>( 590 fn.glGetVertexAttribivFn = reinterpret_cast<glGetVertexAttribivProc>(
255 GetGLProcAddress("glGetVertexAttribiv")); 591 GetGLProcAddress("glGetVertexAttribiv"));
256 fn.glGetVertexAttribPointervFn = 592 fn.glGetVertexAttribPointervFn =
257 reinterpret_cast<glGetVertexAttribPointervProc>( 593 reinterpret_cast<glGetVertexAttribPointervProc>(
258 GetGLProcAddress("glGetVertexAttribPointerv")); 594 GetGLProcAddress("glGetVertexAttribPointerv"));
259 fn.glHintFn = reinterpret_cast<glHintProc>(GetGLProcAddress("glHint")); 595 fn.glHintFn = reinterpret_cast<glHintProc>(GetGLProcAddress("glHint"));
260 fn.glInsertEventMarkerEXTFn = 0; 596 fn.glInsertEventMarkerEXTFn = reinterpret_cast<glInsertEventMarkerEXTProc>(
261 fn.glInvalidateFramebufferFn = 0; 597 GetGLProcAddress("glInsertEventMarkerEXT"));
262 fn.glInvalidateSubFramebufferFn = 0; 598 fn.glInvalidateFramebufferFn = reinterpret_cast<glInvalidateFramebufferProc>(
599 GetGLProcAddress("glInvalidateFramebuffer"));
600 fn.glInvalidateSubFramebufferFn =
601 reinterpret_cast<glInvalidateSubFramebufferProc>(
602 GetGLProcAddress("glInvalidateSubFramebuffer"));
263 fn.glIsBufferFn = 603 fn.glIsBufferFn =
264 reinterpret_cast<glIsBufferProc>(GetGLProcAddress("glIsBuffer")); 604 reinterpret_cast<glIsBufferProc>(GetGLProcAddress("glIsBuffer"));
265 fn.glIsEnabledFn = 605 fn.glIsEnabledFn =
266 reinterpret_cast<glIsEnabledProc>(GetGLProcAddress("glIsEnabled")); 606 reinterpret_cast<glIsEnabledProc>(GetGLProcAddress("glIsEnabled"));
267 fn.glIsFenceAPPLEFn = 0; 607 fn.glIsFenceAPPLEFn =
268 fn.glIsFenceNVFn = 0; 608 reinterpret_cast<glIsFenceAPPLEProc>(GetGLProcAddress("glIsFenceAPPLE"));
269 fn.glIsFramebufferEXTFn = 0; 609 fn.glIsFenceNVFn =
610 reinterpret_cast<glIsFenceNVProc>(GetGLProcAddress("glIsFenceNV"));
611 fn.glIsFramebufferEXTFn =
612 reinterpret_cast<glIsFramebufferEXTProc>(glIsFramebufferEXTNotBound);
270 fn.glIsProgramFn = 613 fn.glIsProgramFn =
271 reinterpret_cast<glIsProgramProc>(GetGLProcAddress("glIsProgram")); 614 reinterpret_cast<glIsProgramProc>(GetGLProcAddress("glIsProgram"));
272 fn.glIsQueryFn = 0; 615 fn.glIsQueryFn =
273 fn.glIsQueryARBFn = 0; 616 reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQuery"));
274 fn.glIsRenderbufferEXTFn = 0; 617 fn.glIsQueryARBFn = reinterpret_cast<glIsQueryARBProc>(glIsQueryARBNotBound);
275 fn.glIsSamplerFn = 0; 618 fn.glIsRenderbufferEXTFn =
619 reinterpret_cast<glIsRenderbufferEXTProc>(glIsRenderbufferEXTNotBound);
620 fn.glIsSamplerFn =
621 reinterpret_cast<glIsSamplerProc>(GetGLProcAddress("glIsSampler"));
276 fn.glIsShaderFn = 622 fn.glIsShaderFn =
277 reinterpret_cast<glIsShaderProc>(GetGLProcAddress("glIsShader")); 623 reinterpret_cast<glIsShaderProc>(GetGLProcAddress("glIsShader"));
278 fn.glIsSyncFn = 0; 624 fn.glIsSyncFn = reinterpret_cast<glIsSyncProc>(GetGLProcAddress("glIsSync"));
279 fn.glIsTextureFn = 625 fn.glIsTextureFn =
280 reinterpret_cast<glIsTextureProc>(GetGLProcAddress("glIsTexture")); 626 reinterpret_cast<glIsTextureProc>(GetGLProcAddress("glIsTexture"));
281 fn.glIsTransformFeedbackFn = 0; 627 fn.glIsTransformFeedbackFn = reinterpret_cast<glIsTransformFeedbackProc>(
282 fn.glIsVertexArrayOESFn = 0; 628 GetGLProcAddress("glIsTransformFeedback"));
629 fn.glIsVertexArrayOESFn =
630 reinterpret_cast<glIsVertexArrayOESProc>(glIsVertexArrayOESNotBound);
283 fn.glLineWidthFn = 631 fn.glLineWidthFn =
284 reinterpret_cast<glLineWidthProc>(GetGLProcAddress("glLineWidth")); 632 reinterpret_cast<glLineWidthProc>(GetGLProcAddress("glLineWidth"));
285 fn.glLinkProgramFn = 633 fn.glLinkProgramFn =
286 reinterpret_cast<glLinkProgramProc>(GetGLProcAddress("glLinkProgram")); 634 reinterpret_cast<glLinkProgramProc>(GetGLProcAddress("glLinkProgram"));
287 fn.glMapBufferFn = 0; 635 fn.glMapBufferFn = reinterpret_cast<glMapBufferProc>(glMapBufferNotBound);
288 fn.glMapBufferRangeFn = 0; 636 fn.glMapBufferRangeFn =
289 fn.glMatrixLoadfEXTFn = 0; 637 reinterpret_cast<glMapBufferRangeProc>(glMapBufferRangeNotBound);
290 fn.glMatrixLoadIdentityEXTFn = 0; 638 fn.glMatrixLoadfEXTFn = reinterpret_cast<glMatrixLoadfEXTProc>(
291 fn.glPauseTransformFeedbackFn = 0; 639 GetGLProcAddress("glMatrixLoadfEXT"));
640 fn.glMatrixLoadIdentityEXTFn = reinterpret_cast<glMatrixLoadIdentityEXTProc>(
641 GetGLProcAddress("glMatrixLoadIdentityEXT"));
642 fn.glPauseTransformFeedbackFn =
643 reinterpret_cast<glPauseTransformFeedbackProc>(
644 GetGLProcAddress("glPauseTransformFeedback"));
292 fn.glPixelStoreiFn = 645 fn.glPixelStoreiFn =
293 reinterpret_cast<glPixelStoreiProc>(GetGLProcAddress("glPixelStorei")); 646 reinterpret_cast<glPixelStoreiProc>(GetGLProcAddress("glPixelStorei"));
294 fn.glPointParameteriFn = 0; 647 fn.glPointParameteriFn = reinterpret_cast<glPointParameteriProc>(
648 GetGLProcAddress("glPointParameteri"));
295 fn.glPolygonOffsetFn = reinterpret_cast<glPolygonOffsetProc>( 649 fn.glPolygonOffsetFn = reinterpret_cast<glPolygonOffsetProc>(
296 GetGLProcAddress("glPolygonOffset")); 650 GetGLProcAddress("glPolygonOffset"));
297 fn.glPopGroupMarkerEXTFn = 0; 651 fn.glPopGroupMarkerEXTFn = reinterpret_cast<glPopGroupMarkerEXTProc>(
298 fn.glProgramBinaryFn = 0; 652 GetGLProcAddress("glPopGroupMarkerEXT"));
299 fn.glProgramParameteriFn = 0; 653 fn.glProgramBinaryFn =
300 fn.glPushGroupMarkerEXTFn = 0; 654 reinterpret_cast<glProgramBinaryProc>(glProgramBinaryNotBound);
301 fn.glQueryCounterFn = 0; 655 fn.glProgramParameteriFn = reinterpret_cast<glProgramParameteriProc>(
302 fn.glReadBufferFn = 0; 656 GetGLProcAddress("glProgramParameteri"));
657 fn.glPushGroupMarkerEXTFn = reinterpret_cast<glPushGroupMarkerEXTProc>(
658 GetGLProcAddress("glPushGroupMarkerEXT"));
659 fn.glQueryCounterFn =
660 reinterpret_cast<glQueryCounterProc>(glQueryCounterNotBound);
661 fn.glReadBufferFn =
662 reinterpret_cast<glReadBufferProc>(GetGLProcAddress("glReadBuffer"));
303 fn.glReadPixelsFn = 663 fn.glReadPixelsFn =
304 reinterpret_cast<glReadPixelsProc>(GetGLProcAddress("glReadPixels")); 664 reinterpret_cast<glReadPixelsProc>(GetGLProcAddress("glReadPixels"));
305 fn.glReleaseShaderCompilerFn = 0; 665 fn.glReleaseShaderCompilerFn = reinterpret_cast<glReleaseShaderCompilerProc>(
306 fn.glRenderbufferStorageEXTFn = 0; 666 GetGLProcAddress("glReleaseShaderCompiler"));
307 fn.glRenderbufferStorageMultisampleFn = 0; 667 fn.glRenderbufferStorageEXTFn =
308 fn.glRenderbufferStorageMultisampleANGLEFn = 0; 668 reinterpret_cast<glRenderbufferStorageEXTProc>(
309 fn.glRenderbufferStorageMultisampleEXTFn = 0; 669 glRenderbufferStorageEXTNotBound);
310 fn.glRenderbufferStorageMultisampleIMGFn = 0; 670 fn.glRenderbufferStorageMultisampleFn =
311 fn.glResumeTransformFeedbackFn = 0; 671 reinterpret_cast<glRenderbufferStorageMultisampleProc>(
672 GetGLProcAddress("glRenderbufferStorageMultisample"));
673 fn.glRenderbufferStorageMultisampleANGLEFn =
674 reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>(
675 glRenderbufferStorageMultisampleANGLENotBound);
676 fn.glRenderbufferStorageMultisampleEXTFn =
677 reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>(
678 glRenderbufferStorageMultisampleEXTNotBound);
679 fn.glRenderbufferStorageMultisampleIMGFn =
680 reinterpret_cast<glRenderbufferStorageMultisampleIMGProc>(
681 GetGLProcAddress("glRenderbufferStorageMultisampleIMG"));
682 fn.glResumeTransformFeedbackFn =
683 reinterpret_cast<glResumeTransformFeedbackProc>(
684 GetGLProcAddress("glResumeTransformFeedback"));
312 fn.glSampleCoverageFn = reinterpret_cast<glSampleCoverageProc>( 685 fn.glSampleCoverageFn = reinterpret_cast<glSampleCoverageProc>(
313 GetGLProcAddress("glSampleCoverage")); 686 GetGLProcAddress("glSampleCoverage"));
314 fn.glSamplerParameterfFn = 0; 687 fn.glSamplerParameterfFn = reinterpret_cast<glSamplerParameterfProc>(
315 fn.glSamplerParameterfvFn = 0; 688 GetGLProcAddress("glSamplerParameterf"));
316 fn.glSamplerParameteriFn = 0; 689 fn.glSamplerParameterfvFn = reinterpret_cast<glSamplerParameterfvProc>(
317 fn.glSamplerParameterivFn = 0; 690 GetGLProcAddress("glSamplerParameterfv"));
691 fn.glSamplerParameteriFn = reinterpret_cast<glSamplerParameteriProc>(
692 GetGLProcAddress("glSamplerParameteri"));
693 fn.glSamplerParameterivFn = reinterpret_cast<glSamplerParameterivProc>(
694 GetGLProcAddress("glSamplerParameteriv"));
318 fn.glScissorFn = 695 fn.glScissorFn =
319 reinterpret_cast<glScissorProc>(GetGLProcAddress("glScissor")); 696 reinterpret_cast<glScissorProc>(GetGLProcAddress("glScissor"));
320 fn.glSetFenceAPPLEFn = 0; 697 fn.glSetFenceAPPLEFn = reinterpret_cast<glSetFenceAPPLEProc>(
321 fn.glSetFenceNVFn = 0; 698 GetGLProcAddress("glSetFenceAPPLE"));
322 fn.glShaderBinaryFn = 0; 699 fn.glSetFenceNVFn =
700 reinterpret_cast<glSetFenceNVProc>(GetGLProcAddress("glSetFenceNV"));
701 fn.glShaderBinaryFn =
702 reinterpret_cast<glShaderBinaryProc>(GetGLProcAddress("glShaderBinary"));
323 fn.glShaderSourceFn = 703 fn.glShaderSourceFn =
324 reinterpret_cast<glShaderSourceProc>(GetGLProcAddress("glShaderSource")); 704 reinterpret_cast<glShaderSourceProc>(GetGLProcAddress("glShaderSource"));
325 fn.glStencilFuncFn = 705 fn.glStencilFuncFn =
326 reinterpret_cast<glStencilFuncProc>(GetGLProcAddress("glStencilFunc")); 706 reinterpret_cast<glStencilFuncProc>(GetGLProcAddress("glStencilFunc"));
327 fn.glStencilFuncSeparateFn = reinterpret_cast<glStencilFuncSeparateProc>( 707 fn.glStencilFuncSeparateFn = reinterpret_cast<glStencilFuncSeparateProc>(
328 GetGLProcAddress("glStencilFuncSeparate")); 708 GetGLProcAddress("glStencilFuncSeparate"));
329 fn.glStencilMaskFn = 709 fn.glStencilMaskFn =
330 reinterpret_cast<glStencilMaskProc>(GetGLProcAddress("glStencilMask")); 710 reinterpret_cast<glStencilMaskProc>(GetGLProcAddress("glStencilMask"));
331 fn.glStencilMaskSeparateFn = reinterpret_cast<glStencilMaskSeparateProc>( 711 fn.glStencilMaskSeparateFn = reinterpret_cast<glStencilMaskSeparateProc>(
332 GetGLProcAddress("glStencilMaskSeparate")); 712 GetGLProcAddress("glStencilMaskSeparate"));
333 fn.glStencilOpFn = 713 fn.glStencilOpFn =
334 reinterpret_cast<glStencilOpProc>(GetGLProcAddress("glStencilOp")); 714 reinterpret_cast<glStencilOpProc>(GetGLProcAddress("glStencilOp"));
335 fn.glStencilOpSeparateFn = reinterpret_cast<glStencilOpSeparateProc>( 715 fn.glStencilOpSeparateFn = reinterpret_cast<glStencilOpSeparateProc>(
336 GetGLProcAddress("glStencilOpSeparate")); 716 GetGLProcAddress("glStencilOpSeparate"));
337 fn.glTestFenceAPPLEFn = 0; 717 fn.glTestFenceAPPLEFn = reinterpret_cast<glTestFenceAPPLEProc>(
338 fn.glTestFenceNVFn = 0; 718 GetGLProcAddress("glTestFenceAPPLE"));
719 fn.glTestFenceNVFn =
720 reinterpret_cast<glTestFenceNVProc>(GetGLProcAddress("glTestFenceNV"));
339 fn.glTexImage2DFn = 721 fn.glTexImage2DFn =
340 reinterpret_cast<glTexImage2DProc>(GetGLProcAddress("glTexImage2D")); 722 reinterpret_cast<glTexImage2DProc>(GetGLProcAddress("glTexImage2D"));
341 fn.glTexImage3DFn = 0; 723 fn.glTexImage3DFn =
724 reinterpret_cast<glTexImage3DProc>(GetGLProcAddress("glTexImage3D"));
342 fn.glTexParameterfFn = reinterpret_cast<glTexParameterfProc>( 725 fn.glTexParameterfFn = reinterpret_cast<glTexParameterfProc>(
343 GetGLProcAddress("glTexParameterf")); 726 GetGLProcAddress("glTexParameterf"));
344 fn.glTexParameterfvFn = reinterpret_cast<glTexParameterfvProc>( 727 fn.glTexParameterfvFn = reinterpret_cast<glTexParameterfvProc>(
345 GetGLProcAddress("glTexParameterfv")); 728 GetGLProcAddress("glTexParameterfv"));
346 fn.glTexParameteriFn = reinterpret_cast<glTexParameteriProc>( 729 fn.glTexParameteriFn = reinterpret_cast<glTexParameteriProc>(
347 GetGLProcAddress("glTexParameteri")); 730 GetGLProcAddress("glTexParameteri"));
348 fn.glTexParameterivFn = reinterpret_cast<glTexParameterivProc>( 731 fn.glTexParameterivFn = reinterpret_cast<glTexParameterivProc>(
349 GetGLProcAddress("glTexParameteriv")); 732 GetGLProcAddress("glTexParameteriv"));
350 fn.glTexStorage2DEXTFn = 0; 733 fn.glTexStorage2DEXTFn =
351 fn.glTexStorage3DFn = 0; 734 reinterpret_cast<glTexStorage2DEXTProc>(glTexStorage2DEXTNotBound);
735 fn.glTexStorage3DFn =
736 reinterpret_cast<glTexStorage3DProc>(GetGLProcAddress("glTexStorage3D"));
352 fn.glTexSubImage2DFn = reinterpret_cast<glTexSubImage2DProc>( 737 fn.glTexSubImage2DFn = reinterpret_cast<glTexSubImage2DProc>(
353 GetGLProcAddress("glTexSubImage2D")); 738 GetGLProcAddress("glTexSubImage2D"));
354 fn.glTransformFeedbackVaryingsFn = 0; 739 fn.glTransformFeedbackVaryingsFn =
740 reinterpret_cast<glTransformFeedbackVaryingsProc>(
741 GetGLProcAddress("glTransformFeedbackVaryings"));
355 fn.glUniform1fFn = 742 fn.glUniform1fFn =
356 reinterpret_cast<glUniform1fProc>(GetGLProcAddress("glUniform1f")); 743 reinterpret_cast<glUniform1fProc>(GetGLProcAddress("glUniform1f"));
357 fn.glUniform1fvFn = 744 fn.glUniform1fvFn =
358 reinterpret_cast<glUniform1fvProc>(GetGLProcAddress("glUniform1fv")); 745 reinterpret_cast<glUniform1fvProc>(GetGLProcAddress("glUniform1fv"));
359 fn.glUniform1iFn = 746 fn.glUniform1iFn =
360 reinterpret_cast<glUniform1iProc>(GetGLProcAddress("glUniform1i")); 747 reinterpret_cast<glUniform1iProc>(GetGLProcAddress("glUniform1i"));
361 fn.glUniform1ivFn = 748 fn.glUniform1ivFn =
362 reinterpret_cast<glUniform1ivProc>(GetGLProcAddress("glUniform1iv")); 749 reinterpret_cast<glUniform1ivProc>(GetGLProcAddress("glUniform1iv"));
363 fn.glUniform1uiFn = 0; 750 fn.glUniform1uiFn =
364 fn.glUniform1uivFn = 0; 751 reinterpret_cast<glUniform1uiProc>(GetGLProcAddress("glUniform1ui"));
752 fn.glUniform1uivFn =
753 reinterpret_cast<glUniform1uivProc>(GetGLProcAddress("glUniform1uiv"));
365 fn.glUniform2fFn = 754 fn.glUniform2fFn =
366 reinterpret_cast<glUniform2fProc>(GetGLProcAddress("glUniform2f")); 755 reinterpret_cast<glUniform2fProc>(GetGLProcAddress("glUniform2f"));
367 fn.glUniform2fvFn = 756 fn.glUniform2fvFn =
368 reinterpret_cast<glUniform2fvProc>(GetGLProcAddress("glUniform2fv")); 757 reinterpret_cast<glUniform2fvProc>(GetGLProcAddress("glUniform2fv"));
369 fn.glUniform2iFn = 758 fn.glUniform2iFn =
370 reinterpret_cast<glUniform2iProc>(GetGLProcAddress("glUniform2i")); 759 reinterpret_cast<glUniform2iProc>(GetGLProcAddress("glUniform2i"));
371 fn.glUniform2ivFn = 760 fn.glUniform2ivFn =
372 reinterpret_cast<glUniform2ivProc>(GetGLProcAddress("glUniform2iv")); 761 reinterpret_cast<glUniform2ivProc>(GetGLProcAddress("glUniform2iv"));
373 fn.glUniform2uiFn = 0; 762 fn.glUniform2uiFn =
374 fn.glUniform2uivFn = 0; 763 reinterpret_cast<glUniform2uiProc>(GetGLProcAddress("glUniform2ui"));
764 fn.glUniform2uivFn =
765 reinterpret_cast<glUniform2uivProc>(GetGLProcAddress("glUniform2uiv"));
375 fn.glUniform3fFn = 766 fn.glUniform3fFn =
376 reinterpret_cast<glUniform3fProc>(GetGLProcAddress("glUniform3f")); 767 reinterpret_cast<glUniform3fProc>(GetGLProcAddress("glUniform3f"));
377 fn.glUniform3fvFn = 768 fn.glUniform3fvFn =
378 reinterpret_cast<glUniform3fvProc>(GetGLProcAddress("glUniform3fv")); 769 reinterpret_cast<glUniform3fvProc>(GetGLProcAddress("glUniform3fv"));
379 fn.glUniform3iFn = 770 fn.glUniform3iFn =
380 reinterpret_cast<glUniform3iProc>(GetGLProcAddress("glUniform3i")); 771 reinterpret_cast<glUniform3iProc>(GetGLProcAddress("glUniform3i"));
381 fn.glUniform3ivFn = 772 fn.glUniform3ivFn =
382 reinterpret_cast<glUniform3ivProc>(GetGLProcAddress("glUniform3iv")); 773 reinterpret_cast<glUniform3ivProc>(GetGLProcAddress("glUniform3iv"));
383 fn.glUniform3uiFn = 0; 774 fn.glUniform3uiFn =
384 fn.glUniform3uivFn = 0; 775 reinterpret_cast<glUniform3uiProc>(GetGLProcAddress("glUniform3ui"));
776 fn.glUniform3uivFn =
777 reinterpret_cast<glUniform3uivProc>(GetGLProcAddress("glUniform3uiv"));
385 fn.glUniform4fFn = 778 fn.glUniform4fFn =
386 reinterpret_cast<glUniform4fProc>(GetGLProcAddress("glUniform4f")); 779 reinterpret_cast<glUniform4fProc>(GetGLProcAddress("glUniform4f"));
387 fn.glUniform4fvFn = 780 fn.glUniform4fvFn =
388 reinterpret_cast<glUniform4fvProc>(GetGLProcAddress("glUniform4fv")); 781 reinterpret_cast<glUniform4fvProc>(GetGLProcAddress("glUniform4fv"));
389 fn.glUniform4iFn = 782 fn.glUniform4iFn =
390 reinterpret_cast<glUniform4iProc>(GetGLProcAddress("glUniform4i")); 783 reinterpret_cast<glUniform4iProc>(GetGLProcAddress("glUniform4i"));
391 fn.glUniform4ivFn = 784 fn.glUniform4ivFn =
392 reinterpret_cast<glUniform4ivProc>(GetGLProcAddress("glUniform4iv")); 785 reinterpret_cast<glUniform4ivProc>(GetGLProcAddress("glUniform4iv"));
393 fn.glUniform4uiFn = 0; 786 fn.glUniform4uiFn =
394 fn.glUniform4uivFn = 0; 787 reinterpret_cast<glUniform4uiProc>(GetGLProcAddress("glUniform4ui"));
395 fn.glUniformBlockBindingFn = 0; 788 fn.glUniform4uivFn =
789 reinterpret_cast<glUniform4uivProc>(GetGLProcAddress("glUniform4uiv"));
790 fn.glUniformBlockBindingFn = reinterpret_cast<glUniformBlockBindingProc>(
791 GetGLProcAddress("glUniformBlockBinding"));
396 fn.glUniformMatrix2fvFn = reinterpret_cast<glUniformMatrix2fvProc>( 792 fn.glUniformMatrix2fvFn = reinterpret_cast<glUniformMatrix2fvProc>(
397 GetGLProcAddress("glUniformMatrix2fv")); 793 GetGLProcAddress("glUniformMatrix2fv"));
398 fn.glUniformMatrix2x3fvFn = 0; 794 fn.glUniformMatrix2x3fvFn = reinterpret_cast<glUniformMatrix2x3fvProc>(
399 fn.glUniformMatrix2x4fvFn = 0; 795 GetGLProcAddress("glUniformMatrix2x3fv"));
796 fn.glUniformMatrix2x4fvFn = reinterpret_cast<glUniformMatrix2x4fvProc>(
797 GetGLProcAddress("glUniformMatrix2x4fv"));
400 fn.glUniformMatrix3fvFn = reinterpret_cast<glUniformMatrix3fvProc>( 798 fn.glUniformMatrix3fvFn = reinterpret_cast<glUniformMatrix3fvProc>(
401 GetGLProcAddress("glUniformMatrix3fv")); 799 GetGLProcAddress("glUniformMatrix3fv"));
402 fn.glUniformMatrix3x2fvFn = 0; 800 fn.glUniformMatrix3x2fvFn = reinterpret_cast<glUniformMatrix3x2fvProc>(
403 fn.glUniformMatrix3x4fvFn = 0; 801 GetGLProcAddress("glUniformMatrix3x2fv"));
802 fn.glUniformMatrix3x4fvFn = reinterpret_cast<glUniformMatrix3x4fvProc>(
803 GetGLProcAddress("glUniformMatrix3x4fv"));
404 fn.glUniformMatrix4fvFn = reinterpret_cast<glUniformMatrix4fvProc>( 804 fn.glUniformMatrix4fvFn = reinterpret_cast<glUniformMatrix4fvProc>(
405 GetGLProcAddress("glUniformMatrix4fv")); 805 GetGLProcAddress("glUniformMatrix4fv"));
406 fn.glUniformMatrix4x2fvFn = 0; 806 fn.glUniformMatrix4x2fvFn = reinterpret_cast<glUniformMatrix4x2fvProc>(
407 fn.glUniformMatrix4x3fvFn = 0; 807 GetGLProcAddress("glUniformMatrix4x2fv"));
408 fn.glUnmapBufferFn = 0; 808 fn.glUniformMatrix4x3fvFn = reinterpret_cast<glUniformMatrix4x3fvProc>(
809 GetGLProcAddress("glUniformMatrix4x3fv"));
810 fn.glUnmapBufferFn =
811 reinterpret_cast<glUnmapBufferProc>(glUnmapBufferNotBound);
409 fn.glUseProgramFn = 812 fn.glUseProgramFn =
410 reinterpret_cast<glUseProgramProc>(GetGLProcAddress("glUseProgram")); 813 reinterpret_cast<glUseProgramProc>(GetGLProcAddress("glUseProgram"));
411 fn.glValidateProgramFn = reinterpret_cast<glValidateProgramProc>( 814 fn.glValidateProgramFn = reinterpret_cast<glValidateProgramProc>(
412 GetGLProcAddress("glValidateProgram")); 815 GetGLProcAddress("glValidateProgram"));
413 fn.glVertexAttrib1fFn = reinterpret_cast<glVertexAttrib1fProc>( 816 fn.glVertexAttrib1fFn = reinterpret_cast<glVertexAttrib1fProc>(
414 GetGLProcAddress("glVertexAttrib1f")); 817 GetGLProcAddress("glVertexAttrib1f"));
415 fn.glVertexAttrib1fvFn = reinterpret_cast<glVertexAttrib1fvProc>( 818 fn.glVertexAttrib1fvFn = reinterpret_cast<glVertexAttrib1fvProc>(
416 GetGLProcAddress("glVertexAttrib1fv")); 819 GetGLProcAddress("glVertexAttrib1fv"));
417 fn.glVertexAttrib2fFn = reinterpret_cast<glVertexAttrib2fProc>( 820 fn.glVertexAttrib2fFn = reinterpret_cast<glVertexAttrib2fProc>(
418 GetGLProcAddress("glVertexAttrib2f")); 821 GetGLProcAddress("glVertexAttrib2f"));
419 fn.glVertexAttrib2fvFn = reinterpret_cast<glVertexAttrib2fvProc>( 822 fn.glVertexAttrib2fvFn = reinterpret_cast<glVertexAttrib2fvProc>(
420 GetGLProcAddress("glVertexAttrib2fv")); 823 GetGLProcAddress("glVertexAttrib2fv"));
421 fn.glVertexAttrib3fFn = reinterpret_cast<glVertexAttrib3fProc>( 824 fn.glVertexAttrib3fFn = reinterpret_cast<glVertexAttrib3fProc>(
422 GetGLProcAddress("glVertexAttrib3f")); 825 GetGLProcAddress("glVertexAttrib3f"));
423 fn.glVertexAttrib3fvFn = reinterpret_cast<glVertexAttrib3fvProc>( 826 fn.glVertexAttrib3fvFn = reinterpret_cast<glVertexAttrib3fvProc>(
424 GetGLProcAddress("glVertexAttrib3fv")); 827 GetGLProcAddress("glVertexAttrib3fv"));
425 fn.glVertexAttrib4fFn = reinterpret_cast<glVertexAttrib4fProc>( 828 fn.glVertexAttrib4fFn = reinterpret_cast<glVertexAttrib4fProc>(
426 GetGLProcAddress("glVertexAttrib4f")); 829 GetGLProcAddress("glVertexAttrib4f"));
427 fn.glVertexAttrib4fvFn = reinterpret_cast<glVertexAttrib4fvProc>( 830 fn.glVertexAttrib4fvFn = reinterpret_cast<glVertexAttrib4fvProc>(
428 GetGLProcAddress("glVertexAttrib4fv")); 831 GetGLProcAddress("glVertexAttrib4fv"));
429 fn.glVertexAttribDivisorANGLEFn = 0; 832 fn.glVertexAttribDivisorANGLEFn =
430 fn.glVertexAttribI4iFn = 0; 833 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
431 fn.glVertexAttribI4ivFn = 0; 834 glVertexAttribDivisorANGLENotBound);
432 fn.glVertexAttribI4uiFn = 0; 835 fn.glVertexAttribI4iFn = reinterpret_cast<glVertexAttribI4iProc>(
433 fn.glVertexAttribI4uivFn = 0; 836 GetGLProcAddress("glVertexAttribI4i"));
434 fn.glVertexAttribIPointerFn = 0; 837 fn.glVertexAttribI4ivFn = reinterpret_cast<glVertexAttribI4ivProc>(
838 GetGLProcAddress("glVertexAttribI4iv"));
839 fn.glVertexAttribI4uiFn = reinterpret_cast<glVertexAttribI4uiProc>(
840 GetGLProcAddress("glVertexAttribI4ui"));
841 fn.glVertexAttribI4uivFn = reinterpret_cast<glVertexAttribI4uivProc>(
842 GetGLProcAddress("glVertexAttribI4uiv"));
843 fn.glVertexAttribIPointerFn = reinterpret_cast<glVertexAttribIPointerProc>(
844 GetGLProcAddress("glVertexAttribIPointer"));
435 fn.glVertexAttribPointerFn = reinterpret_cast<glVertexAttribPointerProc>( 845 fn.glVertexAttribPointerFn = reinterpret_cast<glVertexAttribPointerProc>(
436 GetGLProcAddress("glVertexAttribPointer")); 846 GetGLProcAddress("glVertexAttribPointer"));
437 fn.glViewportFn = 847 fn.glViewportFn =
438 reinterpret_cast<glViewportProc>(GetGLProcAddress("glViewport")); 848 reinterpret_cast<glViewportProc>(GetGLProcAddress("glViewport"));
439 fn.glWaitSyncFn = 0; 849 fn.glWaitSyncFn =
850 reinterpret_cast<glWaitSyncProc>(GetGLProcAddress("glWaitSync"));
440 } 851 }
441 852
442 void DriverGL::InitializeDynamicBindings(GLContext* context) { 853 void DriverGL::InitializeDynamicBindings(GLContext* context) {
443 DCHECK(context && context->IsCurrent(NULL)); 854 DCHECK(context && context->IsCurrent(NULL));
444 const GLVersionInfo* ver = context->GetVersionInfo(); 855 const GLVersionInfo* ver = context->GetVersionInfo();
445 ALLOW_UNUSED_LOCAL(ver); 856 ALLOW_UNUSED_LOCAL(ver);
446 std::string extensions = context->GetExtensions() + " "; 857 std::string extensions = context->GetExtensions() + " ";
447 ALLOW_UNUSED_LOCAL(extensions); 858 ALLOW_UNUSED_LOCAL(extensions);
448 859
449 ext.b_GL_ANGLE_framebuffer_blit = 860 ext.b_GL_ANGLE_framebuffer_blit =
450 extensions.find("GL_ANGLE_framebuffer_blit ") != std::string::npos; 861 extensions.find("GL_ANGLE_framebuffer_blit ") != std::string::npos;
451 ext.b_GL_ANGLE_framebuffer_multisample = 862 ext.b_GL_ANGLE_framebuffer_multisample =
452 extensions.find("GL_ANGLE_framebuffer_multisample ") != std::string::npos; 863 extensions.find("GL_ANGLE_framebuffer_multisample ") != std::string::npos;
453 ext.b_GL_ANGLE_instanced_arrays = 864 ext.b_GL_ANGLE_instanced_arrays =
454 extensions.find("GL_ANGLE_instanced_arrays ") != std::string::npos; 865 extensions.find("GL_ANGLE_instanced_arrays ") != std::string::npos;
455 ext.b_GL_ANGLE_translated_shader_source = 866 ext.b_GL_ANGLE_translated_shader_source =
456 extensions.find("GL_ANGLE_translated_shader_source ") != 867 extensions.find("GL_ANGLE_translated_shader_source ") !=
457 std::string::npos; 868 std::string::npos;
458 ext.b_GL_APPLE_fence = 869 ext.b_GL_APPLE_fence =
459 extensions.find("GL_APPLE_fence ") != std::string::npos; 870 extensions.find("GL_APPLE_fence ") != std::string::npos;
460 ext.b_GL_APPLE_vertex_array_object = 871 ext.b_GL_APPLE_vertex_array_object =
461 extensions.find("GL_APPLE_vertex_array_object ") != std::string::npos; 872 extensions.find("GL_APPLE_vertex_array_object ") != std::string::npos;
873 ext.b_GL_ARB_ES2_compatibility =
874 extensions.find("GL_ARB_ES2_compatibility ") != std::string::npos;
875 ext.b_GL_ARB_blend_func_extended =
876 extensions.find("GL_ARB_blend_func_extended ") != std::string::npos;
877 ext.b_GL_ARB_copy_buffer =
878 extensions.find("GL_ARB_copy_buffer ") != std::string::npos;
462 ext.b_GL_ARB_draw_buffers = 879 ext.b_GL_ARB_draw_buffers =
463 extensions.find("GL_ARB_draw_buffers ") != std::string::npos; 880 extensions.find("GL_ARB_draw_buffers ") != std::string::npos;
464 ext.b_GL_ARB_draw_instanced = 881 ext.b_GL_ARB_draw_instanced =
465 extensions.find("GL_ARB_draw_instanced ") != std::string::npos; 882 extensions.find("GL_ARB_draw_instanced ") != std::string::npos;
883 ext.b_GL_ARB_framebuffer_object =
884 extensions.find("GL_ARB_framebuffer_object ") != std::string::npos;
466 ext.b_GL_ARB_get_program_binary = 885 ext.b_GL_ARB_get_program_binary =
467 extensions.find("GL_ARB_get_program_binary ") != std::string::npos; 886 extensions.find("GL_ARB_get_program_binary ") != std::string::npos;
468 ext.b_GL_ARB_instanced_arrays = 887 ext.b_GL_ARB_instanced_arrays =
469 extensions.find("GL_ARB_instanced_arrays ") != std::string::npos; 888 extensions.find("GL_ARB_instanced_arrays ") != std::string::npos;
889 ext.b_GL_ARB_internalformat_query =
890 extensions.find("GL_ARB_internalformat_query ") != std::string::npos;
891 ext.b_GL_ARB_invalidate_subdata =
892 extensions.find("GL_ARB_invalidate_subdata ") != std::string::npos;
470 ext.b_GL_ARB_map_buffer_range = 893 ext.b_GL_ARB_map_buffer_range =
471 extensions.find("GL_ARB_map_buffer_range ") != std::string::npos; 894 extensions.find("GL_ARB_map_buffer_range ") != std::string::npos;
472 ext.b_GL_ARB_occlusion_query = 895 ext.b_GL_ARB_occlusion_query =
473 extensions.find("GL_ARB_occlusion_query ") != std::string::npos; 896 extensions.find("GL_ARB_occlusion_query ") != std::string::npos;
474 ext.b_GL_ARB_robustness = 897 ext.b_GL_ARB_robustness =
475 extensions.find("GL_ARB_robustness ") != std::string::npos; 898 extensions.find("GL_ARB_robustness ") != std::string::npos;
899 ext.b_GL_ARB_sampler_objects =
900 extensions.find("GL_ARB_sampler_objects ") != std::string::npos;
476 ext.b_GL_ARB_sync = extensions.find("GL_ARB_sync ") != std::string::npos; 901 ext.b_GL_ARB_sync = extensions.find("GL_ARB_sync ") != std::string::npos;
477 ext.b_GL_ARB_texture_storage = 902 ext.b_GL_ARB_texture_storage =
478 extensions.find("GL_ARB_texture_storage ") != std::string::npos; 903 extensions.find("GL_ARB_texture_storage ") != std::string::npos;
479 ext.b_GL_ARB_timer_query = 904 ext.b_GL_ARB_timer_query =
480 extensions.find("GL_ARB_timer_query ") != std::string::npos; 905 extensions.find("GL_ARB_timer_query ") != std::string::npos;
906 ext.b_GL_ARB_transform_feedback2 =
907 extensions.find("GL_ARB_transform_feedback2 ") != std::string::npos;
908 ext.b_GL_ARB_uniform_buffer_object =
909 extensions.find("GL_ARB_uniform_buffer_object ") != std::string::npos;
481 ext.b_GL_ARB_vertex_array_object = 910 ext.b_GL_ARB_vertex_array_object =
482 extensions.find("GL_ARB_vertex_array_object ") != std::string::npos; 911 extensions.find("GL_ARB_vertex_array_object ") != std::string::npos;
483 ext.b_GL_CHROMIUM_gles_depth_binding_hack = 912 ext.b_GL_ARB_vertex_buffer_object =
484 extensions.find("GL_CHROMIUM_gles_depth_binding_hack ") != 913 extensions.find("GL_ARB_vertex_buffer_object ") != std::string::npos;
485 std::string::npos;
486 ext.b_GL_EXT_debug_marker = 914 ext.b_GL_EXT_debug_marker =
487 extensions.find("GL_EXT_debug_marker ") != std::string::npos; 915 extensions.find("GL_EXT_debug_marker ") != std::string::npos;
488 ext.b_GL_EXT_direct_state_access = 916 ext.b_GL_EXT_direct_state_access =
489 extensions.find("GL_EXT_direct_state_access ") != std::string::npos; 917 extensions.find("GL_EXT_direct_state_access ") != std::string::npos;
490 ext.b_GL_EXT_discard_framebuffer = 918 ext.b_GL_EXT_discard_framebuffer =
491 extensions.find("GL_EXT_discard_framebuffer ") != std::string::npos; 919 extensions.find("GL_EXT_discard_framebuffer ") != std::string::npos;
492 ext.b_GL_EXT_disjoint_timer_query = 920 ext.b_GL_EXT_disjoint_timer_query =
493 extensions.find("GL_EXT_disjoint_timer_query ") != std::string::npos; 921 extensions.find("GL_EXT_disjoint_timer_query ") != std::string::npos;
494 ext.b_GL_EXT_draw_buffers = 922 ext.b_GL_EXT_draw_buffers =
495 extensions.find("GL_EXT_draw_buffers ") != std::string::npos; 923 extensions.find("GL_EXT_draw_buffers ") != std::string::npos;
496 ext.b_GL_EXT_framebuffer_blit = 924 ext.b_GL_EXT_framebuffer_blit =
497 extensions.find("GL_EXT_framebuffer_blit ") != std::string::npos; 925 extensions.find("GL_EXT_framebuffer_blit ") != std::string::npos;
498 ext.b_GL_EXT_framebuffer_multisample = 926 ext.b_GL_EXT_framebuffer_multisample =
499 extensions.find("GL_EXT_framebuffer_multisample ") != std::string::npos; 927 extensions.find("GL_EXT_framebuffer_multisample ") != std::string::npos;
500 ext.b_GL_EXT_framebuffer_object = 928 ext.b_GL_EXT_framebuffer_object =
501 extensions.find("GL_EXT_framebuffer_object ") != std::string::npos; 929 extensions.find("GL_EXT_framebuffer_object ") != std::string::npos;
502 ext.b_GL_EXT_map_buffer_range = 930 ext.b_GL_EXT_map_buffer_range =
503 extensions.find("GL_EXT_map_buffer_range ") != std::string::npos; 931 extensions.find("GL_EXT_map_buffer_range ") != std::string::npos;
504 ext.b_GL_EXT_multisampled_render_to_texture = 932 ext.b_GL_EXT_multisampled_render_to_texture =
505 extensions.find("GL_EXT_multisampled_render_to_texture ") != 933 extensions.find("GL_EXT_multisampled_render_to_texture ") !=
506 std::string::npos; 934 std::string::npos;
507 ext.b_GL_EXT_occlusion_query_boolean =
508 extensions.find("GL_EXT_occlusion_query_boolean ") != std::string::npos;
509 ext.b_GL_EXT_robustness = 935 ext.b_GL_EXT_robustness =
510 extensions.find("GL_EXT_robustness ") != std::string::npos; 936 extensions.find("GL_EXT_robustness ") != std::string::npos;
511 ext.b_GL_EXT_texture_storage = 937 ext.b_GL_EXT_texture_storage =
512 extensions.find("GL_EXT_texture_storage ") != std::string::npos; 938 extensions.find("GL_EXT_texture_storage ") != std::string::npos;
513 ext.b_GL_EXT_timer_query = 939 ext.b_GL_EXT_timer_query =
514 extensions.find("GL_EXT_timer_query ") != std::string::npos; 940 extensions.find("GL_EXT_timer_query ") != std::string::npos;
515 ext.b_GL_IMG_multisampled_render_to_texture = 941 ext.b_GL_IMG_multisampled_render_to_texture =
516 extensions.find("GL_IMG_multisampled_render_to_texture ") != 942 extensions.find("GL_IMG_multisampled_render_to_texture ") !=
517 std::string::npos; 943 std::string::npos;
518 ext.b_GL_KHR_blend_equation_advanced = 944 ext.b_GL_KHR_blend_equation_advanced =
519 extensions.find("GL_KHR_blend_equation_advanced ") != std::string::npos; 945 extensions.find("GL_KHR_blend_equation_advanced ") != std::string::npos;
520 ext.b_GL_KHR_robustness = 946 ext.b_GL_KHR_robustness =
521 extensions.find("GL_KHR_robustness ") != std::string::npos; 947 extensions.find("GL_KHR_robustness ") != std::string::npos;
522 ext.b_GL_NV_blend_equation_advanced = 948 ext.b_GL_NV_blend_equation_advanced =
523 extensions.find("GL_NV_blend_equation_advanced ") != std::string::npos; 949 extensions.find("GL_NV_blend_equation_advanced ") != std::string::npos;
524 ext.b_GL_NV_fence = extensions.find("GL_NV_fence ") != std::string::npos; 950 ext.b_GL_NV_fence = extensions.find("GL_NV_fence ") != std::string::npos;
525 ext.b_GL_NV_path_rendering = 951 ext.b_GL_NV_path_rendering =
526 extensions.find("GL_NV_path_rendering ") != std::string::npos; 952 extensions.find("GL_NV_path_rendering ") != std::string::npos;
527 ext.b_GL_OES_EGL_image = 953 ext.b_GL_OES_EGL_image =
528 extensions.find("GL_OES_EGL_image ") != std::string::npos; 954 extensions.find("GL_OES_EGL_image ") != std::string::npos;
529 ext.b_GL_OES_get_program_binary = 955 ext.b_GL_OES_get_program_binary =
530 extensions.find("GL_OES_get_program_binary ") != std::string::npos; 956 extensions.find("GL_OES_get_program_binary ") != std::string::npos;
531 ext.b_GL_OES_mapbuffer = 957 ext.b_GL_OES_mapbuffer =
532 extensions.find("GL_OES_mapbuffer ") != std::string::npos; 958 extensions.find("GL_OES_mapbuffer ") != std::string::npos;
533 ext.b_GL_OES_vertex_array_object = 959 ext.b_GL_OES_vertex_array_object =
534 extensions.find("GL_OES_vertex_array_object ") != std::string::npos; 960 extensions.find("GL_OES_vertex_array_object ") != std::string::npos;
535 961
536 debug_fn.glBeginQueryFn = 0; 962 fn.glBeginQueryARBFn = 0;
537 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
538 fn.glBeginQueryFn =
539 reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQuery"));
540 DCHECK(fn.glBeginQueryFn);
541 }
542
543 debug_fn.glBeginQueryARBFn = 0; 963 debug_fn.glBeginQueryARBFn = 0;
544 if (ext.b_GL_ARB_occlusion_query) { 964 if (ext.b_GL_ARB_occlusion_query) {
545 fn.glBeginQueryARBFn = reinterpret_cast<glBeginQueryARBProc>( 965 fn.glBeginQueryARBFn = reinterpret_cast<glBeginQueryARBProc>(
546 GetGLProcAddress("glBeginQueryARB")); 966 GetGLProcAddress("glBeginQueryARB"));
547 DCHECK(fn.glBeginQueryARBFn); 967 }
548 } else if (ext.b_GL_EXT_disjoint_timer_query || 968 if (!fn.glBeginQueryARBFn) {
549 ext.b_GL_EXT_occlusion_query_boolean) {
550 fn.glBeginQueryARBFn = reinterpret_cast<glBeginQueryARBProc>( 969 fn.glBeginQueryARBFn = reinterpret_cast<glBeginQueryARBProc>(
551 GetGLProcAddress("glBeginQueryEXT")); 970 GetGLProcAddress("glBeginQueryEXT"));
552 DCHECK(fn.glBeginQueryARBFn); 971 }
553 } 972
554 973 fn.glBindFramebufferEXTFn = 0;
555 debug_fn.glBeginTransformFeedbackFn = 0;
556 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
557 fn.glBeginTransformFeedbackFn =
558 reinterpret_cast<glBeginTransformFeedbackProc>(
559 GetGLProcAddress("glBeginTransformFeedback"));
560 DCHECK(fn.glBeginTransformFeedbackFn);
561 }
562
563 debug_fn.glBindBufferBaseFn = 0;
564 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
565 fn.glBindBufferBaseFn = reinterpret_cast<glBindBufferBaseProc>(
566 GetGLProcAddress("glBindBufferBase"));
567 DCHECK(fn.glBindBufferBaseFn);
568 }
569
570 debug_fn.glBindBufferRangeFn = 0;
571 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
572 fn.glBindBufferRangeFn = reinterpret_cast<glBindBufferRangeProc>(
573 GetGLProcAddress("glBindBufferRange"));
574 DCHECK(fn.glBindBufferRangeFn);
575 }
576
577 debug_fn.glBindFragDataLocationFn = 0;
578 if (ver->IsAtLeastGL(3u, 0u)) {
579 fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
580 GetGLProcAddress("glBindFragDataLocation"));
581 DCHECK(fn.glBindFragDataLocationFn);
582 }
583
584 debug_fn.glBindFragDataLocationIndexedFn = 0;
585 if (ver->IsAtLeastGL(3u, 3u)) {
586 fn.glBindFragDataLocationIndexedFn =
587 reinterpret_cast<glBindFragDataLocationIndexedProc>(
588 GetGLProcAddress("glBindFragDataLocationIndexed"));
589 DCHECK(fn.glBindFragDataLocationIndexedFn);
590 }
591
592 debug_fn.glBindFramebufferEXTFn = 0; 974 debug_fn.glBindFramebufferEXTFn = 0;
593 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 975 if (ext.b_GL_EXT_framebuffer_object) {
976 fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>(
977 GetGLProcAddress("glBindFramebufferEXT"));
978 }
979 if (!fn.glBindFramebufferEXTFn) {
594 fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>( 980 fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>(
595 GetGLProcAddress("glBindFramebuffer")); 981 GetGLProcAddress("glBindFramebuffer"));
596 DCHECK(fn.glBindFramebufferEXTFn); 982 }
597 } else if (ext.b_GL_EXT_framebuffer_object) { 983
598 fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>( 984 fn.glBindRenderbufferEXTFn = 0;
599 GetGLProcAddress("glBindFramebufferEXT"));
600 DCHECK(fn.glBindFramebufferEXTFn);
601 }
602
603 debug_fn.glBindRenderbufferEXTFn = 0; 985 debug_fn.glBindRenderbufferEXTFn = 0;
604 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 986 if (ext.b_GL_EXT_framebuffer_object) {
987 fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
988 GetGLProcAddress("glBindRenderbufferEXT"));
989 }
990 if (!fn.glBindRenderbufferEXTFn) {
605 fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>( 991 fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
606 GetGLProcAddress("glBindRenderbuffer")); 992 GetGLProcAddress("glBindRenderbuffer"));
607 DCHECK(fn.glBindRenderbufferEXTFn); 993 }
608 } else if (ext.b_GL_EXT_framebuffer_object) { 994
609 fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>( 995 fn.glBindVertexArrayOESFn = 0;
610 GetGLProcAddress("glBindRenderbufferEXT"));
611 DCHECK(fn.glBindRenderbufferEXTFn);
612 }
613
614 debug_fn.glBindSamplerFn = 0;
615 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
616 fn.glBindSamplerFn =
617 reinterpret_cast<glBindSamplerProc>(GetGLProcAddress("glBindSampler"));
618 DCHECK(fn.glBindSamplerFn);
619 }
620
621 debug_fn.glBindTransformFeedbackFn = 0;
622 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
623 fn.glBindTransformFeedbackFn =
624 reinterpret_cast<glBindTransformFeedbackProc>(
625 GetGLProcAddress("glBindTransformFeedback"));
626 DCHECK(fn.glBindTransformFeedbackFn);
627 }
628
629 debug_fn.glBindVertexArrayOESFn = 0; 996 debug_fn.glBindVertexArrayOESFn = 0;
630 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) || 997 if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) ||
631 ext.b_GL_ARB_vertex_array_object) { 998 ext.b_GL_ARB_vertex_array_object) {
632 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>( 999 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
633 GetGLProcAddress("glBindVertexArray")); 1000 GetGLProcAddress("glBindVertexArray"));
634 DCHECK(fn.glBindVertexArrayOESFn); 1001 }
635 } else if (ext.b_GL_OES_vertex_array_object) { 1002 if (!fn.glBindVertexArrayOESFn && (ext.b_GL_OES_vertex_array_object)) {
636 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>( 1003 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
637 GetGLProcAddress("glBindVertexArrayOES")); 1004 GetGLProcAddress("glBindVertexArrayOES"));
638 DCHECK(fn.glBindVertexArrayOESFn); 1005 }
639 } else if (ext.b_GL_APPLE_vertex_array_object) { 1006 if (!fn.glBindVertexArrayOESFn) {
640 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>( 1007 fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
641 GetGLProcAddress("glBindVertexArrayAPPLE")); 1008 GetGLProcAddress("glBindVertexArrayAPPLE"));
642 DCHECK(fn.glBindVertexArrayOESFn); 1009 }
643 } 1010
644 1011 fn.glBlendBarrierKHRFn = 0;
645 debug_fn.glBlendBarrierKHRFn = 0; 1012 debug_fn.glBlendBarrierKHRFn = 0;
646 if (ext.b_GL_NV_blend_equation_advanced) { 1013 if (ext.b_GL_NV_blend_equation_advanced) {
647 fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>( 1014 fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>(
648 GetGLProcAddress("glBlendBarrierNV")); 1015 GetGLProcAddress("glBlendBarrierNV"));
649 DCHECK(fn.glBlendBarrierKHRFn); 1016 }
650 } else if (ext.b_GL_KHR_blend_equation_advanced) { 1017 if (!fn.glBlendBarrierKHRFn) {
651 fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>( 1018 fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>(
652 GetGLProcAddress("glBlendBarrierKHR")); 1019 GetGLProcAddress("glBlendBarrierKHR"));
653 DCHECK(fn.glBlendBarrierKHRFn); 1020 }
654 } 1021
655 1022 fn.glBlitFramebufferANGLEFn = 0;
656 debug_fn.glBlitFramebufferFn = 0;
657 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
658 fn.glBlitFramebufferFn = reinterpret_cast<glBlitFramebufferProc>(
659 GetGLProcAddress("glBlitFramebuffer"));
660 DCHECK(fn.glBlitFramebufferFn);
661 }
662
663 debug_fn.glBlitFramebufferANGLEFn = 0; 1023 debug_fn.glBlitFramebufferANGLEFn = 0;
664 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) { 1024 if (ext.b_GL_ANGLE_framebuffer_blit) {
1025 fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
1026 GetGLProcAddress("glBlitFramebufferANGLE"));
1027 }
1028 if (!fn.glBlitFramebufferANGLEFn) {
665 fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>( 1029 fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
666 GetGLProcAddress("glBlitFramebuffer")); 1030 GetGLProcAddress("glBlitFramebuffer"));
667 DCHECK(fn.glBlitFramebufferANGLEFn); 1031 }
668 } else if (ext.b_GL_ANGLE_framebuffer_blit) { 1032
669 fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>( 1033 fn.glBlitFramebufferEXTFn = 0;
670 GetGLProcAddress("glBlitFramebufferANGLE"));
671 DCHECK(fn.glBlitFramebufferANGLEFn);
672 }
673
674 debug_fn.glBlitFramebufferEXTFn = 0; 1034 debug_fn.glBlitFramebufferEXTFn = 0;
675 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) { 1035 if (ext.b_GL_EXT_framebuffer_blit) {
1036 fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>(
1037 GetGLProcAddress("glBlitFramebufferEXT"));
1038 }
1039 if (!fn.glBlitFramebufferEXTFn) {
676 fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>( 1040 fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>(
677 GetGLProcAddress("glBlitFramebuffer")); 1041 GetGLProcAddress("glBlitFramebuffer"));
678 DCHECK(fn.glBlitFramebufferEXTFn); 1042 }
679 } else if (ext.b_GL_EXT_framebuffer_blit) { 1043
680 fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>( 1044 fn.glCheckFramebufferStatusEXTFn = 0;
681 GetGLProcAddress("glBlitFramebufferEXT"));
682 DCHECK(fn.glBlitFramebufferEXTFn);
683 }
684
685 debug_fn.glCheckFramebufferStatusEXTFn = 0; 1045 debug_fn.glCheckFramebufferStatusEXTFn = 0;
686 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1046 if (ext.b_GL_EXT_framebuffer_object) {
1047 fn.glCheckFramebufferStatusEXTFn =
1048 reinterpret_cast<glCheckFramebufferStatusEXTProc>(
1049 GetGLProcAddress("glCheckFramebufferStatusEXT"));
1050 }
1051 if (!fn.glCheckFramebufferStatusEXTFn) {
687 fn.glCheckFramebufferStatusEXTFn = 1052 fn.glCheckFramebufferStatusEXTFn =
688 reinterpret_cast<glCheckFramebufferStatusEXTProc>( 1053 reinterpret_cast<glCheckFramebufferStatusEXTProc>(
689 GetGLProcAddress("glCheckFramebufferStatus")); 1054 GetGLProcAddress("glCheckFramebufferStatus"));
690 DCHECK(fn.glCheckFramebufferStatusEXTFn); 1055 }
691 } else if (ext.b_GL_EXT_framebuffer_object) { 1056
692 fn.glCheckFramebufferStatusEXTFn = 1057 fn.glDeleteBuffersARBFn = 0;
693 reinterpret_cast<glCheckFramebufferStatusEXTProc>( 1058 debug_fn.glDeleteBuffersARBFn = 0;
694 GetGLProcAddress("glCheckFramebufferStatusEXT")); 1059 if (ext.b_GL_ARB_vertex_buffer_object) {
695 DCHECK(fn.glCheckFramebufferStatusEXTFn); 1060 fn.glDeleteBuffersARBFn = reinterpret_cast<glDeleteBuffersARBProc>(
696 } 1061 GetGLProcAddress("glDeleteBuffersARB"));
697 1062 }
698 debug_fn.glClearBufferfiFn = 0; 1063 if (!fn.glDeleteBuffersARBFn) {
699 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) { 1064 fn.glDeleteBuffersARBFn = reinterpret_cast<glDeleteBuffersARBProc>(
700 fn.glClearBufferfiFn = reinterpret_cast<glClearBufferfiProc>( 1065 GetGLProcAddress("glDeleteBuffers"));
701 GetGLProcAddress("glClearBufferfi")); 1066 }
702 DCHECK(fn.glClearBufferfiFn); 1067
703 } 1068 fn.glDeleteFramebuffersEXTFn = 0;
704
705 debug_fn.glClearBufferfvFn = 0;
706 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
707 fn.glClearBufferfvFn = reinterpret_cast<glClearBufferfvProc>(
708 GetGLProcAddress("glClearBufferfv"));
709 DCHECK(fn.glClearBufferfvFn);
710 }
711
712 debug_fn.glClearBufferivFn = 0;
713 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
714 fn.glClearBufferivFn = reinterpret_cast<glClearBufferivProc>(
715 GetGLProcAddress("glClearBufferiv"));
716 DCHECK(fn.glClearBufferivFn);
717 }
718
719 debug_fn.glClearBufferuivFn = 0;
720 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
721 fn.glClearBufferuivFn = reinterpret_cast<glClearBufferuivProc>(
722 GetGLProcAddress("glClearBufferuiv"));
723 DCHECK(fn.glClearBufferuivFn);
724 }
725
726 debug_fn.glClearDepthfFn = 0;
727 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
728 fn.glClearDepthfFn =
729 reinterpret_cast<glClearDepthfProc>(GetGLProcAddress("glClearDepthf"));
730 DCHECK(fn.glClearDepthfFn);
731 }
732
733 debug_fn.glClientWaitSyncFn = 0;
734 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
735 ext.b_GL_ARB_sync) {
736 fn.glClientWaitSyncFn = reinterpret_cast<glClientWaitSyncProc>(
737 GetGLProcAddress("glClientWaitSync"));
738 DCHECK(fn.glClientWaitSyncFn);
739 }
740
741 debug_fn.glCompressedTexImage3DFn = 0;
742 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
743 fn.glCompressedTexImage3DFn = reinterpret_cast<glCompressedTexImage3DProc>(
744 GetGLProcAddress("glCompressedTexImage3D"));
745 DCHECK(fn.glCompressedTexImage3DFn);
746 }
747
748 debug_fn.glCopyBufferSubDataFn = 0;
749 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
750 fn.glCopyBufferSubDataFn = reinterpret_cast<glCopyBufferSubDataProc>(
751 GetGLProcAddress("glCopyBufferSubData"));
752 DCHECK(fn.glCopyBufferSubDataFn);
753 }
754
755 debug_fn.glCopyTexSubImage3DFn = 0;
756 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
757 fn.glCopyTexSubImage3DFn = reinterpret_cast<glCopyTexSubImage3DProc>(
758 GetGLProcAddress("glCopyTexSubImage3D"));
759 DCHECK(fn.glCopyTexSubImage3DFn);
760 }
761
762 debug_fn.glDeleteFencesAPPLEFn = 0;
763 if (ext.b_GL_APPLE_fence) {
764 fn.glDeleteFencesAPPLEFn = reinterpret_cast<glDeleteFencesAPPLEProc>(
765 GetGLProcAddress("glDeleteFencesAPPLE"));
766 DCHECK(fn.glDeleteFencesAPPLEFn);
767 }
768
769 debug_fn.glDeleteFencesNVFn = 0;
770 if (ext.b_GL_NV_fence) {
771 fn.glDeleteFencesNVFn = reinterpret_cast<glDeleteFencesNVProc>(
772 GetGLProcAddress("glDeleteFencesNV"));
773 DCHECK(fn.glDeleteFencesNVFn);
774 }
775
776 debug_fn.glDeleteFramebuffersEXTFn = 0; 1069 debug_fn.glDeleteFramebuffersEXTFn = 0;
777 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1070 if (ext.b_GL_EXT_framebuffer_object) {
1071 fn.glDeleteFramebuffersEXTFn =
1072 reinterpret_cast<glDeleteFramebuffersEXTProc>(
1073 GetGLProcAddress("glDeleteFramebuffersEXT"));
1074 }
1075 if (!fn.glDeleteFramebuffersEXTFn) {
778 fn.glDeleteFramebuffersEXTFn = 1076 fn.glDeleteFramebuffersEXTFn =
779 reinterpret_cast<glDeleteFramebuffersEXTProc>( 1077 reinterpret_cast<glDeleteFramebuffersEXTProc>(
780 GetGLProcAddress("glDeleteFramebuffers")); 1078 GetGLProcAddress("glDeleteFramebuffers"));
781 DCHECK(fn.glDeleteFramebuffersEXTFn); 1079 }
782 } else if (ext.b_GL_EXT_framebuffer_object) { 1080
783 fn.glDeleteFramebuffersEXTFn = 1081 fn.glDeleteQueriesARBFn = 0;
784 reinterpret_cast<glDeleteFramebuffersEXTProc>(
785 GetGLProcAddress("glDeleteFramebuffersEXT"));
786 DCHECK(fn.glDeleteFramebuffersEXTFn);
787 }
788
789 debug_fn.glDeleteQueriesFn = 0;
790 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
791 fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
792 GetGLProcAddress("glDeleteQueries"));
793 DCHECK(fn.glDeleteQueriesFn);
794 }
795
796 debug_fn.glDeleteQueriesARBFn = 0; 1082 debug_fn.glDeleteQueriesARBFn = 0;
797 if (ext.b_GL_ARB_occlusion_query) { 1083 if (ext.b_GL_ARB_occlusion_query) {
798 fn.glDeleteQueriesARBFn = reinterpret_cast<glDeleteQueriesARBProc>( 1084 fn.glDeleteQueriesARBFn = reinterpret_cast<glDeleteQueriesARBProc>(
799 GetGLProcAddress("glDeleteQueriesARB")); 1085 GetGLProcAddress("glDeleteQueriesARB"));
800 DCHECK(fn.glDeleteQueriesARBFn); 1086 }
801 } else if (ext.b_GL_EXT_disjoint_timer_query || 1087 if (!fn.glDeleteQueriesARBFn) {
802 ext.b_GL_EXT_occlusion_query_boolean) {
803 fn.glDeleteQueriesARBFn = reinterpret_cast<glDeleteQueriesARBProc>( 1088 fn.glDeleteQueriesARBFn = reinterpret_cast<glDeleteQueriesARBProc>(
804 GetGLProcAddress("glDeleteQueriesEXT")); 1089 GetGLProcAddress("glDeleteQueriesEXT"));
805 DCHECK(fn.glDeleteQueriesARBFn); 1090 }
806 } 1091
807 1092 fn.glDeleteRenderbuffersEXTFn = 0;
808 debug_fn.glDeleteRenderbuffersEXTFn = 0; 1093 debug_fn.glDeleteRenderbuffersEXTFn = 0;
809 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1094 if (ext.b_GL_EXT_framebuffer_object) {
1095 fn.glDeleteRenderbuffersEXTFn =
1096 reinterpret_cast<glDeleteRenderbuffersEXTProc>(
1097 GetGLProcAddress("glDeleteRenderbuffersEXT"));
1098 }
1099 if (!fn.glDeleteRenderbuffersEXTFn) {
810 fn.glDeleteRenderbuffersEXTFn = 1100 fn.glDeleteRenderbuffersEXTFn =
811 reinterpret_cast<glDeleteRenderbuffersEXTProc>( 1101 reinterpret_cast<glDeleteRenderbuffersEXTProc>(
812 GetGLProcAddress("glDeleteRenderbuffers")); 1102 GetGLProcAddress("glDeleteRenderbuffers"));
813 DCHECK(fn.glDeleteRenderbuffersEXTFn); 1103 }
814 } else if (ext.b_GL_EXT_framebuffer_object) { 1104
815 fn.glDeleteRenderbuffersEXTFn = 1105 fn.glDeleteVertexArraysOESFn = 0;
816 reinterpret_cast<glDeleteRenderbuffersEXTProc>(
817 GetGLProcAddress("glDeleteRenderbuffersEXT"));
818 DCHECK(fn.glDeleteRenderbuffersEXTFn);
819 }
820
821 debug_fn.glDeleteSamplersFn = 0;
822 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
823 fn.glDeleteSamplersFn = reinterpret_cast<glDeleteSamplersProc>(
824 GetGLProcAddress("glDeleteSamplers"));
825 DCHECK(fn.glDeleteSamplersFn);
826 }
827
828 debug_fn.glDeleteSyncFn = 0;
829 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
830 ext.b_GL_ARB_sync) {
831 fn.glDeleteSyncFn =
832 reinterpret_cast<glDeleteSyncProc>(GetGLProcAddress("glDeleteSync"));
833 DCHECK(fn.glDeleteSyncFn);
834 }
835
836 debug_fn.glDeleteTransformFeedbacksFn = 0;
837 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
838 fn.glDeleteTransformFeedbacksFn =
839 reinterpret_cast<glDeleteTransformFeedbacksProc>(
840 GetGLProcAddress("glDeleteTransformFeedbacks"));
841 DCHECK(fn.glDeleteTransformFeedbacksFn);
842 }
843
844 debug_fn.glDeleteVertexArraysOESFn = 0; 1106 debug_fn.glDeleteVertexArraysOESFn = 0;
845 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) || 1107 if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) ||
846 ext.b_GL_ARB_vertex_array_object) { 1108 ext.b_GL_ARB_vertex_array_object) {
847 fn.glDeleteVertexArraysOESFn = 1109 fn.glDeleteVertexArraysOESFn =
848 reinterpret_cast<glDeleteVertexArraysOESProc>( 1110 reinterpret_cast<glDeleteVertexArraysOESProc>(
849 GetGLProcAddress("glDeleteVertexArrays")); 1111 GetGLProcAddress("glDeleteVertexArrays"));
850 DCHECK(fn.glDeleteVertexArraysOESFn); 1112 }
851 } else if (ext.b_GL_OES_vertex_array_object) { 1113 if (!fn.glDeleteVertexArraysOESFn && (ext.b_GL_OES_vertex_array_object)) {
852 fn.glDeleteVertexArraysOESFn = 1114 fn.glDeleteVertexArraysOESFn =
853 reinterpret_cast<glDeleteVertexArraysOESProc>( 1115 reinterpret_cast<glDeleteVertexArraysOESProc>(
854 GetGLProcAddress("glDeleteVertexArraysOES")); 1116 GetGLProcAddress("glDeleteVertexArraysOES"));
855 DCHECK(fn.glDeleteVertexArraysOESFn); 1117 }
856 } else if (ext.b_GL_APPLE_vertex_array_object) { 1118 if (!fn.glDeleteVertexArraysOESFn) {
857 fn.glDeleteVertexArraysOESFn = 1119 fn.glDeleteVertexArraysOESFn =
858 reinterpret_cast<glDeleteVertexArraysOESProc>( 1120 reinterpret_cast<glDeleteVertexArraysOESProc>(
859 GetGLProcAddress("glDeleteVertexArraysAPPLE")); 1121 GetGLProcAddress("glDeleteVertexArraysAPPLE"));
860 DCHECK(fn.glDeleteVertexArraysOESFn); 1122 }
861 } 1123
862 1124 fn.glDrawArraysInstancedANGLEFn = 0;
863 debug_fn.glDepthRangefFn = 0;
864 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
865 fn.glDepthRangefFn =
866 reinterpret_cast<glDepthRangefProc>(GetGLProcAddress("glDepthRangef"));
867 DCHECK(fn.glDepthRangefFn);
868 }
869
870 debug_fn.glDiscardFramebufferEXTFn = 0;
871 if (ext.b_GL_EXT_discard_framebuffer) {
872 fn.glDiscardFramebufferEXTFn =
873 reinterpret_cast<glDiscardFramebufferEXTProc>(
874 GetGLProcAddress("glDiscardFramebufferEXT"));
875 DCHECK(fn.glDiscardFramebufferEXTFn);
876 }
877
878 debug_fn.glDrawArraysInstancedANGLEFn = 0; 1125 debug_fn.glDrawArraysInstancedANGLEFn = 0;
879 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) { 1126 if (ext.b_GL_ARB_draw_instanced) {
1127 fn.glDrawArraysInstancedANGLEFn =
1128 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
1129 GetGLProcAddress("glDrawArraysInstancedARB"));
1130 }
1131 if (!fn.glDrawArraysInstancedANGLEFn && (ext.b_GL_ANGLE_instanced_arrays)) {
1132 fn.glDrawArraysInstancedANGLEFn =
1133 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
1134 GetGLProcAddress("glDrawArraysInstancedANGLE"));
1135 }
1136 if (!fn.glDrawArraysInstancedANGLEFn) {
880 fn.glDrawArraysInstancedANGLEFn = 1137 fn.glDrawArraysInstancedANGLEFn =
881 reinterpret_cast<glDrawArraysInstancedANGLEProc>( 1138 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
882 GetGLProcAddress("glDrawArraysInstanced")); 1139 GetGLProcAddress("glDrawArraysInstanced"));
883 DCHECK(fn.glDrawArraysInstancedANGLEFn); 1140 }
884 } else if (ext.b_GL_ARB_draw_instanced) { 1141
885 fn.glDrawArraysInstancedANGLEFn = 1142 fn.glDrawBuffersARBFn = 0;
886 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
887 GetGLProcAddress("glDrawArraysInstancedARB"));
888 DCHECK(fn.glDrawArraysInstancedANGLEFn);
889 } else if (ext.b_GL_ANGLE_instanced_arrays) {
890 fn.glDrawArraysInstancedANGLEFn =
891 reinterpret_cast<glDrawArraysInstancedANGLEProc>(
892 GetGLProcAddress("glDrawArraysInstancedANGLE"));
893 DCHECK(fn.glDrawArraysInstancedANGLEFn);
894 }
895
896 debug_fn.glDrawBufferFn = 0;
897 if (!ver->is_es) {
898 fn.glDrawBufferFn =
899 reinterpret_cast<glDrawBufferProc>(GetGLProcAddress("glDrawBuffer"));
900 DCHECK(fn.glDrawBufferFn);
901 }
902
903 debug_fn.glDrawBuffersARBFn = 0; 1143 debug_fn.glDrawBuffersARBFn = 0;
904 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) { 1144 if (ext.b_GL_ARB_draw_buffers) {
1145 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
1146 GetGLProcAddress("glDrawBuffersARB"));
1147 }
1148 if (!fn.glDrawBuffersARBFn && (ext.b_GL_EXT_draw_buffers)) {
1149 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
1150 GetGLProcAddress("glDrawBuffersEXT"));
1151 }
1152 if (!fn.glDrawBuffersARBFn) {
905 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>( 1153 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
906 GetGLProcAddress("glDrawBuffers")); 1154 GetGLProcAddress("glDrawBuffers"));
907 DCHECK(fn.glDrawBuffersARBFn); 1155 }
908 } else if (ext.b_GL_ARB_draw_buffers) { 1156
909 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>( 1157 fn.glDrawElementsInstancedANGLEFn = 0;
910 GetGLProcAddress("glDrawBuffersARB"));
911 DCHECK(fn.glDrawBuffersARBFn);
912 } else if (ext.b_GL_EXT_draw_buffers) {
913 fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
914 GetGLProcAddress("glDrawBuffersEXT"));
915 DCHECK(fn.glDrawBuffersARBFn);
916 }
917
918 debug_fn.glDrawElementsInstancedANGLEFn = 0; 1158 debug_fn.glDrawElementsInstancedANGLEFn = 0;
919 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) { 1159 if (ext.b_GL_ARB_draw_instanced) {
1160 fn.glDrawElementsInstancedANGLEFn =
1161 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
1162 GetGLProcAddress("glDrawElementsInstancedARB"));
1163 }
1164 if (!fn.glDrawElementsInstancedANGLEFn && (ext.b_GL_ANGLE_instanced_arrays)) {
1165 fn.glDrawElementsInstancedANGLEFn =
1166 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
1167 GetGLProcAddress("glDrawElementsInstancedANGLE"));
1168 }
1169 if (!fn.glDrawElementsInstancedANGLEFn) {
920 fn.glDrawElementsInstancedANGLEFn = 1170 fn.glDrawElementsInstancedANGLEFn =
921 reinterpret_cast<glDrawElementsInstancedANGLEProc>( 1171 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
922 GetGLProcAddress("glDrawElementsInstanced")); 1172 GetGLProcAddress("glDrawElementsInstanced"));
923 DCHECK(fn.glDrawElementsInstancedANGLEFn); 1173 }
924 } else if (ext.b_GL_ARB_draw_instanced) { 1174
925 fn.glDrawElementsInstancedANGLEFn = 1175 fn.glEndQueryARBFn = 0;
926 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
927 GetGLProcAddress("glDrawElementsInstancedARB"));
928 DCHECK(fn.glDrawElementsInstancedANGLEFn);
929 } else if (ext.b_GL_ANGLE_instanced_arrays) {
930 fn.glDrawElementsInstancedANGLEFn =
931 reinterpret_cast<glDrawElementsInstancedANGLEProc>(
932 GetGLProcAddress("glDrawElementsInstancedANGLE"));
933 DCHECK(fn.glDrawElementsInstancedANGLEFn);
934 }
935
936 debug_fn.glDrawRangeElementsFn = 0;
937 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
938 fn.glDrawRangeElementsFn = reinterpret_cast<glDrawRangeElementsProc>(
939 GetGLProcAddress("glDrawRangeElements"));
940 DCHECK(fn.glDrawRangeElementsFn);
941 }
942
943 debug_fn.glEGLImageTargetRenderbufferStorageOESFn = 0;
944 if (ext.b_GL_OES_EGL_image) {
945 fn.glEGLImageTargetRenderbufferStorageOESFn =
946 reinterpret_cast<glEGLImageTargetRenderbufferStorageOESProc>(
947 GetGLProcAddress("glEGLImageTargetRenderbufferStorageOES"));
948 DCHECK(fn.glEGLImageTargetRenderbufferStorageOESFn);
949 }
950
951 debug_fn.glEGLImageTargetTexture2DOESFn = 0;
952 if (ext.b_GL_OES_EGL_image) {
953 fn.glEGLImageTargetTexture2DOESFn =
954 reinterpret_cast<glEGLImageTargetTexture2DOESProc>(
955 GetGLProcAddress("glEGLImageTargetTexture2DOES"));
956 DCHECK(fn.glEGLImageTargetTexture2DOESFn);
957 }
958
959 debug_fn.glEndQueryFn = 0;
960 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
961 fn.glEndQueryFn =
962 reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQuery"));
963 DCHECK(fn.glEndQueryFn);
964 }
965
966 debug_fn.glEndQueryARBFn = 0; 1176 debug_fn.glEndQueryARBFn = 0;
967 if (ext.b_GL_ARB_occlusion_query) { 1177 if (ext.b_GL_ARB_occlusion_query) {
968 fn.glEndQueryARBFn = 1178 fn.glEndQueryARBFn =
969 reinterpret_cast<glEndQueryARBProc>(GetGLProcAddress("glEndQueryARB")); 1179 reinterpret_cast<glEndQueryARBProc>(GetGLProcAddress("glEndQueryARB"));
970 DCHECK(fn.glEndQueryARBFn); 1180 }
971 } else if (ext.b_GL_EXT_disjoint_timer_query || 1181 if (!fn.glEndQueryARBFn) {
972 ext.b_GL_EXT_occlusion_query_boolean) {
973 fn.glEndQueryARBFn = 1182 fn.glEndQueryARBFn =
974 reinterpret_cast<glEndQueryARBProc>(GetGLProcAddress("glEndQueryEXT")); 1183 reinterpret_cast<glEndQueryARBProc>(GetGLProcAddress("glEndQueryEXT"));
975 DCHECK(fn.glEndQueryARBFn); 1184 }
976 } 1185
977 1186 fn.glFramebufferRenderbufferEXTFn = 0;
978 debug_fn.glEndTransformFeedbackFn = 0;
979 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
980 fn.glEndTransformFeedbackFn = reinterpret_cast<glEndTransformFeedbackProc>(
981 GetGLProcAddress("glEndTransformFeedback"));
982 DCHECK(fn.glEndTransformFeedbackFn);
983 }
984
985 debug_fn.glFenceSyncFn = 0;
986 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
987 ext.b_GL_ARB_sync) {
988 fn.glFenceSyncFn =
989 reinterpret_cast<glFenceSyncProc>(GetGLProcAddress("glFenceSync"));
990 DCHECK(fn.glFenceSyncFn);
991 }
992
993 debug_fn.glFinishFenceAPPLEFn = 0;
994 if (ext.b_GL_APPLE_fence) {
995 fn.glFinishFenceAPPLEFn = reinterpret_cast<glFinishFenceAPPLEProc>(
996 GetGLProcAddress("glFinishFenceAPPLE"));
997 DCHECK(fn.glFinishFenceAPPLEFn);
998 }
999
1000 debug_fn.glFinishFenceNVFn = 0;
1001 if (ext.b_GL_NV_fence) {
1002 fn.glFinishFenceNVFn = reinterpret_cast<glFinishFenceNVProc>(
1003 GetGLProcAddress("glFinishFenceNV"));
1004 DCHECK(fn.glFinishFenceNVFn);
1005 }
1006
1007 debug_fn.glFlushMappedBufferRangeFn = 0;
1008 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1009 fn.glFlushMappedBufferRangeFn =
1010 reinterpret_cast<glFlushMappedBufferRangeProc>(
1011 GetGLProcAddress("glFlushMappedBufferRange"));
1012 DCHECK(fn.glFlushMappedBufferRangeFn);
1013 }
1014
1015 debug_fn.glFramebufferRenderbufferEXTFn = 0; 1187 debug_fn.glFramebufferRenderbufferEXTFn = 0;
1016 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1188 if (ext.b_GL_EXT_framebuffer_object) {
1189 fn.glFramebufferRenderbufferEXTFn =
1190 reinterpret_cast<glFramebufferRenderbufferEXTProc>(
1191 GetGLProcAddress("glFramebufferRenderbufferEXT"));
1192 }
1193 if (!fn.glFramebufferRenderbufferEXTFn) {
1017 fn.glFramebufferRenderbufferEXTFn = 1194 fn.glFramebufferRenderbufferEXTFn =
1018 reinterpret_cast<glFramebufferRenderbufferEXTProc>( 1195 reinterpret_cast<glFramebufferRenderbufferEXTProc>(
1019 GetGLProcAddress("glFramebufferRenderbuffer")); 1196 GetGLProcAddress("glFramebufferRenderbuffer"));
1020 DCHECK(fn.glFramebufferRenderbufferEXTFn); 1197 }
1021 } else if (ext.b_GL_EXT_framebuffer_object) { 1198
1022 fn.glFramebufferRenderbufferEXTFn = 1199 fn.glFramebufferTexture2DEXTFn = 0;
1023 reinterpret_cast<glFramebufferRenderbufferEXTProc>(
1024 GetGLProcAddress("glFramebufferRenderbufferEXT"));
1025 DCHECK(fn.glFramebufferRenderbufferEXTFn);
1026 }
1027
1028 debug_fn.glFramebufferTexture2DEXTFn = 0; 1200 debug_fn.glFramebufferTexture2DEXTFn = 0;
1029 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1201 if (ext.b_GL_EXT_framebuffer_object) {
1202 fn.glFramebufferTexture2DEXTFn =
1203 reinterpret_cast<glFramebufferTexture2DEXTProc>(
1204 GetGLProcAddress("glFramebufferTexture2DEXT"));
1205 }
1206 if (!fn.glFramebufferTexture2DEXTFn) {
1030 fn.glFramebufferTexture2DEXTFn = 1207 fn.glFramebufferTexture2DEXTFn =
1031 reinterpret_cast<glFramebufferTexture2DEXTProc>( 1208 reinterpret_cast<glFramebufferTexture2DEXTProc>(
1032 GetGLProcAddress("glFramebufferTexture2D")); 1209 GetGLProcAddress("glFramebufferTexture2D"));
1033 DCHECK(fn.glFramebufferTexture2DEXTFn); 1210 }
1034 } else if (ext.b_GL_EXT_framebuffer_object) { 1211
1035 fn.glFramebufferTexture2DEXTFn = 1212 fn.glGenBuffersARBFn = 0;
1036 reinterpret_cast<glFramebufferTexture2DEXTProc>( 1213 debug_fn.glGenBuffersARBFn = 0;
1037 GetGLProcAddress("glFramebufferTexture2DEXT")); 1214 if (ext.b_GL_ARB_vertex_buffer_object) {
1038 DCHECK(fn.glFramebufferTexture2DEXTFn); 1215 fn.glGenBuffersARBFn = reinterpret_cast<glGenBuffersARBProc>(
1039 } 1216 GetGLProcAddress("glGenBuffersARB"));
1040 1217 }
1041 debug_fn.glFramebufferTexture2DMultisampleEXTFn = 0; 1218 if (!fn.glGenBuffersARBFn) {
1042 if (ext.b_GL_EXT_multisampled_render_to_texture) { 1219 fn.glGenBuffersARBFn =
1043 fn.glFramebufferTexture2DMultisampleEXTFn = 1220 reinterpret_cast<glGenBuffersARBProc>(GetGLProcAddress("glGenBuffers"));
1044 reinterpret_cast<glFramebufferTexture2DMultisampleEXTProc>( 1221 }
1045 GetGLProcAddress("glFramebufferTexture2DMultisampleEXT")); 1222
1046 DCHECK(fn.glFramebufferTexture2DMultisampleEXTFn); 1223 fn.glGenerateMipmapEXTFn = 0;
1047 }
1048
1049 debug_fn.glFramebufferTexture2DMultisampleIMGFn = 0;
1050 if (ext.b_GL_IMG_multisampled_render_to_texture) {
1051 fn.glFramebufferTexture2DMultisampleIMGFn =
1052 reinterpret_cast<glFramebufferTexture2DMultisampleIMGProc>(
1053 GetGLProcAddress("glFramebufferTexture2DMultisampleIMG"));
1054 DCHECK(fn.glFramebufferTexture2DMultisampleIMGFn);
1055 }
1056
1057 debug_fn.glFramebufferTextureLayerFn = 0;
1058 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1059 fn.glFramebufferTextureLayerFn =
1060 reinterpret_cast<glFramebufferTextureLayerProc>(
1061 GetGLProcAddress("glFramebufferTextureLayer"));
1062 DCHECK(fn.glFramebufferTextureLayerFn);
1063 }
1064
1065 debug_fn.glGenerateMipmapEXTFn = 0; 1224 debug_fn.glGenerateMipmapEXTFn = 0;
1066 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1225 if (ext.b_GL_EXT_framebuffer_object) {
1226 fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
1227 GetGLProcAddress("glGenerateMipmapEXT"));
1228 }
1229 if (!fn.glGenerateMipmapEXTFn) {
1067 fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>( 1230 fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
1068 GetGLProcAddress("glGenerateMipmap")); 1231 GetGLProcAddress("glGenerateMipmap"));
1069 DCHECK(fn.glGenerateMipmapEXTFn); 1232 }
1070 } else if (ext.b_GL_EXT_framebuffer_object) { 1233
1071 fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>( 1234 fn.glGenFramebuffersEXTFn = 0;
1072 GetGLProcAddress("glGenerateMipmapEXT"));
1073 DCHECK(fn.glGenerateMipmapEXTFn);
1074 }
1075
1076 debug_fn.glGenFencesAPPLEFn = 0;
1077 if (ext.b_GL_APPLE_fence) {
1078 fn.glGenFencesAPPLEFn = reinterpret_cast<glGenFencesAPPLEProc>(
1079 GetGLProcAddress("glGenFencesAPPLE"));
1080 DCHECK(fn.glGenFencesAPPLEFn);
1081 }
1082
1083 debug_fn.glGenFencesNVFn = 0;
1084 if (ext.b_GL_NV_fence) {
1085 fn.glGenFencesNVFn =
1086 reinterpret_cast<glGenFencesNVProc>(GetGLProcAddress("glGenFencesNV"));
1087 DCHECK(fn.glGenFencesNVFn);
1088 }
1089
1090 debug_fn.glGenFramebuffersEXTFn = 0; 1235 debug_fn.glGenFramebuffersEXTFn = 0;
1091 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1236 if (ext.b_GL_EXT_framebuffer_object) {
1237 fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>(
1238 GetGLProcAddress("glGenFramebuffersEXT"));
1239 }
1240 if (!fn.glGenFramebuffersEXTFn) {
1092 fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>( 1241 fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>(
1093 GetGLProcAddress("glGenFramebuffers")); 1242 GetGLProcAddress("glGenFramebuffers"));
1094 DCHECK(fn.glGenFramebuffersEXTFn); 1243 }
1095 } else if (ext.b_GL_EXT_framebuffer_object) { 1244
1096 fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>( 1245 fn.glGenQueriesARBFn = 0;
1097 GetGLProcAddress("glGenFramebuffersEXT"));
1098 DCHECK(fn.glGenFramebuffersEXTFn);
1099 }
1100
1101 debug_fn.glGenQueriesFn = 0;
1102 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1103 fn.glGenQueriesFn =
1104 reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueries"));
1105 DCHECK(fn.glGenQueriesFn);
1106 }
1107
1108 debug_fn.glGenQueriesARBFn = 0; 1246 debug_fn.glGenQueriesARBFn = 0;
1109 if (ext.b_GL_ARB_occlusion_query) { 1247 if (ext.b_GL_ARB_occlusion_query) {
1110 fn.glGenQueriesARBFn = reinterpret_cast<glGenQueriesARBProc>( 1248 fn.glGenQueriesARBFn = reinterpret_cast<glGenQueriesARBProc>(
1111 GetGLProcAddress("glGenQueriesARB")); 1249 GetGLProcAddress("glGenQueriesARB"));
1112 DCHECK(fn.glGenQueriesARBFn); 1250 }
1113 } else if (ext.b_GL_EXT_disjoint_timer_query || 1251 if (!fn.glGenQueriesARBFn) {
1114 ext.b_GL_EXT_occlusion_query_boolean) {
1115 fn.glGenQueriesARBFn = reinterpret_cast<glGenQueriesARBProc>( 1252 fn.glGenQueriesARBFn = reinterpret_cast<glGenQueriesARBProc>(
1116 GetGLProcAddress("glGenQueriesEXT")); 1253 GetGLProcAddress("glGenQueriesEXT"));
1117 DCHECK(fn.glGenQueriesARBFn); 1254 }
1118 } 1255
1119 1256 fn.glGenRenderbuffersEXTFn = 0;
1120 debug_fn.glGenRenderbuffersEXTFn = 0; 1257 debug_fn.glGenRenderbuffersEXTFn = 0;
1121 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1258 if (ext.b_GL_EXT_framebuffer_object) {
1259 fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
1260 GetGLProcAddress("glGenRenderbuffersEXT"));
1261 }
1262 if (!fn.glGenRenderbuffersEXTFn) {
1122 fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>( 1263 fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
1123 GetGLProcAddress("glGenRenderbuffers")); 1264 GetGLProcAddress("glGenRenderbuffers"));
1124 DCHECK(fn.glGenRenderbuffersEXTFn); 1265 }
1125 } else if (ext.b_GL_EXT_framebuffer_object) { 1266
1126 fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>( 1267 fn.glGenVertexArraysOESFn = 0;
1127 GetGLProcAddress("glGenRenderbuffersEXT"));
1128 DCHECK(fn.glGenRenderbuffersEXTFn);
1129 }
1130
1131 debug_fn.glGenSamplersFn = 0;
1132 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1133 fn.glGenSamplersFn =
1134 reinterpret_cast<glGenSamplersProc>(GetGLProcAddress("glGenSamplers"));
1135 DCHECK(fn.glGenSamplersFn);
1136 }
1137
1138 debug_fn.glGenTransformFeedbacksFn = 0;
1139 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
1140 fn.glGenTransformFeedbacksFn =
1141 reinterpret_cast<glGenTransformFeedbacksProc>(
1142 GetGLProcAddress("glGenTransformFeedbacks"));
1143 DCHECK(fn.glGenTransformFeedbacksFn);
1144 }
1145
1146 debug_fn.glGenVertexArraysOESFn = 0; 1268 debug_fn.glGenVertexArraysOESFn = 0;
1147 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) || 1269 if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) ||
1148 ext.b_GL_ARB_vertex_array_object) { 1270 ext.b_GL_ARB_vertex_array_object) {
1149 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>( 1271 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
1150 GetGLProcAddress("glGenVertexArrays")); 1272 GetGLProcAddress("glGenVertexArrays"));
1151 DCHECK(fn.glGenVertexArraysOESFn); 1273 }
1152 } else if (ext.b_GL_OES_vertex_array_object) { 1274 if (!fn.glGenVertexArraysOESFn && (ext.b_GL_OES_vertex_array_object)) {
1153 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>( 1275 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
1154 GetGLProcAddress("glGenVertexArraysOES")); 1276 GetGLProcAddress("glGenVertexArraysOES"));
1155 DCHECK(fn.glGenVertexArraysOESFn); 1277 }
1156 } else if (ext.b_GL_APPLE_vertex_array_object) { 1278 if (!fn.glGenVertexArraysOESFn) {
1157 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>( 1279 fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
1158 GetGLProcAddress("glGenVertexArraysAPPLE")); 1280 GetGLProcAddress("glGenVertexArraysAPPLE"));
1159 DCHECK(fn.glGenVertexArraysOESFn); 1281 }
1160 } 1282
1161 1283 fn.glGetFramebufferAttachmentParameterivEXTFn = 0;
1162 debug_fn.glGetActiveUniformBlockivFn = 0;
1163 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1164 fn.glGetActiveUniformBlockivFn =
1165 reinterpret_cast<glGetActiveUniformBlockivProc>(
1166 GetGLProcAddress("glGetActiveUniformBlockiv"));
1167 DCHECK(fn.glGetActiveUniformBlockivFn);
1168 }
1169
1170 debug_fn.glGetActiveUniformBlockNameFn = 0;
1171 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1172 fn.glGetActiveUniformBlockNameFn =
1173 reinterpret_cast<glGetActiveUniformBlockNameProc>(
1174 GetGLProcAddress("glGetActiveUniformBlockName"));
1175 DCHECK(fn.glGetActiveUniformBlockNameFn);
1176 }
1177
1178 debug_fn.glGetActiveUniformsivFn = 0;
1179 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1180 fn.glGetActiveUniformsivFn = reinterpret_cast<glGetActiveUniformsivProc>(
1181 GetGLProcAddress("glGetActiveUniformsiv"));
1182 DCHECK(fn.glGetActiveUniformsivFn);
1183 }
1184
1185 debug_fn.glGetFenceivNVFn = 0;
1186 if (ext.b_GL_NV_fence) {
1187 fn.glGetFenceivNVFn = reinterpret_cast<glGetFenceivNVProc>(
1188 GetGLProcAddress("glGetFenceivNV"));
1189 DCHECK(fn.glGetFenceivNVFn);
1190 }
1191
1192 debug_fn.glGetFragDataLocationFn = 0;
1193 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1194 fn.glGetFragDataLocationFn = reinterpret_cast<glGetFragDataLocationProc>(
1195 GetGLProcAddress("glGetFragDataLocation"));
1196 DCHECK(fn.glGetFragDataLocationFn);
1197 }
1198
1199 debug_fn.glGetFramebufferAttachmentParameterivEXTFn = 0; 1284 debug_fn.glGetFramebufferAttachmentParameterivEXTFn = 0;
1200 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1285 if (ext.b_GL_EXT_framebuffer_object) {
1286 fn.glGetFramebufferAttachmentParameterivEXTFn =
1287 reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>(
1288 GetGLProcAddress("glGetFramebufferAttachmentParameterivEXT"));
1289 }
1290 if (!fn.glGetFramebufferAttachmentParameterivEXTFn) {
1201 fn.glGetFramebufferAttachmentParameterivEXTFn = 1291 fn.glGetFramebufferAttachmentParameterivEXTFn =
1202 reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>( 1292 reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>(
1203 GetGLProcAddress("glGetFramebufferAttachmentParameteriv")); 1293 GetGLProcAddress("glGetFramebufferAttachmentParameteriv"));
1204 DCHECK(fn.glGetFramebufferAttachmentParameterivEXTFn); 1294 }
1205 } else if (ext.b_GL_EXT_framebuffer_object) { 1295
1206 fn.glGetFramebufferAttachmentParameterivEXTFn = 1296 fn.glGetGraphicsResetStatusARBFn = 0;
1207 reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>(
1208 GetGLProcAddress("glGetFramebufferAttachmentParameterivEXT"));
1209 DCHECK(fn.glGetFramebufferAttachmentParameterivEXTFn);
1210 }
1211
1212 debug_fn.glGetGraphicsResetStatusARBFn = 0; 1297 debug_fn.glGetGraphicsResetStatusARBFn = 0;
1213 if (ver->IsAtLeastGL(4u, 5u)) { 1298 if (ext.b_GL_ARB_robustness) {
1299 fn.glGetGraphicsResetStatusARBFn =
1300 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1301 GetGLProcAddress("glGetGraphicsResetStatusARB"));
1302 }
1303 if (!fn.glGetGraphicsResetStatusARBFn && (ext.b_GL_KHR_robustness)) {
1304 fn.glGetGraphicsResetStatusARBFn =
1305 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1306 GetGLProcAddress("glGetGraphicsResetStatusKHR"));
1307 }
1308 if (!fn.glGetGraphicsResetStatusARBFn && (ext.b_GL_EXT_robustness)) {
1309 fn.glGetGraphicsResetStatusARBFn =
1310 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1311 GetGLProcAddress("glGetGraphicsResetStatusEXT"));
1312 }
1313 if (!fn.glGetGraphicsResetStatusARBFn) {
1214 fn.glGetGraphicsResetStatusARBFn = 1314 fn.glGetGraphicsResetStatusARBFn =
1215 reinterpret_cast<glGetGraphicsResetStatusARBProc>( 1315 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1216 GetGLProcAddress("glGetGraphicsResetStatus")); 1316 GetGLProcAddress("glGetGraphicsResetStatus"));
1217 DCHECK(fn.glGetGraphicsResetStatusARBFn); 1317 }
1218 } else if (ext.b_GL_ARB_robustness) { 1318
1219 fn.glGetGraphicsResetStatusARBFn = 1319 fn.glGetProgramBinaryFn = 0;
1220 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1221 GetGLProcAddress("glGetGraphicsResetStatusARB"));
1222 DCHECK(fn.glGetGraphicsResetStatusARBFn);
1223 } else if (ext.b_GL_KHR_robustness) {
1224 fn.glGetGraphicsResetStatusARBFn =
1225 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1226 GetGLProcAddress("glGetGraphicsResetStatusKHR"));
1227 DCHECK(fn.glGetGraphicsResetStatusARBFn);
1228 } else if (ext.b_GL_EXT_robustness) {
1229 fn.glGetGraphicsResetStatusARBFn =
1230 reinterpret_cast<glGetGraphicsResetStatusARBProc>(
1231 GetGLProcAddress("glGetGraphicsResetStatusEXT"));
1232 DCHECK(fn.glGetGraphicsResetStatusARBFn);
1233 }
1234
1235 debug_fn.glGetInteger64i_vFn = 0;
1236 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
1237 fn.glGetInteger64i_vFn = reinterpret_cast<glGetInteger64i_vProc>(
1238 GetGLProcAddress("glGetInteger64i_v"));
1239 DCHECK(fn.glGetInteger64i_vFn);
1240 }
1241
1242 debug_fn.glGetInteger64vFn = 0;
1243 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
1244 fn.glGetInteger64vFn = reinterpret_cast<glGetInteger64vProc>(
1245 GetGLProcAddress("glGetInteger64v"));
1246 DCHECK(fn.glGetInteger64vFn);
1247 }
1248
1249 debug_fn.glGetIntegeri_vFn = 0;
1250 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1251 fn.glGetIntegeri_vFn = reinterpret_cast<glGetIntegeri_vProc>(
1252 GetGLProcAddress("glGetIntegeri_v"));
1253 DCHECK(fn.glGetIntegeri_vFn);
1254 }
1255
1256 debug_fn.glGetInternalformativFn = 0;
1257 if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
1258 fn.glGetInternalformativFn = reinterpret_cast<glGetInternalformativProc>(
1259 GetGLProcAddress("glGetInternalformativ"));
1260 DCHECK(fn.glGetInternalformativFn);
1261 }
1262
1263 debug_fn.glGetProgramBinaryFn = 0; 1320 debug_fn.glGetProgramBinaryFn = 0;
1264 if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) || 1321 if (ext.b_GL_OES_get_program_binary) {
1265 ext.b_GL_ARB_get_program_binary) { 1322 fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>(
1323 GetGLProcAddress("glGetProgramBinaryOES"));
1324 }
1325 if (!fn.glGetProgramBinaryFn) {
1266 fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>( 1326 fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>(
1267 GetGLProcAddress("glGetProgramBinary")); 1327 GetGLProcAddress("glGetProgramBinary"));
1268 DCHECK(fn.glGetProgramBinaryFn); 1328 }
1269 } else if (ext.b_GL_OES_get_program_binary) { 1329
1270 fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>( 1330 fn.glGetQueryivARBFn = 0;
1271 GetGLProcAddress("glGetProgramBinaryOES"));
1272 DCHECK(fn.glGetProgramBinaryFn);
1273 }
1274
1275 debug_fn.glGetQueryivFn = 0;
1276 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1277 fn.glGetQueryivFn =
1278 reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryiv"));
1279 DCHECK(fn.glGetQueryivFn);
1280 }
1281
1282 debug_fn.glGetQueryivARBFn = 0; 1331 debug_fn.glGetQueryivARBFn = 0;
1283 if (ext.b_GL_ARB_occlusion_query) { 1332 if (ext.b_GL_ARB_occlusion_query) {
1284 fn.glGetQueryivARBFn = reinterpret_cast<glGetQueryivARBProc>( 1333 fn.glGetQueryivARBFn = reinterpret_cast<glGetQueryivARBProc>(
1285 GetGLProcAddress("glGetQueryivARB")); 1334 GetGLProcAddress("glGetQueryivARB"));
1286 DCHECK(fn.glGetQueryivARBFn); 1335 }
1287 } else if (ext.b_GL_EXT_disjoint_timer_query || 1336 if (!fn.glGetQueryivARBFn) {
1288 ext.b_GL_EXT_occlusion_query_boolean) {
1289 fn.glGetQueryivARBFn = reinterpret_cast<glGetQueryivARBProc>( 1337 fn.glGetQueryivARBFn = reinterpret_cast<glGetQueryivARBProc>(
1290 GetGLProcAddress("glGetQueryivEXT")); 1338 GetGLProcAddress("glGetQueryivEXT"));
1291 DCHECK(fn.glGetQueryivARBFn); 1339 }
1292 } 1340
1293 1341 fn.glGetQueryObjectivARBFn = 0;
1294 debug_fn.glGetQueryObjecti64vFn = 0;
1295 if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) {
1296 fn.glGetQueryObjecti64vFn = reinterpret_cast<glGetQueryObjecti64vProc>(
1297 GetGLProcAddress("glGetQueryObjecti64v"));
1298 DCHECK(fn.glGetQueryObjecti64vFn);
1299 } else if (ext.b_GL_EXT_timer_query || ext.b_GL_EXT_disjoint_timer_query) {
1300 fn.glGetQueryObjecti64vFn = reinterpret_cast<glGetQueryObjecti64vProc>(
1301 GetGLProcAddress("glGetQueryObjecti64vEXT"));
1302 DCHECK(fn.glGetQueryObjecti64vFn);
1303 }
1304
1305 debug_fn.glGetQueryObjectivFn = 0;
1306 if (!ver->is_es) {
1307 fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>(
1308 GetGLProcAddress("glGetQueryObjectiv"));
1309 DCHECK(fn.glGetQueryObjectivFn);
1310 }
1311
1312 debug_fn.glGetQueryObjectivARBFn = 0; 1342 debug_fn.glGetQueryObjectivARBFn = 0;
1313 if (ext.b_GL_ARB_occlusion_query) { 1343 if (ext.b_GL_ARB_occlusion_query) {
1314 fn.glGetQueryObjectivARBFn = reinterpret_cast<glGetQueryObjectivARBProc>( 1344 fn.glGetQueryObjectivARBFn = reinterpret_cast<glGetQueryObjectivARBProc>(
1315 GetGLProcAddress("glGetQueryObjectivARB")); 1345 GetGLProcAddress("glGetQueryObjectivARB"));
1316 DCHECK(fn.glGetQueryObjectivARBFn); 1346 }
1317 } else if (ext.b_GL_EXT_disjoint_timer_query) { 1347 if (!fn.glGetQueryObjectivARBFn) {
1318 fn.glGetQueryObjectivARBFn = reinterpret_cast<glGetQueryObjectivARBProc>( 1348 fn.glGetQueryObjectivARBFn = reinterpret_cast<glGetQueryObjectivARBProc>(
1319 GetGLProcAddress("glGetQueryObjectivEXT")); 1349 GetGLProcAddress("glGetQueryObjectivEXT"));
1320 DCHECK(fn.glGetQueryObjectivARBFn); 1350 }
1321 } 1351
1322 1352 fn.glGetQueryObjectui64vFn = 0;
1323 debug_fn.glGetQueryObjectui64vFn = 0; 1353 debug_fn.glGetQueryObjectui64vFn = 0;
1324 if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) { 1354 if (ext.b_GL_ARB_timer_query) {
1325 fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>( 1355 fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>(
1326 GetGLProcAddress("glGetQueryObjectui64v")); 1356 GetGLProcAddress("glGetQueryObjectui64v"));
1327 DCHECK(fn.glGetQueryObjectui64vFn); 1357 }
1328 } else if (ext.b_GL_EXT_timer_query || ext.b_GL_EXT_disjoint_timer_query) { 1358 if (!fn.glGetQueryObjectui64vFn) {
1329 fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>( 1359 fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>(
1330 GetGLProcAddress("glGetQueryObjectui64vEXT")); 1360 GetGLProcAddress("glGetQueryObjectui64vEXT"));
1331 DCHECK(fn.glGetQueryObjectui64vFn); 1361 }
1332 } 1362
1333 1363 fn.glGetQueryObjectuivARBFn = 0;
1334 debug_fn.glGetQueryObjectuivFn = 0;
1335 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1336 fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>(
1337 GetGLProcAddress("glGetQueryObjectuiv"));
1338 DCHECK(fn.glGetQueryObjectuivFn);
1339 }
1340
1341 debug_fn.glGetQueryObjectuivARBFn = 0; 1364 debug_fn.glGetQueryObjectuivARBFn = 0;
1342 if (ext.b_GL_ARB_occlusion_query) { 1365 if (ext.b_GL_ARB_occlusion_query) {
1343 fn.glGetQueryObjectuivARBFn = reinterpret_cast<glGetQueryObjectuivARBProc>( 1366 fn.glGetQueryObjectuivARBFn = reinterpret_cast<glGetQueryObjectuivARBProc>(
1344 GetGLProcAddress("glGetQueryObjectuivARB")); 1367 GetGLProcAddress("glGetQueryObjectuivARB"));
1345 DCHECK(fn.glGetQueryObjectuivARBFn); 1368 }
1346 } else if (ext.b_GL_EXT_disjoint_timer_query || 1369 if (!fn.glGetQueryObjectuivARBFn) {
1347 ext.b_GL_EXT_occlusion_query_boolean) {
1348 fn.glGetQueryObjectuivARBFn = reinterpret_cast<glGetQueryObjectuivARBProc>( 1370 fn.glGetQueryObjectuivARBFn = reinterpret_cast<glGetQueryObjectuivARBProc>(
1349 GetGLProcAddress("glGetQueryObjectuivEXT")); 1371 GetGLProcAddress("glGetQueryObjectuivEXT"));
1350 DCHECK(fn.glGetQueryObjectuivARBFn); 1372 }
1351 } 1373
1352 1374 fn.glGetRenderbufferParameterivEXTFn = 0;
1353 debug_fn.glGetRenderbufferParameterivEXTFn = 0; 1375 debug_fn.glGetRenderbufferParameterivEXTFn = 0;
1354 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1376 if (ext.b_GL_EXT_framebuffer_object) {
1377 fn.glGetRenderbufferParameterivEXTFn =
1378 reinterpret_cast<glGetRenderbufferParameterivEXTProc>(
1379 GetGLProcAddress("glGetRenderbufferParameterivEXT"));
1380 }
1381 if (!fn.glGetRenderbufferParameterivEXTFn) {
1355 fn.glGetRenderbufferParameterivEXTFn = 1382 fn.glGetRenderbufferParameterivEXTFn =
1356 reinterpret_cast<glGetRenderbufferParameterivEXTProc>( 1383 reinterpret_cast<glGetRenderbufferParameterivEXTProc>(
1357 GetGLProcAddress("glGetRenderbufferParameteriv")); 1384 GetGLProcAddress("glGetRenderbufferParameteriv"));
1358 DCHECK(fn.glGetRenderbufferParameterivEXTFn); 1385 }
1359 } else if (ext.b_GL_EXT_framebuffer_object) { 1386
1360 fn.glGetRenderbufferParameterivEXTFn = 1387 fn.glIsFramebufferEXTFn = 0;
1361 reinterpret_cast<glGetRenderbufferParameterivEXTProc>(
1362 GetGLProcAddress("glGetRenderbufferParameterivEXT"));
1363 DCHECK(fn.glGetRenderbufferParameterivEXTFn);
1364 }
1365
1366 debug_fn.glGetSamplerParameterfvFn = 0;
1367 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1368 fn.glGetSamplerParameterfvFn =
1369 reinterpret_cast<glGetSamplerParameterfvProc>(
1370 GetGLProcAddress("glGetSamplerParameterfv"));
1371 DCHECK(fn.glGetSamplerParameterfvFn);
1372 }
1373
1374 debug_fn.glGetSamplerParameterivFn = 0;
1375 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1376 fn.glGetSamplerParameterivFn =
1377 reinterpret_cast<glGetSamplerParameterivProc>(
1378 GetGLProcAddress("glGetSamplerParameteriv"));
1379 DCHECK(fn.glGetSamplerParameterivFn);
1380 }
1381
1382 debug_fn.glGetShaderPrecisionFormatFn = 0;
1383 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
1384 fn.glGetShaderPrecisionFormatFn =
1385 reinterpret_cast<glGetShaderPrecisionFormatProc>(
1386 GetGLProcAddress("glGetShaderPrecisionFormat"));
1387 DCHECK(fn.glGetShaderPrecisionFormatFn);
1388 }
1389
1390 debug_fn.glGetSyncivFn = 0;
1391 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
1392 ext.b_GL_ARB_sync) {
1393 fn.glGetSyncivFn =
1394 reinterpret_cast<glGetSyncivProc>(GetGLProcAddress("glGetSynciv"));
1395 DCHECK(fn.glGetSyncivFn);
1396 }
1397
1398 debug_fn.glGetTexLevelParameterfvFn = 0;
1399 if (!ver->is_es || ver->IsAtLeastGLES(3u, 1u)) {
1400 fn.glGetTexLevelParameterfvFn =
1401 reinterpret_cast<glGetTexLevelParameterfvProc>(
1402 GetGLProcAddress("glGetTexLevelParameterfv"));
1403 DCHECK(fn.glGetTexLevelParameterfvFn);
1404 }
1405
1406 debug_fn.glGetTexLevelParameterivFn = 0;
1407 if (!ver->is_es || ver->IsAtLeastGLES(3u, 1u)) {
1408 fn.glGetTexLevelParameterivFn =
1409 reinterpret_cast<glGetTexLevelParameterivProc>(
1410 GetGLProcAddress("glGetTexLevelParameteriv"));
1411 DCHECK(fn.glGetTexLevelParameterivFn);
1412 }
1413
1414 debug_fn.glGetTransformFeedbackVaryingFn = 0;
1415 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1416 fn.glGetTransformFeedbackVaryingFn =
1417 reinterpret_cast<glGetTransformFeedbackVaryingProc>(
1418 GetGLProcAddress("glGetTransformFeedbackVarying"));
1419 DCHECK(fn.glGetTransformFeedbackVaryingFn);
1420 }
1421
1422 debug_fn.glGetTranslatedShaderSourceANGLEFn = 0;
1423 if (ext.b_GL_ANGLE_translated_shader_source) {
1424 fn.glGetTranslatedShaderSourceANGLEFn =
1425 reinterpret_cast<glGetTranslatedShaderSourceANGLEProc>(
1426 GetGLProcAddress("glGetTranslatedShaderSourceANGLE"));
1427 DCHECK(fn.glGetTranslatedShaderSourceANGLEFn);
1428 }
1429
1430 debug_fn.glGetUniformBlockIndexFn = 0;
1431 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1432 fn.glGetUniformBlockIndexFn = reinterpret_cast<glGetUniformBlockIndexProc>(
1433 GetGLProcAddress("glGetUniformBlockIndex"));
1434 DCHECK(fn.glGetUniformBlockIndexFn);
1435 }
1436
1437 debug_fn.glGetUniformIndicesFn = 0;
1438 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1439 fn.glGetUniformIndicesFn = reinterpret_cast<glGetUniformIndicesProc>(
1440 GetGLProcAddress("glGetUniformIndices"));
1441 DCHECK(fn.glGetUniformIndicesFn);
1442 }
1443
1444 debug_fn.glInsertEventMarkerEXTFn = 0;
1445 if (ext.b_GL_EXT_debug_marker) {
1446 fn.glInsertEventMarkerEXTFn = reinterpret_cast<glInsertEventMarkerEXTProc>(
1447 GetGLProcAddress("glInsertEventMarkerEXT"));
1448 DCHECK(fn.glInsertEventMarkerEXTFn);
1449 }
1450
1451 debug_fn.glInvalidateFramebufferFn = 0;
1452 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1453 fn.glInvalidateFramebufferFn =
1454 reinterpret_cast<glInvalidateFramebufferProc>(
1455 GetGLProcAddress("glInvalidateFramebuffer"));
1456 DCHECK(fn.glInvalidateFramebufferFn);
1457 }
1458
1459 debug_fn.glInvalidateSubFramebufferFn = 0;
1460 if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1461 fn.glInvalidateSubFramebufferFn =
1462 reinterpret_cast<glInvalidateSubFramebufferProc>(
1463 GetGLProcAddress("glInvalidateSubFramebuffer"));
1464 DCHECK(fn.glInvalidateSubFramebufferFn);
1465 }
1466
1467 debug_fn.glIsFenceAPPLEFn = 0;
1468 if (ext.b_GL_APPLE_fence) {
1469 fn.glIsFenceAPPLEFn = reinterpret_cast<glIsFenceAPPLEProc>(
1470 GetGLProcAddress("glIsFenceAPPLE"));
1471 DCHECK(fn.glIsFenceAPPLEFn);
1472 }
1473
1474 debug_fn.glIsFenceNVFn = 0;
1475 if (ext.b_GL_NV_fence) {
1476 fn.glIsFenceNVFn =
1477 reinterpret_cast<glIsFenceNVProc>(GetGLProcAddress("glIsFenceNV"));
1478 DCHECK(fn.glIsFenceNVFn);
1479 }
1480
1481 debug_fn.glIsFramebufferEXTFn = 0; 1388 debug_fn.glIsFramebufferEXTFn = 0;
1482 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1389 if (ext.b_GL_EXT_framebuffer_object) {
1390 fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>(
1391 GetGLProcAddress("glIsFramebufferEXT"));
1392 }
1393 if (!fn.glIsFramebufferEXTFn) {
1483 fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>( 1394 fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>(
1484 GetGLProcAddress("glIsFramebuffer")); 1395 GetGLProcAddress("glIsFramebuffer"));
1485 DCHECK(fn.glIsFramebufferEXTFn); 1396 }
1486 } else if (ext.b_GL_EXT_framebuffer_object) { 1397
1487 fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>( 1398 fn.glIsQueryARBFn = 0;
1488 GetGLProcAddress("glIsFramebufferEXT"));
1489 DCHECK(fn.glIsFramebufferEXTFn);
1490 }
1491
1492 debug_fn.glIsQueryFn = 0;
1493 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1494 fn.glIsQueryFn =
1495 reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQuery"));
1496 DCHECK(fn.glIsQueryFn);
1497 }
1498
1499 debug_fn.glIsQueryARBFn = 0; 1399 debug_fn.glIsQueryARBFn = 0;
1500 if (ext.b_GL_ARB_occlusion_query) { 1400 if (ext.b_GL_ARB_occlusion_query) {
1501 fn.glIsQueryARBFn = 1401 fn.glIsQueryARBFn =
1502 reinterpret_cast<glIsQueryARBProc>(GetGLProcAddress("glIsQueryARB")); 1402 reinterpret_cast<glIsQueryARBProc>(GetGLProcAddress("glIsQueryARB"));
1503 DCHECK(fn.glIsQueryARBFn); 1403 }
1504 } else if (ext.b_GL_EXT_disjoint_timer_query || 1404 if (!fn.glIsQueryARBFn) {
1505 ext.b_GL_EXT_occlusion_query_boolean) {
1506 fn.glIsQueryARBFn = 1405 fn.glIsQueryARBFn =
1507 reinterpret_cast<glIsQueryARBProc>(GetGLProcAddress("glIsQueryEXT")); 1406 reinterpret_cast<glIsQueryARBProc>(GetGLProcAddress("glIsQueryEXT"));
1508 DCHECK(fn.glIsQueryARBFn); 1407 }
1509 } 1408
1510 1409 fn.glIsRenderbufferEXTFn = 0;
1511 debug_fn.glIsRenderbufferEXTFn = 0; 1410 debug_fn.glIsRenderbufferEXTFn = 0;
1512 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1411 if (ext.b_GL_EXT_framebuffer_object) {
1412 fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>(
1413 GetGLProcAddress("glIsRenderbufferEXT"));
1414 }
1415 if (!fn.glIsRenderbufferEXTFn) {
1513 fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>( 1416 fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>(
1514 GetGLProcAddress("glIsRenderbuffer")); 1417 GetGLProcAddress("glIsRenderbuffer"));
1515 DCHECK(fn.glIsRenderbufferEXTFn); 1418 }
1516 } else if (ext.b_GL_EXT_framebuffer_object) { 1419
1517 fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>( 1420 fn.glIsVertexArrayOESFn = 0;
1518 GetGLProcAddress("glIsRenderbufferEXT"));
1519 DCHECK(fn.glIsRenderbufferEXTFn);
1520 }
1521
1522 debug_fn.glIsSamplerFn = 0;
1523 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1524 fn.glIsSamplerFn =
1525 reinterpret_cast<glIsSamplerProc>(GetGLProcAddress("glIsSampler"));
1526 DCHECK(fn.glIsSamplerFn);
1527 }
1528
1529 debug_fn.glIsSyncFn = 0;
1530 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
1531 ext.b_GL_ARB_sync) {
1532 fn.glIsSyncFn =
1533 reinterpret_cast<glIsSyncProc>(GetGLProcAddress("glIsSync"));
1534 DCHECK(fn.glIsSyncFn);
1535 }
1536
1537 debug_fn.glIsTransformFeedbackFn = 0;
1538 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
1539 fn.glIsTransformFeedbackFn = reinterpret_cast<glIsTransformFeedbackProc>(
1540 GetGLProcAddress("glIsTransformFeedback"));
1541 DCHECK(fn.glIsTransformFeedbackFn);
1542 }
1543
1544 debug_fn.glIsVertexArrayOESFn = 0; 1421 debug_fn.glIsVertexArrayOESFn = 0;
1545 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) || 1422 if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) ||
1546 ext.b_GL_ARB_vertex_array_object) { 1423 ext.b_GL_ARB_vertex_array_object) {
1547 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>( 1424 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
1548 GetGLProcAddress("glIsVertexArray")); 1425 GetGLProcAddress("glIsVertexArray"));
1549 DCHECK(fn.glIsVertexArrayOESFn); 1426 }
1550 } else if (ext.b_GL_OES_vertex_array_object) { 1427 if (!fn.glIsVertexArrayOESFn && (ext.b_GL_OES_vertex_array_object)) {
1551 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>( 1428 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
1552 GetGLProcAddress("glIsVertexArrayOES")); 1429 GetGLProcAddress("glIsVertexArrayOES"));
1553 DCHECK(fn.glIsVertexArrayOESFn); 1430 }
1554 } else if (ext.b_GL_APPLE_vertex_array_object) { 1431 if (!fn.glIsVertexArrayOESFn) {
1555 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>( 1432 fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
1556 GetGLProcAddress("glIsVertexArrayAPPLE")); 1433 GetGLProcAddress("glIsVertexArrayAPPLE"));
1557 DCHECK(fn.glIsVertexArrayOESFn); 1434 }
1558 } 1435
1559 1436 fn.glMapBufferFn = 0;
1560 debug_fn.glMapBufferFn = 0; 1437 debug_fn.glMapBufferFn = 0;
1561 if (!ver->is_es) { 1438 if (ext.b_GL_OES_mapbuffer) {
1439 fn.glMapBufferFn =
1440 reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBufferOES"));
1441 }
1442 if (!fn.glMapBufferFn) {
1562 fn.glMapBufferFn = 1443 fn.glMapBufferFn =
1563 reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBuffer")); 1444 reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBuffer"));
1564 DCHECK(fn.glMapBufferFn); 1445 }
1565 } else if (ext.b_GL_OES_mapbuffer) { 1446
1566 fn.glMapBufferFn = 1447 fn.glMapBufferRangeFn = 0;
1567 reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBufferOES"));
1568 DCHECK(fn.glMapBufferFn);
1569 }
1570
1571 debug_fn.glMapBufferRangeFn = 0; 1448 debug_fn.glMapBufferRangeFn = 0;
1572 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) || 1449 if ((ver->is_gl3 || ver->is_gl4 || ver->is_es3) ||
1573 ext.b_GL_ARB_map_buffer_range) { 1450 ext.b_GL_ARB_map_buffer_range) {
1574 fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>( 1451 fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>(
1575 GetGLProcAddress("glMapBufferRange")); 1452 GetGLProcAddress("glMapBufferRange"));
1576 DCHECK(fn.glMapBufferRangeFn); 1453 }
1577 } else if (ext.b_GL_EXT_map_buffer_range) { 1454 if (!fn.glMapBufferRangeFn) {
1578 fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>( 1455 fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>(
1579 GetGLProcAddress("glMapBufferRangeEXT")); 1456 GetGLProcAddress("glMapBufferRangeEXT"));
1580 DCHECK(fn.glMapBufferRangeFn); 1457 }
1581 } 1458
1582 1459 fn.glProgramBinaryFn = 0;
1583 debug_fn.glMatrixLoadfEXTFn = 0;
1584 if (ext.b_GL_EXT_direct_state_access || ext.b_GL_NV_path_rendering) {
1585 fn.glMatrixLoadfEXTFn = reinterpret_cast<glMatrixLoadfEXTProc>(
1586 GetGLProcAddress("glMatrixLoadfEXT"));
1587 DCHECK(fn.glMatrixLoadfEXTFn);
1588 }
1589
1590 debug_fn.glMatrixLoadIdentityEXTFn = 0;
1591 if (ext.b_GL_EXT_direct_state_access || ext.b_GL_NV_path_rendering) {
1592 fn.glMatrixLoadIdentityEXTFn =
1593 reinterpret_cast<glMatrixLoadIdentityEXTProc>(
1594 GetGLProcAddress("glMatrixLoadIdentityEXT"));
1595 DCHECK(fn.glMatrixLoadIdentityEXTFn);
1596 }
1597
1598 debug_fn.glPauseTransformFeedbackFn = 0;
1599 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
1600 fn.glPauseTransformFeedbackFn =
1601 reinterpret_cast<glPauseTransformFeedbackProc>(
1602 GetGLProcAddress("glPauseTransformFeedback"));
1603 DCHECK(fn.glPauseTransformFeedbackFn);
1604 }
1605
1606 debug_fn.glPointParameteriFn = 0;
1607 if (!ver->is_es) {
1608 fn.glPointParameteriFn = reinterpret_cast<glPointParameteriProc>(
1609 GetGLProcAddress("glPointParameteri"));
1610 DCHECK(fn.glPointParameteriFn);
1611 }
1612
1613 debug_fn.glPopGroupMarkerEXTFn = 0;
1614 if (ext.b_GL_EXT_debug_marker) {
1615 fn.glPopGroupMarkerEXTFn = reinterpret_cast<glPopGroupMarkerEXTProc>(
1616 GetGLProcAddress("glPopGroupMarkerEXT"));
1617 DCHECK(fn.glPopGroupMarkerEXTFn);
1618 }
1619
1620 debug_fn.glProgramBinaryFn = 0; 1460 debug_fn.glProgramBinaryFn = 0;
1621 if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) || 1461 if (ext.b_GL_OES_get_program_binary) {
1622 ext.b_GL_ARB_get_program_binary) { 1462 fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>(
1463 GetGLProcAddress("glProgramBinaryOES"));
1464 }
1465 if (!fn.glProgramBinaryFn) {
1623 fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>( 1466 fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>(
1624 GetGLProcAddress("glProgramBinary")); 1467 GetGLProcAddress("glProgramBinary"));
1625 DCHECK(fn.glProgramBinaryFn); 1468 }
1626 } else if (ext.b_GL_OES_get_program_binary) { 1469
1627 fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>( 1470 fn.glQueryCounterFn = 0;
1628 GetGLProcAddress("glProgramBinaryOES"));
1629 DCHECK(fn.glProgramBinaryFn);
1630 }
1631
1632 debug_fn.glProgramParameteriFn = 0;
1633 if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) ||
1634 ext.b_GL_ARB_get_program_binary) {
1635 fn.glProgramParameteriFn = reinterpret_cast<glProgramParameteriProc>(
1636 GetGLProcAddress("glProgramParameteri"));
1637 DCHECK(fn.glProgramParameteriFn);
1638 }
1639
1640 debug_fn.glPushGroupMarkerEXTFn = 0;
1641 if (ext.b_GL_EXT_debug_marker) {
1642 fn.glPushGroupMarkerEXTFn = reinterpret_cast<glPushGroupMarkerEXTProc>(
1643 GetGLProcAddress("glPushGroupMarkerEXT"));
1644 DCHECK(fn.glPushGroupMarkerEXTFn);
1645 }
1646
1647 debug_fn.glQueryCounterFn = 0; 1471 debug_fn.glQueryCounterFn = 0;
1648 if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) { 1472 if (ext.b_GL_ARB_timer_query) {
1649 fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>( 1473 fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>(
1650 GetGLProcAddress("glQueryCounter")); 1474 GetGLProcAddress("glQueryCounter"));
1651 DCHECK(fn.glQueryCounterFn); 1475 }
1652 } else if (ext.b_GL_EXT_disjoint_timer_query) { 1476 if (!fn.glQueryCounterFn) {
1653 fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>( 1477 fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>(
1654 GetGLProcAddress("glQueryCounterEXT")); 1478 GetGLProcAddress("glQueryCounterEXT"));
1655 DCHECK(fn.glQueryCounterFn); 1479 }
1656 } 1480
1657 1481 fn.glRenderbufferStorageEXTFn = 0;
1658 debug_fn.glReadBufferFn = 0;
1659 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1660 fn.glReadBufferFn =
1661 reinterpret_cast<glReadBufferProc>(GetGLProcAddress("glReadBuffer"));
1662 DCHECK(fn.glReadBufferFn);
1663 }
1664
1665 debug_fn.glReleaseShaderCompilerFn = 0;
1666 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
1667 fn.glReleaseShaderCompilerFn =
1668 reinterpret_cast<glReleaseShaderCompilerProc>(
1669 GetGLProcAddress("glReleaseShaderCompiler"));
1670 DCHECK(fn.glReleaseShaderCompilerFn);
1671 }
1672
1673 debug_fn.glRenderbufferStorageEXTFn = 0; 1482 debug_fn.glRenderbufferStorageEXTFn = 0;
1674 if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) { 1483 if (ext.b_GL_EXT_framebuffer_object) {
1484 fn.glRenderbufferStorageEXTFn =
1485 reinterpret_cast<glRenderbufferStorageEXTProc>(
1486 GetGLProcAddress("glRenderbufferStorageEXT"));
1487 }
1488 if (!fn.glRenderbufferStorageEXTFn) {
1675 fn.glRenderbufferStorageEXTFn = 1489 fn.glRenderbufferStorageEXTFn =
1676 reinterpret_cast<glRenderbufferStorageEXTProc>( 1490 reinterpret_cast<glRenderbufferStorageEXTProc>(
1677 GetGLProcAddress("glRenderbufferStorage")); 1491 GetGLProcAddress("glRenderbufferStorage"));
1678 DCHECK(fn.glRenderbufferStorageEXTFn); 1492 }
1679 } else if (ext.b_GL_EXT_framebuffer_object) { 1493
1680 fn.glRenderbufferStorageEXTFn = 1494 fn.glRenderbufferStorageMultisampleANGLEFn = 0;
1681 reinterpret_cast<glRenderbufferStorageEXTProc>(
1682 GetGLProcAddress("glRenderbufferStorageEXT"));
1683 DCHECK(fn.glRenderbufferStorageEXTFn);
1684 }
1685
1686 debug_fn.glRenderbufferStorageMultisampleFn = 0;
1687 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1688 fn.glRenderbufferStorageMultisampleFn =
1689 reinterpret_cast<glRenderbufferStorageMultisampleProc>(
1690 GetGLProcAddress("glRenderbufferStorageMultisample"));
1691 DCHECK(fn.glRenderbufferStorageMultisampleFn);
1692 }
1693
1694 debug_fn.glRenderbufferStorageMultisampleANGLEFn = 0; 1495 debug_fn.glRenderbufferStorageMultisampleANGLEFn = 0;
1695 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) { 1496 if (ext.b_GL_ANGLE_framebuffer_multisample) {
1497 fn.glRenderbufferStorageMultisampleANGLEFn =
1498 reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>(
1499 GetGLProcAddress("glRenderbufferStorageMultisampleANGLE"));
1500 }
1501 if (!fn.glRenderbufferStorageMultisampleANGLEFn) {
1696 fn.glRenderbufferStorageMultisampleANGLEFn = 1502 fn.glRenderbufferStorageMultisampleANGLEFn =
1697 reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>( 1503 reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>(
1698 GetGLProcAddress("glRenderbufferStorageMultisample")); 1504 GetGLProcAddress("glRenderbufferStorageMultisample"));
1699 DCHECK(fn.glRenderbufferStorageMultisampleANGLEFn); 1505 }
1700 } else if (ext.b_GL_ANGLE_framebuffer_multisample) { 1506
1701 fn.glRenderbufferStorageMultisampleANGLEFn = 1507 fn.glRenderbufferStorageMultisampleEXTFn = 0;
1702 reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>(
1703 GetGLProcAddress("glRenderbufferStorageMultisampleANGLE"));
1704 DCHECK(fn.glRenderbufferStorageMultisampleANGLEFn);
1705 }
1706
1707 debug_fn.glRenderbufferStorageMultisampleEXTFn = 0; 1508 debug_fn.glRenderbufferStorageMultisampleEXTFn = 0;
1708 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) { 1509 if ((ext.b_GL_EXT_framebuffer_multisample ||
1510 ext.b_GL_EXT_multisampled_render_to_texture)) {
1511 fn.glRenderbufferStorageMultisampleEXTFn =
1512 reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>(
1513 GetGLProcAddress("glRenderbufferStorageMultisampleEXT"));
1514 }
1515 if (!fn.glRenderbufferStorageMultisampleEXTFn) {
1709 fn.glRenderbufferStorageMultisampleEXTFn = 1516 fn.glRenderbufferStorageMultisampleEXTFn =
1710 reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>( 1517 reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>(
1711 GetGLProcAddress("glRenderbufferStorageMultisample")); 1518 GetGLProcAddress("glRenderbufferStorageMultisample"));
1712 DCHECK(fn.glRenderbufferStorageMultisampleEXTFn); 1519 }
1713 } else if (ext.b_GL_EXT_multisampled_render_to_texture || 1520
1714 ext.b_GL_EXT_framebuffer_multisample) { 1521 fn.glTexStorage2DEXTFn = 0;
1715 fn.glRenderbufferStorageMultisampleEXTFn =
1716 reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>(
1717 GetGLProcAddress("glRenderbufferStorageMultisampleEXT"));
1718 DCHECK(fn.glRenderbufferStorageMultisampleEXTFn);
1719 }
1720
1721 debug_fn.glRenderbufferStorageMultisampleIMGFn = 0;
1722 if (ext.b_GL_IMG_multisampled_render_to_texture) {
1723 fn.glRenderbufferStorageMultisampleIMGFn =
1724 reinterpret_cast<glRenderbufferStorageMultisampleIMGProc>(
1725 GetGLProcAddress("glRenderbufferStorageMultisampleIMG"));
1726 DCHECK(fn.glRenderbufferStorageMultisampleIMGFn);
1727 }
1728
1729 debug_fn.glResumeTransformFeedbackFn = 0;
1730 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
1731 fn.glResumeTransformFeedbackFn =
1732 reinterpret_cast<glResumeTransformFeedbackProc>(
1733 GetGLProcAddress("glResumeTransformFeedback"));
1734 DCHECK(fn.glResumeTransformFeedbackFn);
1735 }
1736
1737 debug_fn.glSamplerParameterfFn = 0;
1738 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1739 fn.glSamplerParameterfFn = reinterpret_cast<glSamplerParameterfProc>(
1740 GetGLProcAddress("glSamplerParameterf"));
1741 DCHECK(fn.glSamplerParameterfFn);
1742 }
1743
1744 debug_fn.glSamplerParameterfvFn = 0;
1745 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1746 fn.glSamplerParameterfvFn = reinterpret_cast<glSamplerParameterfvProc>(
1747 GetGLProcAddress("glSamplerParameterfv"));
1748 DCHECK(fn.glSamplerParameterfvFn);
1749 }
1750
1751 debug_fn.glSamplerParameteriFn = 0;
1752 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1753 fn.glSamplerParameteriFn = reinterpret_cast<glSamplerParameteriProc>(
1754 GetGLProcAddress("glSamplerParameteri"));
1755 DCHECK(fn.glSamplerParameteriFn);
1756 }
1757
1758 debug_fn.glSamplerParameterivFn = 0;
1759 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
1760 fn.glSamplerParameterivFn = reinterpret_cast<glSamplerParameterivProc>(
1761 GetGLProcAddress("glSamplerParameteriv"));
1762 DCHECK(fn.glSamplerParameterivFn);
1763 }
1764
1765 debug_fn.glSetFenceAPPLEFn = 0;
1766 if (ext.b_GL_APPLE_fence) {
1767 fn.glSetFenceAPPLEFn = reinterpret_cast<glSetFenceAPPLEProc>(
1768 GetGLProcAddress("glSetFenceAPPLE"));
1769 DCHECK(fn.glSetFenceAPPLEFn);
1770 }
1771
1772 debug_fn.glSetFenceNVFn = 0;
1773 if (ext.b_GL_NV_fence) {
1774 fn.glSetFenceNVFn =
1775 reinterpret_cast<glSetFenceNVProc>(GetGLProcAddress("glSetFenceNV"));
1776 DCHECK(fn.glSetFenceNVFn);
1777 }
1778
1779 debug_fn.glShaderBinaryFn = 0;
1780 if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
1781 fn.glShaderBinaryFn = reinterpret_cast<glShaderBinaryProc>(
1782 GetGLProcAddress("glShaderBinary"));
1783 DCHECK(fn.glShaderBinaryFn);
1784 }
1785
1786 debug_fn.glTestFenceAPPLEFn = 0;
1787 if (ext.b_GL_APPLE_fence) {
1788 fn.glTestFenceAPPLEFn = reinterpret_cast<glTestFenceAPPLEProc>(
1789 GetGLProcAddress("glTestFenceAPPLE"));
1790 DCHECK(fn.glTestFenceAPPLEFn);
1791 }
1792
1793 debug_fn.glTestFenceNVFn = 0;
1794 if (ext.b_GL_NV_fence) {
1795 fn.glTestFenceNVFn =
1796 reinterpret_cast<glTestFenceNVProc>(GetGLProcAddress("glTestFenceNV"));
1797 DCHECK(fn.glTestFenceNVFn);
1798 }
1799
1800 debug_fn.glTexImage3DFn = 0;
1801 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1802 fn.glTexImage3DFn =
1803 reinterpret_cast<glTexImage3DProc>(GetGLProcAddress("glTexImage3D"));
1804 DCHECK(fn.glTexImage3DFn);
1805 }
1806
1807 debug_fn.glTexStorage2DEXTFn = 0; 1522 debug_fn.glTexStorage2DEXTFn = 0;
1808 if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u) || 1523 if (ver->is_es3 || ext.b_GL_ARB_texture_storage) {
1809 ext.b_GL_ARB_texture_storage) {
1810 fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>( 1524 fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>(
1811 GetGLProcAddress("glTexStorage2D")); 1525 GetGLProcAddress("glTexStorage2D"));
1812 DCHECK(fn.glTexStorage2DEXTFn); 1526 }
1813 } else if (ext.b_GL_EXT_texture_storage) { 1527 if (!fn.glTexStorage2DEXTFn) {
1814 fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>( 1528 fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>(
1815 GetGLProcAddress("glTexStorage2DEXT")); 1529 GetGLProcAddress("glTexStorage2DEXT"));
1816 DCHECK(fn.glTexStorage2DEXTFn); 1530 }
1817 } 1531
1818 1532 fn.glUnmapBufferFn = 0;
1819 debug_fn.glTexStorage3DFn = 0;
1820 if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
1821 fn.glTexStorage3DFn = reinterpret_cast<glTexStorage3DProc>(
1822 GetGLProcAddress("glTexStorage3D"));
1823 DCHECK(fn.glTexStorage3DFn);
1824 }
1825
1826 debug_fn.glTransformFeedbackVaryingsFn = 0;
1827 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1828 fn.glTransformFeedbackVaryingsFn =
1829 reinterpret_cast<glTransformFeedbackVaryingsProc>(
1830 GetGLProcAddress("glTransformFeedbackVaryings"));
1831 DCHECK(fn.glTransformFeedbackVaryingsFn);
1832 }
1833
1834 debug_fn.glUniform1uiFn = 0;
1835 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1836 fn.glUniform1uiFn =
1837 reinterpret_cast<glUniform1uiProc>(GetGLProcAddress("glUniform1ui"));
1838 DCHECK(fn.glUniform1uiFn);
1839 }
1840
1841 debug_fn.glUniform1uivFn = 0;
1842 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1843 fn.glUniform1uivFn =
1844 reinterpret_cast<glUniform1uivProc>(GetGLProcAddress("glUniform1uiv"));
1845 DCHECK(fn.glUniform1uivFn);
1846 }
1847
1848 debug_fn.glUniform2uiFn = 0;
1849 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1850 fn.glUniform2uiFn =
1851 reinterpret_cast<glUniform2uiProc>(GetGLProcAddress("glUniform2ui"));
1852 DCHECK(fn.glUniform2uiFn);
1853 }
1854
1855 debug_fn.glUniform2uivFn = 0;
1856 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1857 fn.glUniform2uivFn =
1858 reinterpret_cast<glUniform2uivProc>(GetGLProcAddress("glUniform2uiv"));
1859 DCHECK(fn.glUniform2uivFn);
1860 }
1861
1862 debug_fn.glUniform3uiFn = 0;
1863 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1864 fn.glUniform3uiFn =
1865 reinterpret_cast<glUniform3uiProc>(GetGLProcAddress("glUniform3ui"));
1866 DCHECK(fn.glUniform3uiFn);
1867 }
1868
1869 debug_fn.glUniform3uivFn = 0;
1870 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1871 fn.glUniform3uivFn =
1872 reinterpret_cast<glUniform3uivProc>(GetGLProcAddress("glUniform3uiv"));
1873 DCHECK(fn.glUniform3uivFn);
1874 }
1875
1876 debug_fn.glUniform4uiFn = 0;
1877 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1878 fn.glUniform4uiFn =
1879 reinterpret_cast<glUniform4uiProc>(GetGLProcAddress("glUniform4ui"));
1880 DCHECK(fn.glUniform4uiFn);
1881 }
1882
1883 debug_fn.glUniform4uivFn = 0;
1884 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1885 fn.glUniform4uivFn =
1886 reinterpret_cast<glUniform4uivProc>(GetGLProcAddress("glUniform4uiv"));
1887 DCHECK(fn.glUniform4uivFn);
1888 }
1889
1890 debug_fn.glUniformBlockBindingFn = 0;
1891 if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
1892 fn.glUniformBlockBindingFn = reinterpret_cast<glUniformBlockBindingProc>(
1893 GetGLProcAddress("glUniformBlockBinding"));
1894 DCHECK(fn.glUniformBlockBindingFn);
1895 }
1896
1897 debug_fn.glUniformMatrix2x3fvFn = 0;
1898 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1899 fn.glUniformMatrix2x3fvFn = reinterpret_cast<glUniformMatrix2x3fvProc>(
1900 GetGLProcAddress("glUniformMatrix2x3fv"));
1901 DCHECK(fn.glUniformMatrix2x3fvFn);
1902 }
1903
1904 debug_fn.glUniformMatrix2x4fvFn = 0;
1905 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1906 fn.glUniformMatrix2x4fvFn = reinterpret_cast<glUniformMatrix2x4fvProc>(
1907 GetGLProcAddress("glUniformMatrix2x4fv"));
1908 DCHECK(fn.glUniformMatrix2x4fvFn);
1909 }
1910
1911 debug_fn.glUniformMatrix3x2fvFn = 0;
1912 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1913 fn.glUniformMatrix3x2fvFn = reinterpret_cast<glUniformMatrix3x2fvProc>(
1914 GetGLProcAddress("glUniformMatrix3x2fv"));
1915 DCHECK(fn.glUniformMatrix3x2fvFn);
1916 }
1917
1918 debug_fn.glUniformMatrix3x4fvFn = 0;
1919 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1920 fn.glUniformMatrix3x4fvFn = reinterpret_cast<glUniformMatrix3x4fvProc>(
1921 GetGLProcAddress("glUniformMatrix3x4fv"));
1922 DCHECK(fn.glUniformMatrix3x4fvFn);
1923 }
1924
1925 debug_fn.glUniformMatrix4x2fvFn = 0;
1926 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1927 fn.glUniformMatrix4x2fvFn = reinterpret_cast<glUniformMatrix4x2fvProc>(
1928 GetGLProcAddress("glUniformMatrix4x2fv"));
1929 DCHECK(fn.glUniformMatrix4x2fvFn);
1930 }
1931
1932 debug_fn.glUniformMatrix4x3fvFn = 0;
1933 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
1934 fn.glUniformMatrix4x3fvFn = reinterpret_cast<glUniformMatrix4x3fvProc>(
1935 GetGLProcAddress("glUniformMatrix4x3fv"));
1936 DCHECK(fn.glUniformMatrix4x3fvFn);
1937 }
1938
1939 debug_fn.glUnmapBufferFn = 0; 1533 debug_fn.glUnmapBufferFn = 0;
1940 if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) { 1534 if (ext.b_GL_OES_mapbuffer) {
1535 fn.glUnmapBufferFn = reinterpret_cast<glUnmapBufferProc>(
1536 GetGLProcAddress("glUnmapBufferOES"));
1537 }
1538 if (!fn.glUnmapBufferFn) {
1941 fn.glUnmapBufferFn = 1539 fn.glUnmapBufferFn =
1942 reinterpret_cast<glUnmapBufferProc>(GetGLProcAddress("glUnmapBuffer")); 1540 reinterpret_cast<glUnmapBufferProc>(GetGLProcAddress("glUnmapBuffer"));
1943 DCHECK(fn.glUnmapBufferFn); 1541 }
1944 } else if (ext.b_GL_OES_mapbuffer) { 1542
1945 fn.glUnmapBufferFn = reinterpret_cast<glUnmapBufferProc>( 1543 fn.glVertexAttribDivisorANGLEFn = 0;
1946 GetGLProcAddress("glUnmapBufferOES"));
1947 DCHECK(fn.glUnmapBufferFn);
1948 }
1949
1950 debug_fn.glVertexAttribDivisorANGLEFn = 0; 1544 debug_fn.glVertexAttribDivisorANGLEFn = 0;
1951 if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) { 1545 if (ext.b_GL_ARB_instanced_arrays) {
1546 fn.glVertexAttribDivisorANGLEFn =
1547 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
1548 GetGLProcAddress("glVertexAttribDivisorARB"));
1549 }
1550 if (!fn.glVertexAttribDivisorANGLEFn && (ext.b_GL_ANGLE_instanced_arrays)) {
1551 fn.glVertexAttribDivisorANGLEFn =
1552 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
1553 GetGLProcAddress("glVertexAttribDivisorANGLE"));
1554 }
1555 if (!fn.glVertexAttribDivisorANGLEFn) {
1952 fn.glVertexAttribDivisorANGLEFn = 1556 fn.glVertexAttribDivisorANGLEFn =
1953 reinterpret_cast<glVertexAttribDivisorANGLEProc>( 1557 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
1954 GetGLProcAddress("glVertexAttribDivisor")); 1558 GetGLProcAddress("glVertexAttribDivisor"));
1955 DCHECK(fn.glVertexAttribDivisorANGLEFn);
1956 } else if (ext.b_GL_ARB_instanced_arrays) {
1957 fn.glVertexAttribDivisorANGLEFn =
1958 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
1959 GetGLProcAddress("glVertexAttribDivisorARB"));
1960 DCHECK(fn.glVertexAttribDivisorANGLEFn);
1961 } else if (ext.b_GL_ANGLE_instanced_arrays) {
1962 fn.glVertexAttribDivisorANGLEFn =
1963 reinterpret_cast<glVertexAttribDivisorANGLEProc>(
1964 GetGLProcAddress("glVertexAttribDivisorANGLE"));
1965 DCHECK(fn.glVertexAttribDivisorANGLEFn);
1966 }
1967
1968 debug_fn.glVertexAttribI4iFn = 0;
1969 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1970 fn.glVertexAttribI4iFn = reinterpret_cast<glVertexAttribI4iProc>(
1971 GetGLProcAddress("glVertexAttribI4i"));
1972 DCHECK(fn.glVertexAttribI4iFn);
1973 }
1974
1975 debug_fn.glVertexAttribI4ivFn = 0;
1976 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1977 fn.glVertexAttribI4ivFn = reinterpret_cast<glVertexAttribI4ivProc>(
1978 GetGLProcAddress("glVertexAttribI4iv"));
1979 DCHECK(fn.glVertexAttribI4ivFn);
1980 }
1981
1982 debug_fn.glVertexAttribI4uiFn = 0;
1983 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1984 fn.glVertexAttribI4uiFn = reinterpret_cast<glVertexAttribI4uiProc>(
1985 GetGLProcAddress("glVertexAttribI4ui"));
1986 DCHECK(fn.glVertexAttribI4uiFn);
1987 }
1988
1989 debug_fn.glVertexAttribI4uivFn = 0;
1990 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1991 fn.glVertexAttribI4uivFn = reinterpret_cast<glVertexAttribI4uivProc>(
1992 GetGLProcAddress("glVertexAttribI4uiv"));
1993 DCHECK(fn.glVertexAttribI4uivFn);
1994 }
1995
1996 debug_fn.glVertexAttribIPointerFn = 0;
1997 if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
1998 fn.glVertexAttribIPointerFn = reinterpret_cast<glVertexAttribIPointerProc>(
1999 GetGLProcAddress("glVertexAttribIPointer"));
2000 DCHECK(fn.glVertexAttribIPointerFn);
2001 }
2002
2003 debug_fn.glWaitSyncFn = 0;
2004 if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
2005 ext.b_GL_ARB_sync) {
2006 fn.glWaitSyncFn =
2007 reinterpret_cast<glWaitSyncProc>(GetGLProcAddress("glWaitSync"));
2008 DCHECK(fn.glWaitSyncFn);
2009 } 1559 }
2010 1560
2011 if (g_debugBindingsInitialized) 1561 if (g_debugBindingsInitialized)
2012 InitializeDebugBindings(); 1562 InitializeDebugBindings();
2013 } 1563 }
2014 1564
2015 extern "C" { 1565 extern "C" {
2016 1566
2017 static void GL_BINDING_CALL Debug_glActiveTexture(GLenum texture) { 1567 static void GL_BINDING_CALL Debug_glActiveTexture(GLenum texture) {
2018 GL_SERVICE_LOG("glActiveTexture" 1568 GL_SERVICE_LOG("glActiveTexture"
(...skipping 9760 matching lines...) Expand 10 before | Expand all | Expand 10 after
11779 11329
11780 GLenum NoContextGLApi::glWaitSyncFn(GLsync sync, 11330 GLenum NoContextGLApi::glWaitSyncFn(GLsync sync,
11781 GLbitfield flags, 11331 GLbitfield flags,
11782 GLuint64 timeout) { 11332 GLuint64 timeout) {
11783 NOTREACHED() << "Trying to call glWaitSync() without current GL context"; 11333 NOTREACHED() << "Trying to call glWaitSync() without current GL context";
11784 LOG(ERROR) << "Trying to call glWaitSync() without current GL context"; 11334 LOG(ERROR) << "Trying to call glWaitSync() without current GL context";
11785 return static_cast<GLenum>(0); 11335 return static_cast<GLenum>(0);
11786 } 11336 }
11787 11337
11788 } // namespace gfx 11338 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gl/gl_bindings_autogen_gl.h ('k') | ui/gl/gl_bindings_autogen_glx.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698