1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 #include "ui/gl/gl_bindings_skia_in_process.h"
8 #include "base/logging.h"
9 #include "third_party/skia/include/gpu/gl/GrGLInterface.h"
10 #include "ui/gl/gl_bindings.h"
11 #include "ui/gl/gl_implementation.h"
16 // The following stub functions are required because the glXXX routines exported
17 // via gl_bindings.h use call-type GL_BINDING_CALL, which on Windows is stdcall.
18 // Skia has been built such that its GrGLInterface GL pointers are __cdecl.
20 GLvoid
StubGLActiveTexture(GLenum texture
) {
21 glActiveTexture(texture
);
24 GLvoid
StubGLAttachShader(GLuint program
, GLuint shader
) {
25 glAttachShader(program
, shader
);
28 GLvoid
StubGLBeginQuery(GLenum target
, GLuint id
) {
29 glBeginQuery(target
, id
);
32 GLvoid
StubGLBindAttribLocation(GLuint program
, GLuint index
,
34 glBindAttribLocation(program
, index
, name
);
37 GLvoid
StubGLBindBuffer(GLenum target
, GLuint buffer
) {
38 glBindBuffer(target
, buffer
);
41 GLvoid
StubGLBindFragDataLocation(GLuint program
, GLuint colorNumber
,
42 const GLchar
* name
) {
43 glBindFragDataLocation(program
, colorNumber
, name
);
46 GLvoid
StubGLBindFragDataLocationIndexed(GLuint program
, GLuint colorNumber
,
47 GLuint index
, const GLchar
* name
) {
48 glBindFragDataLocationIndexed(program
, colorNumber
, index
, name
);
51 GLvoid
StubGLBindFramebuffer(GLenum target
, GLuint framebuffer
) {
52 glBindFramebufferEXT(target
, framebuffer
);
55 GLvoid
StubGLBindRenderbuffer(GLenum target
, GLuint renderbuffer
) {
56 glBindRenderbufferEXT(target
, renderbuffer
);
59 GLvoid
StubGLBindTexture(GLenum target
, GLuint texture
) {
60 glBindTexture(target
, texture
);
63 GLvoid
StubGLBindVertexArray(GLuint array
) {
64 glBindVertexArrayOES(array
);
67 GLvoid
StubGLBlendColor(GLclampf red
, GLclampf green
, GLclampf blue
,
69 glBlendColor(red
, green
, blue
, alpha
);
72 GLvoid
StubGLBlendFunc(GLenum sfactor
, GLenum dfactor
) {
73 glBlendFunc(sfactor
, dfactor
);
76 GLvoid
StubGLBlitFramebuffer(GLint srcX0
, GLint srcY0
, GLint srcX1
, GLint srcY1
,
77 GLint dstX0
, GLint dstY0
, GLint dstX1
, GLint dstY1
,
78 GLbitfield mask
, GLenum filter
) {
79 glBlitFramebufferEXT(srcX0
, srcY0
, srcX1
, srcY1
, dstX0
, dstY0
, dstX1
, dstY1
,
83 GLvoid
StubGLBufferData(GLenum target
, GLsizeiptr size
, const void* data
,
85 glBufferData(target
, size
, data
, usage
);
88 GLvoid
StubGLBufferSubData(GLenum target
, GLintptr offset
, GLsizeiptr size
,
90 glBufferSubData(target
, offset
, size
, data
);
93 GLenum
StubGLCheckFramebufferStatus(GLenum target
) {
94 return glCheckFramebufferStatusEXT(target
);
97 GLvoid
StubGLClear(GLbitfield mask
) {
101 GLvoid
StubGLClearColor(GLclampf red
, GLclampf green
, GLclampf blue
,
103 glClearColor(red
, green
, blue
, alpha
);
106 GLvoid
StubGLClearStencil(GLint s
) {
110 GLvoid
StubGLColorMask(GLboolean red
, GLboolean green
, GLboolean blue
,
112 glColorMask(red
, green
, blue
, alpha
);
115 GLvoid
StubGLCompileShader(GLuint shader
) {
116 glCompileShader(shader
);
119 GLvoid
StubGLCompressedTexImage2D(GLenum target
, GLint level
,
120 GLenum internalformat
, GLsizei width
,
121 GLsizei height
, GLint border
,
122 GLsizei imageSize
, const void* data
) {
123 glCompressedTexImage2D(target
, level
, internalformat
, width
, height
, border
,
127 GLvoid
StubGLCopyTexSubImage2D(GLenum target
, GLint level
,
128 GLint xoffset
, GLint yoffset
,
130 GLsizei width
, GLsizei height
) {
131 glCopyTexSubImage2D(target
, level
, xoffset
, yoffset
, x
, y
, width
, height
);
134 GLuint
StubGLCreateProgram(void) {
135 return glCreateProgram();
138 GLuint
StubGLCreateShader(GLenum type
) {
139 return glCreateShader(type
);
142 GLvoid
StubGLCullFace(GLenum mode
) {
146 GLvoid
StubGLDeleteBuffers(GLsizei n
, const GLuint
* buffers
) {
147 glDeleteBuffersARB(n
, buffers
);
150 GLvoid
StubGLDeleteFramebuffers(GLsizei n
, const GLuint
* framebuffers
) {
151 glDeleteFramebuffersEXT(n
, framebuffers
);
154 GLvoid
StubGLDeleteQueries(GLsizei n
, const GLuint
* ids
) {
155 glDeleteQueries(n
, ids
);
158 GLvoid
StubGLDeleteProgram(GLuint program
) {
159 glDeleteProgram(program
);
162 GLvoid
StubGLDeleteRenderbuffers(GLsizei n
, const GLuint
* renderbuffers
) {
163 glDeleteRenderbuffersEXT(n
, renderbuffers
);
166 GLvoid
StubGLDeleteShader(GLuint shader
) {
167 glDeleteShader(shader
);
170 GLvoid
StubGLDeleteTextures(GLsizei n
, const GLuint
* textures
) {
171 glDeleteTextures(n
, textures
);
174 GLvoid
StubGLDeleteVertexArrays(GLsizei n
, const GLuint
* arrays
) {
175 glDeleteVertexArraysOES(n
, arrays
);
178 GLvoid
StubGLDepthMask(GLboolean flag
) {
182 GLvoid
StubGLDisable(GLenum cap
) {
186 GLvoid
StubGLDisableVertexAttribArray(GLuint index
) {
187 glDisableVertexAttribArray(index
);
190 GLvoid
StubGLDiscardFramebuffer(GLenum target
, GLsizei numAttachments
,
191 const GLenum
*attachments
) {
192 glDiscardFramebufferEXT(target
, numAttachments
, attachments
);
195 GLvoid
StubGLDrawArrays(GLenum mode
, GLint first
, GLsizei count
) {
196 glDrawArrays(mode
, first
, count
);
199 GLvoid
StubGLDrawBuffer(GLenum mode
) {
203 GLvoid
StubGLDrawBuffers(GLsizei n
, const GLenum
* bufs
) {
204 glDrawBuffersARB(n
, bufs
);
207 GLvoid
StubGLDrawElements(GLenum mode
, GLsizei count
, GLenum type
,
208 const void* indices
) {
209 glDrawElements(mode
, count
, type
, indices
);
212 GLvoid
StubGLEnable(GLenum cap
) {
216 GLvoid
StubGLEnableVertexAttribArray(GLuint index
) {
217 glEnableVertexAttribArray(index
);
220 GLvoid
StubGLEndQuery(GLenum target
) {
224 GLvoid
StubGLFinish() {
228 GLvoid
StubGLFlush() {
232 GLvoid
StubGLFramebufferRenderbuffer(GLenum target
, GLenum attachment
,
233 GLenum renderbuffertarget
,
234 GLuint renderbuffer
) {
235 glFramebufferRenderbufferEXT(target
, attachment
, renderbuffertarget
,
239 GLvoid
StubGLFramebufferTexture2D(GLenum target
, GLenum attachment
,
240 GLenum textarget
, GLuint texture
,
242 glFramebufferTexture2DEXT(target
, attachment
, textarget
, texture
, level
);
245 GLvoid
StubGLFramebufferTexture2DMultisample(GLenum target
, GLenum attachment
,
246 GLenum textarget
, GLuint texture
,
247 GLint level
, GLsizei samples
) {
248 glFramebufferTexture2DMultisampleEXT(target
, attachment
, textarget
, texture
,
252 GLvoid
StubGLFrontFace(GLenum mode
) {
256 GLvoid
StubGLGenBuffers(GLsizei n
, GLuint
* buffers
) {
257 glGenBuffersARB(n
, buffers
);
260 GLvoid
StubGLGenFramebuffers(GLsizei n
, GLuint
* framebuffers
) {
261 glGenFramebuffersEXT(n
, framebuffers
);
264 GLvoid
StubGLGenQueries(GLsizei n
, GLuint
* ids
) {
265 glGenQueries(n
, ids
);
268 GLvoid
StubGLGenRenderbuffers(GLsizei n
, GLuint
* renderbuffers
) {
269 glGenRenderbuffersEXT(n
, renderbuffers
);
272 GLvoid
StubGLGenTextures(GLsizei n
, GLuint
* textures
) {
273 glGenTextures(n
, textures
);
276 GLvoid
StubGLGenVertexArrays(GLsizei n
, GLuint
* arrays
) {
277 glGenVertexArraysOES(n
, arrays
);
280 GLvoid
StubGLGetBufferParameteriv(GLenum target
, GLenum pname
, GLint
* params
) {
281 glGetBufferParameteriv(target
, pname
, params
);
284 GLvoid
StubGLGetFramebufferAttachmentParameteriv(GLenum target
,
286 GLenum pname
, GLint
* params
) {
287 glGetFramebufferAttachmentParameterivEXT(target
, attachment
, pname
, params
);
290 GLenum
StubGLGetError() {
294 GLvoid
StubGLGetIntegerv(GLenum pname
, GLint
* params
) {
295 glGetIntegerv(pname
, params
);
298 GLvoid
StubGLGetProgramInfoLog(GLuint program
, GLsizei bufsize
, GLsizei
* length
,
300 glGetProgramInfoLog(program
, bufsize
, length
, infolog
);
303 GLvoid
StubGLGetProgramiv(GLuint program
, GLenum pname
, GLint
* params
) {
304 glGetProgramiv(program
, pname
, params
);
307 GLvoid
StubGLGetRenderbufferParameteriv(GLenum target
,
308 GLenum pname
, GLint
* params
) {
309 glGetRenderbufferParameterivEXT(target
, pname
, params
);
312 GLvoid
StubGLGetShaderInfoLog(GLuint shader
, GLsizei bufsize
, GLsizei
* length
,
314 glGetShaderInfoLog(shader
, bufsize
, length
, infolog
);
317 GLvoid
StubGLGetShaderiv(GLuint shader
, GLenum pname
, GLint
* params
) {
318 glGetShaderiv(shader
, pname
, params
);
321 const GLubyte
* StubGLGetString(GLenum name
) {
322 return glGetString(name
);
325 GLvoid
StubGLGetQueryiv(GLenum target
, GLenum pname
, GLint
* params
) {
326 glGetQueryiv(target
, pname
, params
);
329 GLvoid
StubGLGetQueryObjecti64v(GLuint id
, GLenum pname
, GLint64
* params
) {
330 glGetQueryObjecti64v(id
, pname
, params
);
333 GLvoid
StubGLGetQueryObjectiv(GLuint id
, GLenum pname
, GLint
* params
) {
334 glGetQueryObjectiv(id
, pname
, params
);
337 GLvoid
StubGLGetQueryObjectui64v(GLuint id
, GLenum pname
, GLuint64
* params
) {
338 glGetQueryObjectui64v(id
, pname
, params
);
341 GLvoid
StubGLGetQueryObjectuiv(GLuint id
, GLenum pname
, GLuint
* params
) {
342 glGetQueryObjectuiv(id
, pname
, params
);
345 GLvoid
StubGLGetTexLevelParameteriv(GLenum target
, GLint level
,
346 GLenum pname
, GLint
* params
) {
347 glGetTexLevelParameteriv(target
, level
, pname
, params
);
350 GLint
StubGLGetUniformLocation(GLuint program
, const char* name
) {
351 return glGetUniformLocation(program
, name
);
354 GLvoid
StubGLInsertEventMarker(GLsizei length
, const char* marker
) {
355 glInsertEventMarkerEXT(length
, marker
);
358 GLvoid
StubGLLineWidth(GLfloat width
) {
362 GLvoid
StubGLLinkProgram(GLuint program
) {
363 glLinkProgram(program
);
366 void* StubGLMapBuffer(GLenum target
, GLenum access
) {
367 return glMapBuffer(target
, access
);
370 GLvoid
StubGLPixelStorei(GLenum pname
, GLint param
) {
371 glPixelStorei(pname
, param
);
374 GLvoid
StubGLPopGroupMarker() {
375 glPopGroupMarkerEXT();
378 GLvoid
StubGLPushGroupMarker(GLsizei length
, const char* marker
) {
379 glPushGroupMarkerEXT(length
, marker
);
382 GLvoid
StubGLQueryCounter(GLuint id
, GLenum target
) {
383 glQueryCounter(id
, target
);
386 GLvoid
StubGLReadBuffer(GLenum src
) {
390 GLvoid
StubGLReadPixels(GLint x
, GLint y
, GLsizei width
, GLsizei height
,
391 GLenum format
, GLenum type
, void* pixels
) {
392 glReadPixels(x
, y
, width
, height
, format
, type
, pixels
);
395 GLvoid
StubGLRenderbufferStorage(GLenum target
, GLenum internalformat
,
396 GLsizei width
, GLsizei height
) {
397 glRenderbufferStorageEXT(target
, internalformat
, width
, height
);
400 GLvoid
StubGLRenderbufferStorageMultisample(GLenum target
, GLsizei samples
,
401 GLenum internalformat
,
402 GLsizei width
, GLsizei height
) {
403 glRenderbufferStorageMultisampleEXT(target
, samples
, internalformat
, width
,
407 GLvoid
StubGLScissor(GLint x
, GLint y
, GLsizei width
, GLsizei height
) {
408 glScissor(x
, y
, width
, height
);
411 GLvoid
StubGLShaderSource(GLuint shader
, GLsizei count
, const char* const* str
,
412 const GLint
* length
) {
413 glShaderSource(shader
, count
, str
, length
);
416 GLvoid
StubGLStencilFunc(GLenum func
, GLint ref
, GLuint mask
) {
417 glStencilFunc(func
, ref
, mask
);
420 GLvoid
StubGLStencilFuncSeparate(GLenum face
, GLenum func
, GLint ref
,
422 glStencilFuncSeparate(face
, func
, ref
, mask
);
425 GLvoid
StubGLStencilMask(GLuint mask
) {
429 GLvoid
StubGLStencilMaskSeparate(GLenum face
, GLuint mask
) {
430 glStencilMaskSeparate(face
, mask
);
433 GLvoid
StubGLStencilOp(GLenum fail
, GLenum zfail
, GLenum zpass
) {
434 glStencilOp(fail
, zfail
, zpass
);
437 GLvoid
StubGLStencilOpSeparate(GLenum face
, GLenum fail
, GLenum zfail
,
439 glStencilOpSeparate(face
, fail
, zfail
, zpass
);
442 GLvoid
StubGLTexImage2D(GLenum target
, GLint level
, GLint internalformat
,
443 GLsizei width
, GLsizei height
, GLint border
,
444 GLenum format
, GLenum type
, const void* pixels
) {
445 glTexImage2D(target
, level
, internalformat
, width
, height
, border
, format
,
449 GLvoid
StubGLTexParameteri(GLenum target
, GLenum pname
, GLint param
) {
450 glTexParameteri(target
, pname
, param
);
453 GLvoid
StubGLTexParameteriv(GLenum target
, GLenum pname
, const GLint
* params
) {
454 glTexParameteriv(target
, pname
, params
);
457 GLvoid
StubGLTexStorage2D(GLenum target
, GLsizei levels
, GLenum internalFormat
,
458 GLsizei width
, GLsizei height
) {
459 glTexStorage2DEXT(target
, levels
, internalFormat
, width
, height
);
462 GLvoid
StubGLTexSubImage2D(GLenum target
, GLint level
, GLint xoffset
,
463 GLint yoffset
, GLsizei width
, GLsizei height
,
464 GLenum format
, GLenum type
, const void* pixels
) {
465 glTexSubImage2D(target
, level
, xoffset
, yoffset
, width
, height
, format
, type
,
469 GLvoid
StubGLUniform1f(GLint location
, GLfloat v
) {
470 glUniform1i(location
, v
);
473 GLvoid
StubGLUniform1i(GLint location
, GLint v
) {
474 glUniform1i(location
, v
);
477 GLvoid
StubGLUniform1fv(GLint location
, GLsizei count
, const GLfloat
* v
) {
478 glUniform1fv(location
, count
, v
);
481 GLvoid
StubGLUniform1iv(GLint location
, GLsizei count
, const GLint
* v
) {
482 glUniform1iv(location
, count
, v
);
485 GLvoid
StubGLUniform2f(GLint location
, GLfloat v0
, GLfloat v1
) {
486 glUniform2i(location
, v0
, v1
);
489 GLvoid
StubGLUniform2i(GLint location
, GLint v0
, GLint v1
) {
490 glUniform2i(location
, v0
, v1
);
493 GLvoid
StubGLUniform2fv(GLint location
, GLsizei count
, const GLfloat
* v
) {
494 glUniform2fv(location
, count
, v
);
497 GLvoid
StubGLUniform2iv(GLint location
, GLsizei count
, const GLint
* v
) {
498 glUniform2iv(location
, count
, v
);
501 GLvoid
StubGLUniform3f(GLint location
, GLfloat v0
, GLfloat v1
, GLfloat v2
) {
502 glUniform3i(location
, v0
, v1
, v2
);
505 GLvoid
StubGLUniform3i(GLint location
, GLint v0
, GLint v1
, GLint v2
) {
506 glUniform3i(location
, v0
, v1
, v2
);
509 GLvoid
StubGLUniform3fv(GLint location
, GLsizei count
, const GLfloat
* v
) {
510 glUniform3fv(location
, count
, v
);
513 GLvoid
StubGLUniform3iv(GLint location
, GLsizei count
, const GLint
* v
) {
514 glUniform3iv(location
, count
, v
);
517 GLvoid
StubGLUniform4f(GLint location
, GLfloat v0
, GLfloat v1
, GLfloat v2
,
519 glUniform4i(location
, v0
, v1
, v2
, v3
);
522 GLvoid
StubGLUniform4i(GLint location
, GLint v0
, GLint v1
, GLint v2
,
524 glUniform4i(location
, v0
, v1
, v2
, v3
);
527 GLvoid
StubGLUniform4fv(GLint location
, GLsizei count
, const GLfloat
* v
) {
528 glUniform4fv(location
, count
, v
);
531 GLvoid
StubGLUniform4iv(GLint location
, GLsizei count
, const GLint
* v
) {
532 glUniform4iv(location
, count
, v
);
535 GLvoid
StubGLUniformMatrix2fv(GLint location
, GLsizei count
,
536 GLboolean transpose
, const GLfloat
* value
) {
537 glUniformMatrix2fv(location
, count
, transpose
, value
);
540 GLvoid
StubGLUniformMatrix3fv(GLint location
, GLsizei count
,
541 GLboolean transpose
, const GLfloat
* value
) {
542 glUniformMatrix3fv(location
, count
, transpose
, value
);
545 GLvoid
StubGLUniformMatrix4fv(GLint location
, GLsizei count
,
546 GLboolean transpose
, const GLfloat
* value
) {
547 glUniformMatrix4fv(location
, count
, transpose
, value
);
550 GLboolean
StubGLUnmapBuffer(GLenum target
) {
551 return glUnmapBuffer(target
);
554 GLvoid
StubGLUseProgram(GLuint program
) {
555 glUseProgram(program
);
558 GLvoid
StubGLVertexAttrib4fv(GLuint indx
, const GLfloat
* values
) {
559 glVertexAttrib4fv(indx
, values
);
562 GLvoid
StubGLVertexAttribPointer(GLuint indx
, GLint size
, GLenum type
,
563 GLboolean normalized
, GLsizei stride
,
565 glVertexAttribPointer(indx
, size
, type
, normalized
, stride
, ptr
);
568 GLvoid
StubGLViewport(GLint x
, GLint y
, GLsizei width
, GLsizei height
) {
569 glViewport(x
, y
, width
, height
);
576 GrGLInterface
* CreateInProcessSkiaGLBinding() {
577 GrGLStandard standard
;
578 switch (gfx::GetGLImplementation()) {
579 case gfx::kGLImplementationNone
:
582 case gfx::kGLImplementationDesktopGL
:
583 case gfx::kGLImplementationAppleGL
:
584 standard
= kGL_GrGLStandard
;
586 case gfx::kGLImplementationOSMesaGL
:
587 standard
= kGL_GrGLStandard
;
589 case gfx::kGLImplementationEGLGLES2
:
590 standard
= kGLES_GrGLStandard
;
592 case gfx::kGLImplementationMockGL
:
600 GrGLInterface
* interface
= new GrGLInterface
;
601 interface
->fStandard
= standard
;
602 interface
->fExtensions
.init(standard
,
607 GrGLInterface::Functions
* functions
= &interface
->fFunctions
;
608 functions
->fActiveTexture
= StubGLActiveTexture
;
609 functions
->fAttachShader
= StubGLAttachShader
;
610 functions
->fBeginQuery
= StubGLBeginQuery
;
611 functions
->fBindAttribLocation
= StubGLBindAttribLocation
;
612 functions
->fBindBuffer
= StubGLBindBuffer
;
613 functions
->fBindFragDataLocation
= StubGLBindFragDataLocation
;
614 functions
->fBindTexture
= StubGLBindTexture
;
615 functions
->fBindVertexArray
= StubGLBindVertexArray
;
616 functions
->fBlendColor
= StubGLBlendColor
;
617 functions
->fBlendFunc
= StubGLBlendFunc
;
618 functions
->fBufferData
= StubGLBufferData
;
619 functions
->fBufferSubData
= StubGLBufferSubData
;
620 functions
->fClear
= StubGLClear
;
621 functions
->fClearColor
= StubGLClearColor
;
622 functions
->fClearStencil
= StubGLClearStencil
;
623 functions
->fColorMask
= StubGLColorMask
;
624 functions
->fCompileShader
= StubGLCompileShader
;
625 functions
->fCompressedTexImage2D
= StubGLCompressedTexImage2D
;
626 functions
->fCopyTexSubImage2D
= StubGLCopyTexSubImage2D
;
627 functions
->fCreateProgram
= StubGLCreateProgram
;
628 functions
->fCreateShader
= StubGLCreateShader
;
629 functions
->fCullFace
= StubGLCullFace
;
630 functions
->fDeleteBuffers
= StubGLDeleteBuffers
;
631 functions
->fDeleteProgram
= StubGLDeleteProgram
;
632 functions
->fDeleteQueries
= StubGLDeleteQueries
;
633 functions
->fDeleteShader
= StubGLDeleteShader
;
634 functions
->fDeleteTextures
= StubGLDeleteTextures
;
635 functions
->fDeleteVertexArrays
= StubGLDeleteVertexArrays
;
636 functions
->fDepthMask
= StubGLDepthMask
;
637 functions
->fDisable
= StubGLDisable
;
638 functions
->fDisableVertexAttribArray
= StubGLDisableVertexAttribArray
;
639 functions
->fDiscardFramebuffer
= StubGLDiscardFramebuffer
;
640 functions
->fDrawArrays
= StubGLDrawArrays
;
641 functions
->fDrawBuffer
= StubGLDrawBuffer
;
642 functions
->fDrawBuffers
= StubGLDrawBuffers
;
643 functions
->fDrawElements
= StubGLDrawElements
;
644 functions
->fEnable
= StubGLEnable
;
645 functions
->fEnableVertexAttribArray
= StubGLEnableVertexAttribArray
;
646 functions
->fEndQuery
= StubGLEndQuery
;
647 functions
->fFinish
= StubGLFinish
;
648 functions
->fFlush
= StubGLFlush
;
649 functions
->fFrontFace
= StubGLFrontFace
;
650 functions
->fGenBuffers
= StubGLGenBuffers
;
651 functions
->fGenQueries
= StubGLGenQueries
;
652 functions
->fGenTextures
= StubGLGenTextures
;
653 functions
->fGenVertexArrays
= StubGLGenVertexArrays
;
654 functions
->fGetBufferParameteriv
= StubGLGetBufferParameteriv
;
655 functions
->fGetError
= StubGLGetError
;
656 functions
->fGetIntegerv
= StubGLGetIntegerv
;
657 functions
->fGetQueryiv
= StubGLGetQueryiv
;
658 functions
->fGetQueryObjecti64v
= StubGLGetQueryObjecti64v
;
659 functions
->fGetQueryObjectiv
= StubGLGetQueryObjectiv
;
660 functions
->fGetQueryObjectui64v
= StubGLGetQueryObjectui64v
;
661 functions
->fGetQueryObjectuiv
= StubGLGetQueryObjectuiv
;
662 functions
->fGetProgramInfoLog
= StubGLGetProgramInfoLog
;
663 functions
->fGetProgramiv
= StubGLGetProgramiv
;
664 functions
->fGetShaderInfoLog
= StubGLGetShaderInfoLog
;
665 functions
->fGetShaderiv
= StubGLGetShaderiv
;
666 functions
->fGetString
= StubGLGetString
;
667 functions
->fGetTexLevelParameteriv
= StubGLGetTexLevelParameteriv
;
668 functions
->fGetUniformLocation
= StubGLGetUniformLocation
;
669 functions
->fInsertEventMarker
= StubGLInsertEventMarker
;
670 functions
->fLineWidth
= StubGLLineWidth
;
671 functions
->fLinkProgram
= StubGLLinkProgram
;
672 functions
->fPixelStorei
= StubGLPixelStorei
;
673 functions
->fPopGroupMarker
= StubGLPopGroupMarker
;
674 functions
->fPushGroupMarker
= StubGLPushGroupMarker
;
675 functions
->fQueryCounter
= StubGLQueryCounter
;
676 functions
->fReadBuffer
= StubGLReadBuffer
;
677 functions
->fReadPixels
= StubGLReadPixels
;
678 functions
->fScissor
= StubGLScissor
;
679 functions
->fShaderSource
= StubGLShaderSource
;
680 functions
->fStencilFunc
= StubGLStencilFunc
;
681 functions
->fStencilFuncSeparate
= StubGLStencilFuncSeparate
;
682 functions
->fStencilMask
= StubGLStencilMask
;
683 functions
->fStencilMaskSeparate
= StubGLStencilMaskSeparate
;
684 functions
->fStencilOp
= StubGLStencilOp
;
685 functions
->fStencilOpSeparate
= StubGLStencilOpSeparate
;
686 functions
->fTexImage2D
= StubGLTexImage2D
;
687 functions
->fTexParameteri
= StubGLTexParameteri
;
688 functions
->fTexParameteriv
= StubGLTexParameteriv
;
689 functions
->fTexSubImage2D
= StubGLTexSubImage2D
;
690 functions
->fTexStorage2D
= StubGLTexStorage2D
;
691 functions
->fUniform1f
= StubGLUniform1f
;
692 functions
->fUniform1i
= StubGLUniform1i
;
693 functions
->fUniform1fv
= StubGLUniform1fv
;
694 functions
->fUniform1iv
= StubGLUniform1iv
;
695 functions
->fUniform2f
= StubGLUniform2f
;
696 functions
->fUniform2i
= StubGLUniform2i
;
697 functions
->fUniform2fv
= StubGLUniform2fv
;
698 functions
->fUniform2iv
= StubGLUniform2iv
;
699 functions
->fUniform3f
= StubGLUniform3f
;
700 functions
->fUniform3i
= StubGLUniform3i
;
701 functions
->fUniform3fv
= StubGLUniform3fv
;
702 functions
->fUniform3iv
= StubGLUniform3iv
;
703 functions
->fUniform4f
= StubGLUniform4f
;
704 functions
->fUniform4i
= StubGLUniform4i
;
705 functions
->fUniform4fv
= StubGLUniform4fv
;
706 functions
->fUniform4iv
= StubGLUniform4iv
;
707 functions
->fUniformMatrix2fv
= StubGLUniformMatrix2fv
;
708 functions
->fUniformMatrix3fv
= StubGLUniformMatrix3fv
;
709 functions
->fUniformMatrix4fv
= StubGLUniformMatrix4fv
;
710 functions
->fUseProgram
= StubGLUseProgram
;
711 functions
->fVertexAttrib4fv
= StubGLVertexAttrib4fv
;
712 functions
->fVertexAttribPointer
= StubGLVertexAttribPointer
;
713 functions
->fViewport
= StubGLViewport
;
714 functions
->fBindFramebuffer
= StubGLBindFramebuffer
;
715 functions
->fBindRenderbuffer
= StubGLBindRenderbuffer
;
716 functions
->fCheckFramebufferStatus
= StubGLCheckFramebufferStatus
;
717 functions
->fDeleteFramebuffers
= StubGLDeleteFramebuffers
;
718 functions
->fDeleteRenderbuffers
= StubGLDeleteRenderbuffers
;
719 functions
->fFramebufferRenderbuffer
= StubGLFramebufferRenderbuffer
;
720 functions
->fFramebufferTexture2D
= StubGLFramebufferTexture2D
;
721 functions
->fFramebufferTexture2DMultisample
=
722 StubGLFramebufferTexture2DMultisample
;
723 functions
->fGenFramebuffers
= StubGLGenFramebuffers
;
724 functions
->fGenRenderbuffers
= StubGLGenRenderbuffers
;
725 functions
->fGetFramebufferAttachmentParameteriv
=
726 StubGLGetFramebufferAttachmentParameteriv
;
727 functions
->fGetRenderbufferParameteriv
= StubGLGetRenderbufferParameteriv
;
728 functions
->fRenderbufferStorage
= StubGLRenderbufferStorage
;
729 functions
->fRenderbufferStorageMultisample
=
730 StubGLRenderbufferStorageMultisample
;
731 functions
->fBlitFramebuffer
= StubGLBlitFramebuffer
;
732 functions
->fMapBuffer
= StubGLMapBuffer
;
733 functions
->fUnmapBuffer
= StubGLUnmapBuffer
;
734 functions
->fBindFragDataLocationIndexed
=
735 StubGLBindFragDataLocationIndexed
;