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
StubGLDrawArrays(GLenum mode
, GLint first
, GLsizei count
) {
191 glDrawArrays(mode
, first
, count
);
194 GLvoid
StubGLDrawBuffer(GLenum mode
) {
198 GLvoid
StubGLDrawBuffers(GLsizei n
, const GLenum
* bufs
) {
199 glDrawBuffersARB(n
, bufs
);
202 GLvoid
StubGLDrawElements(GLenum mode
, GLsizei count
, GLenum type
,
203 const void* indices
) {
204 glDrawElements(mode
, count
, type
, indices
);
207 GLvoid
StubGLEnable(GLenum cap
) {
211 GLvoid
StubGLEnableVertexAttribArray(GLuint index
) {
212 glEnableVertexAttribArray(index
);
215 GLvoid
StubGLEndQuery(GLenum target
) {
219 GLvoid
StubGLFinish() {
223 GLvoid
StubGLFlush() {
227 GLvoid
StubGLFramebufferRenderbuffer(GLenum target
, GLenum attachment
,
228 GLenum renderbuffertarget
,
229 GLuint renderbuffer
) {
230 glFramebufferRenderbufferEXT(target
, attachment
, renderbuffertarget
,
234 GLvoid
StubGLFramebufferTexture2D(GLenum target
, GLenum attachment
,
235 GLenum textarget
, GLuint texture
,
237 glFramebufferTexture2DEXT(target
, attachment
, textarget
, texture
, level
);
240 GLvoid
StubGLFramebufferTexture2DMultisample(GLenum target
, GLenum attachment
,
241 GLenum textarget
, GLuint texture
,
242 GLint level
, GLsizei samples
) {
243 glFramebufferTexture2DMultisampleEXT(target
, attachment
, textarget
, texture
,
247 GLvoid
StubGLFrontFace(GLenum mode
) {
251 GLvoid
StubGLGenBuffers(GLsizei n
, GLuint
* buffers
) {
252 glGenBuffersARB(n
, buffers
);
255 GLvoid
StubGLGenFramebuffers(GLsizei n
, GLuint
* framebuffers
) {
256 glGenFramebuffersEXT(n
, framebuffers
);
259 GLvoid
StubGLGenQueries(GLsizei n
, GLuint
* ids
) {
260 glGenQueries(n
, ids
);
263 GLvoid
StubGLGenRenderbuffers(GLsizei n
, GLuint
* renderbuffers
) {
264 glGenRenderbuffersEXT(n
, renderbuffers
);
267 GLvoid
StubGLGenTextures(GLsizei n
, GLuint
* textures
) {
268 glGenTextures(n
, textures
);
271 GLvoid
StubGLGenVertexArrays(GLsizei n
, GLuint
* arrays
) {
272 glGenVertexArraysOES(n
, arrays
);
275 GLvoid
StubGLGetBufferParameteriv(GLenum target
, GLenum pname
, GLint
* params
) {
276 glGetBufferParameteriv(target
, pname
, params
);
279 GLvoid
StubGLGetFramebufferAttachmentParameteriv(GLenum target
,
281 GLenum pname
, GLint
* params
) {
282 glGetFramebufferAttachmentParameterivEXT(target
, attachment
, pname
, params
);
285 GLenum
StubGLGetError() {
289 GLvoid
StubGLGetIntegerv(GLenum pname
, GLint
* params
) {
290 glGetIntegerv(pname
, params
);
293 GLvoid
StubGLGetProgramInfoLog(GLuint program
, GLsizei bufsize
, GLsizei
* length
,
295 glGetProgramInfoLog(program
, bufsize
, length
, infolog
);
298 GLvoid
StubGLGetProgramiv(GLuint program
, GLenum pname
, GLint
* params
) {
299 glGetProgramiv(program
, pname
, params
);
302 GLvoid
StubGLGetRenderbufferParameteriv(GLenum target
,
303 GLenum pname
, GLint
* params
) {
304 glGetRenderbufferParameterivEXT(target
, pname
, params
);
307 GLvoid
StubGLGetShaderInfoLog(GLuint shader
, GLsizei bufsize
, GLsizei
* length
,
309 glGetShaderInfoLog(shader
, bufsize
, length
, infolog
);
312 GLvoid
StubGLGetShaderiv(GLuint shader
, GLenum pname
, GLint
* params
) {
313 glGetShaderiv(shader
, pname
, params
);
316 const GLubyte
* StubGLGetString(GLenum name
) {
317 return glGetString(name
);
320 GLvoid
StubGLGetQueryiv(GLenum target
, GLenum pname
, GLint
* params
) {
321 glGetQueryiv(target
, pname
, params
);
324 GLvoid
StubGLGetQueryObjecti64v(GLuint id
, GLenum pname
, GLint64
* params
) {
325 glGetQueryObjecti64v(id
, pname
, params
);
328 GLvoid
StubGLGetQueryObjectiv(GLuint id
, GLenum pname
, GLint
* params
) {
329 glGetQueryObjectiv(id
, pname
, params
);
332 GLvoid
StubGLGetQueryObjectui64v(GLuint id
, GLenum pname
, GLuint64
* params
) {
333 glGetQueryObjectui64v(id
, pname
, params
);
336 GLvoid
StubGLGetQueryObjectuiv(GLuint id
, GLenum pname
, GLuint
* params
) {
337 glGetQueryObjectuiv(id
, pname
, params
);
340 GLvoid
StubGLGetTexLevelParameteriv(GLenum target
, GLint level
,
341 GLenum pname
, GLint
* params
) {
342 glGetTexLevelParameteriv(target
, level
, pname
, params
);
345 GLint
StubGLGetUniformLocation(GLuint program
, const char* name
) {
346 return glGetUniformLocation(program
, name
);
349 GLvoid
StubGLLineWidth(GLfloat width
) {
353 GLvoid
StubGLLinkProgram(GLuint program
) {
354 glLinkProgram(program
);
357 void* StubGLMapBuffer(GLenum target
, GLenum access
) {
358 return glMapBuffer(target
, access
);
361 GLvoid
StubGLPixelStorei(GLenum pname
, GLint param
) {
362 glPixelStorei(pname
, param
);
365 GLvoid
StubGLQueryCounter(GLuint id
, GLenum target
) {
366 glQueryCounter(id
, target
);
369 GLvoid
StubGLReadBuffer(GLenum src
) {
373 GLvoid
StubGLReadPixels(GLint x
, GLint y
, GLsizei width
, GLsizei height
,
374 GLenum format
, GLenum type
, void* pixels
) {
375 glReadPixels(x
, y
, width
, height
, format
, type
, pixels
);
378 GLvoid
StubGLRenderbufferStorage(GLenum target
, GLenum internalformat
,
379 GLsizei width
, GLsizei height
) {
380 glRenderbufferStorageEXT(target
, internalformat
, width
, height
);
383 GLvoid
StubGLRenderbufferStorageMultisample(GLenum target
, GLsizei samples
,
384 GLenum internalformat
,
385 GLsizei width
, GLsizei height
) {
386 glRenderbufferStorageMultisampleEXT(target
, samples
, internalformat
, width
,
390 GLvoid
StubGLScissor(GLint x
, GLint y
, GLsizei width
, GLsizei height
) {
391 glScissor(x
, y
, width
, height
);
394 GLvoid
StubGLShaderSource(GLuint shader
, GLsizei count
, const char* const* str
,
395 const GLint
* length
) {
396 glShaderSource(shader
, count
, str
, length
);
399 GLvoid
StubGLStencilFunc(GLenum func
, GLint ref
, GLuint mask
) {
400 glStencilFunc(func
, ref
, mask
);
403 GLvoid
StubGLStencilFuncSeparate(GLenum face
, GLenum func
, GLint ref
,
405 glStencilFuncSeparate(face
, func
, ref
, mask
);
408 GLvoid
StubGLStencilMask(GLuint mask
) {
412 GLvoid
StubGLStencilMaskSeparate(GLenum face
, GLuint mask
) {
413 glStencilMaskSeparate(face
, mask
);
416 GLvoid
StubGLStencilOp(GLenum fail
, GLenum zfail
, GLenum zpass
) {
417 glStencilOp(fail
, zfail
, zpass
);
420 GLvoid
StubGLStencilOpSeparate(GLenum face
, GLenum fail
, GLenum zfail
,
422 glStencilOpSeparate(face
, fail
, zfail
, zpass
);
425 GLvoid
StubGLTexImage2D(GLenum target
, GLint level
, GLint internalformat
,
426 GLsizei width
, GLsizei height
, GLint border
,
427 GLenum format
, GLenum type
, const void* pixels
) {
428 glTexImage2D(target
, level
, internalformat
, width
, height
, border
, format
,
432 GLvoid
StubGLTexParameteri(GLenum target
, GLenum pname
, GLint param
) {
433 glTexParameteri(target
, pname
, param
);
436 GLvoid
StubGLTexParameteriv(GLenum target
, GLenum pname
, const GLint
* params
) {
437 glTexParameteriv(target
, pname
, params
);
440 GLvoid
StubGLTexStorage2D(GLenum target
, GLsizei levels
, GLenum internalFormat
,
441 GLsizei width
, GLsizei height
) {
442 glTexStorage2DEXT(target
, levels
, internalFormat
, width
, height
);
445 GLvoid
StubGLTexSubImage2D(GLenum target
, GLint level
, GLint xoffset
,
446 GLint yoffset
, GLsizei width
, GLsizei height
,
447 GLenum format
, GLenum type
, const void* pixels
) {
448 glTexSubImage2D(target
, level
, xoffset
, yoffset
, width
, height
, format
, type
,
452 GLvoid
StubGLUniform1f(GLint location
, GLfloat v
) {
453 glUniform1i(location
, v
);
456 GLvoid
StubGLUniform1i(GLint location
, GLint v
) {
457 glUniform1i(location
, v
);
460 GLvoid
StubGLUniform1fv(GLint location
, GLsizei count
, const GLfloat
* v
) {
461 glUniform1fv(location
, count
, v
);
464 GLvoid
StubGLUniform1iv(GLint location
, GLsizei count
, const GLint
* v
) {
465 glUniform1iv(location
, count
, v
);
468 GLvoid
StubGLUniform2f(GLint location
, GLfloat v0
, GLfloat v1
) {
469 glUniform2i(location
, v0
, v1
);
472 GLvoid
StubGLUniform2i(GLint location
, GLint v0
, GLint v1
) {
473 glUniform2i(location
, v0
, v1
);
476 GLvoid
StubGLUniform2fv(GLint location
, GLsizei count
, const GLfloat
* v
) {
477 glUniform2fv(location
, count
, v
);
480 GLvoid
StubGLUniform2iv(GLint location
, GLsizei count
, const GLint
* v
) {
481 glUniform2iv(location
, count
, v
);
484 GLvoid
StubGLUniform3f(GLint location
, GLfloat v0
, GLfloat v1
, GLfloat v2
) {
485 glUniform3i(location
, v0
, v1
, v2
);
488 GLvoid
StubGLUniform3i(GLint location
, GLint v0
, GLint v1
, GLint v2
) {
489 glUniform3i(location
, v0
, v1
, v2
);
492 GLvoid
StubGLUniform3fv(GLint location
, GLsizei count
, const GLfloat
* v
) {
493 glUniform3fv(location
, count
, v
);
496 GLvoid
StubGLUniform3iv(GLint location
, GLsizei count
, const GLint
* v
) {
497 glUniform3iv(location
, count
, v
);
500 GLvoid
StubGLUniform4f(GLint location
, GLfloat v0
, GLfloat v1
, GLfloat v2
,
502 glUniform4i(location
, v0
, v1
, v2
, v3
);
505 GLvoid
StubGLUniform4i(GLint location
, GLint v0
, GLint v1
, GLint v2
,
507 glUniform4i(location
, v0
, v1
, v2
, v3
);
510 GLvoid
StubGLUniform4fv(GLint location
, GLsizei count
, const GLfloat
* v
) {
511 glUniform4fv(location
, count
, v
);
514 GLvoid
StubGLUniform4iv(GLint location
, GLsizei count
, const GLint
* v
) {
515 glUniform4iv(location
, count
, v
);
518 GLvoid
StubGLUniformMatrix2fv(GLint location
, GLsizei count
,
519 GLboolean transpose
, const GLfloat
* value
) {
520 glUniformMatrix2fv(location
, count
, transpose
, value
);
523 GLvoid
StubGLUniformMatrix3fv(GLint location
, GLsizei count
,
524 GLboolean transpose
, const GLfloat
* value
) {
525 glUniformMatrix3fv(location
, count
, transpose
, value
);
528 GLvoid
StubGLUniformMatrix4fv(GLint location
, GLsizei count
,
529 GLboolean transpose
, const GLfloat
* value
) {
530 glUniformMatrix4fv(location
, count
, transpose
, value
);
533 GLboolean
StubGLUnmapBuffer(GLenum target
) {
534 return glUnmapBuffer(target
);
537 GLvoid
StubGLUseProgram(GLuint program
) {
538 glUseProgram(program
);
541 GLvoid
StubGLVertexAttrib4fv(GLuint indx
, const GLfloat
* values
) {
542 glVertexAttrib4fv(indx
, values
);
545 GLvoid
StubGLVertexAttribPointer(GLuint indx
, GLint size
, GLenum type
,
546 GLboolean normalized
, GLsizei stride
,
548 glVertexAttribPointer(indx
, size
, type
, normalized
, stride
, ptr
);
551 GLvoid
StubGLViewport(GLint x
, GLint y
, GLsizei width
, GLsizei height
) {
552 glViewport(x
, y
, width
, height
);
559 GrGLInterface
* CreateInProcessSkiaGLBinding() {
561 switch (gfx::GetGLImplementation()) {
562 case gfx::kGLImplementationNone
:
565 case gfx::kGLImplementationDesktopGL
:
566 case gfx::kGLImplementationAppleGL
:
567 binding
= kDesktop_GrGLBinding
;
569 case gfx::kGLImplementationOSMesaGL
:
570 binding
= kDesktop_GrGLBinding
;
572 case gfx::kGLImplementationEGLGLES2
:
573 binding
= kES2_GrGLBinding
;
575 case gfx::kGLImplementationMockGL
:
583 GrGLInterface
* interface
= new GrGLInterface
;
585 interface
->fBindingsExported
= binding
;
586 interface
->fActiveTexture
= StubGLActiveTexture
;
587 interface
->fAttachShader
= StubGLAttachShader
;
588 interface
->fBeginQuery
= StubGLBeginQuery
;
589 interface
->fBindAttribLocation
= StubGLBindAttribLocation
;
590 interface
->fBindBuffer
= StubGLBindBuffer
;
591 interface
->fBindFragDataLocation
= StubGLBindFragDataLocation
;
592 interface
->fBindTexture
= StubGLBindTexture
;
593 interface
->fBindVertexArray
= StubGLBindVertexArray
;
594 interface
->fBlendColor
= StubGLBlendColor
;
595 interface
->fBlendFunc
= StubGLBlendFunc
;
596 interface
->fBufferData
= StubGLBufferData
;
597 interface
->fBufferSubData
= StubGLBufferSubData
;
598 interface
->fClear
= StubGLClear
;
599 interface
->fClearColor
= StubGLClearColor
;
600 interface
->fClearStencil
= StubGLClearStencil
;
601 interface
->fColorMask
= StubGLColorMask
;
602 interface
->fCompileShader
= StubGLCompileShader
;
603 interface
->fCompressedTexImage2D
= StubGLCompressedTexImage2D
;
604 interface
->fCopyTexSubImage2D
= StubGLCopyTexSubImage2D
;
605 interface
->fCreateProgram
= StubGLCreateProgram
;
606 interface
->fCreateShader
= StubGLCreateShader
;
607 interface
->fCullFace
= StubGLCullFace
;
608 interface
->fDeleteBuffers
= StubGLDeleteBuffers
;
609 interface
->fDeleteProgram
= StubGLDeleteProgram
;
610 interface
->fDeleteQueries
= StubGLDeleteQueries
;
611 interface
->fDeleteShader
= StubGLDeleteShader
;
612 interface
->fDeleteTextures
= StubGLDeleteTextures
;
613 interface
->fDeleteVertexArrays
= StubGLDeleteVertexArrays
;
614 interface
->fDepthMask
= StubGLDepthMask
;
615 interface
->fDisable
= StubGLDisable
;
616 interface
->fDisableVertexAttribArray
= StubGLDisableVertexAttribArray
;
617 interface
->fDrawArrays
= StubGLDrawArrays
;
618 interface
->fDrawBuffer
= StubGLDrawBuffer
;
619 interface
->fDrawBuffers
= StubGLDrawBuffers
;
620 interface
->fDrawElements
= StubGLDrawElements
;
621 interface
->fEnable
= StubGLEnable
;
622 interface
->fEnableVertexAttribArray
= StubGLEnableVertexAttribArray
;
623 interface
->fEndQuery
= StubGLEndQuery
;
624 interface
->fFinish
= StubGLFinish
;
625 interface
->fFlush
= StubGLFlush
;
626 interface
->fFrontFace
= StubGLFrontFace
;
627 interface
->fGenBuffers
= StubGLGenBuffers
;
628 interface
->fGenQueries
= StubGLGenQueries
;
629 interface
->fGenTextures
= StubGLGenTextures
;
630 interface
->fGenVertexArrays
= StubGLGenVertexArrays
;
631 interface
->fGetBufferParameteriv
= StubGLGetBufferParameteriv
;
632 interface
->fGetError
= StubGLGetError
;
633 interface
->fGetIntegerv
= StubGLGetIntegerv
;
634 interface
->fGetQueryiv
= StubGLGetQueryiv
;
635 interface
->fGetQueryObjecti64v
= StubGLGetQueryObjecti64v
;
636 interface
->fGetQueryObjectiv
= StubGLGetQueryObjectiv
;
637 interface
->fGetQueryObjectui64v
= StubGLGetQueryObjectui64v
;
638 interface
->fGetQueryObjectuiv
= StubGLGetQueryObjectuiv
;
639 interface
->fGetProgramInfoLog
= StubGLGetProgramInfoLog
;
640 interface
->fGetProgramiv
= StubGLGetProgramiv
;
641 interface
->fGetShaderInfoLog
= StubGLGetShaderInfoLog
;
642 interface
->fGetShaderiv
= StubGLGetShaderiv
;
643 interface
->fGetString
= StubGLGetString
;
644 interface
->fGetTexLevelParameteriv
= StubGLGetTexLevelParameteriv
;
645 interface
->fGetUniformLocation
= StubGLGetUniformLocation
;
646 interface
->fLineWidth
= StubGLLineWidth
;
647 interface
->fLinkProgram
= StubGLLinkProgram
;
648 interface
->fPixelStorei
= StubGLPixelStorei
;
649 interface
->fQueryCounter
= StubGLQueryCounter
;
650 interface
->fReadBuffer
= StubGLReadBuffer
;
651 interface
->fReadPixels
= StubGLReadPixels
;
652 interface
->fScissor
= StubGLScissor
;
653 interface
->fShaderSource
= StubGLShaderSource
;
654 interface
->fStencilFunc
= StubGLStencilFunc
;
655 interface
->fStencilFuncSeparate
= StubGLStencilFuncSeparate
;
656 interface
->fStencilMask
= StubGLStencilMask
;
657 interface
->fStencilMaskSeparate
= StubGLStencilMaskSeparate
;
658 interface
->fStencilOp
= StubGLStencilOp
;
659 interface
->fStencilOpSeparate
= StubGLStencilOpSeparate
;
660 interface
->fTexImage2D
= StubGLTexImage2D
;
661 interface
->fTexParameteri
= StubGLTexParameteri
;
662 interface
->fTexParameteriv
= StubGLTexParameteriv
;
663 interface
->fTexSubImage2D
= StubGLTexSubImage2D
;
664 interface
->fTexStorage2D
= StubGLTexStorage2D
;
665 interface
->fUniform1f
= StubGLUniform1f
;
666 interface
->fUniform1i
= StubGLUniform1i
;
667 interface
->fUniform1fv
= StubGLUniform1fv
;
668 interface
->fUniform1iv
= StubGLUniform1iv
;
669 interface
->fUniform2f
= StubGLUniform2f
;
670 interface
->fUniform2i
= StubGLUniform2i
;
671 interface
->fUniform2fv
= StubGLUniform2fv
;
672 interface
->fUniform2iv
= StubGLUniform2iv
;
673 interface
->fUniform3f
= StubGLUniform3f
;
674 interface
->fUniform3i
= StubGLUniform3i
;
675 interface
->fUniform3fv
= StubGLUniform3fv
;
676 interface
->fUniform3iv
= StubGLUniform3iv
;
677 interface
->fUniform4f
= StubGLUniform4f
;
678 interface
->fUniform4i
= StubGLUniform4i
;
679 interface
->fUniform4fv
= StubGLUniform4fv
;
680 interface
->fUniform4iv
= StubGLUniform4iv
;
681 interface
->fUniformMatrix2fv
= StubGLUniformMatrix2fv
;
682 interface
->fUniformMatrix3fv
= StubGLUniformMatrix3fv
;
683 interface
->fUniformMatrix4fv
= StubGLUniformMatrix4fv
;
684 interface
->fUseProgram
= StubGLUseProgram
;
685 interface
->fVertexAttrib4fv
= StubGLVertexAttrib4fv
;
686 interface
->fVertexAttribPointer
= StubGLVertexAttribPointer
;
687 interface
->fViewport
= StubGLViewport
;
688 interface
->fBindFramebuffer
= StubGLBindFramebuffer
;
689 interface
->fBindRenderbuffer
= StubGLBindRenderbuffer
;
690 interface
->fCheckFramebufferStatus
= StubGLCheckFramebufferStatus
;
691 interface
->fDeleteFramebuffers
= StubGLDeleteFramebuffers
;
692 interface
->fDeleteRenderbuffers
= StubGLDeleteRenderbuffers
;
693 interface
->fFramebufferRenderbuffer
= StubGLFramebufferRenderbuffer
;
694 interface
->fFramebufferTexture2D
= StubGLFramebufferTexture2D
;
695 interface
->fFramebufferTexture2DMultisample
=
696 StubGLFramebufferTexture2DMultisample
;
697 interface
->fGenFramebuffers
= StubGLGenFramebuffers
;
698 interface
->fGenRenderbuffers
= StubGLGenRenderbuffers
;
699 interface
->fGetFramebufferAttachmentParameteriv
=
700 StubGLGetFramebufferAttachmentParameteriv
;
701 interface
->fGetRenderbufferParameteriv
= StubGLGetRenderbufferParameteriv
;
702 interface
->fRenderbufferStorage
= StubGLRenderbufferStorage
;
703 interface
->fRenderbufferStorageMultisample
=
704 StubGLRenderbufferStorageMultisample
;
705 interface
->fBlitFramebuffer
= StubGLBlitFramebuffer
;
706 interface
->fMapBuffer
= StubGLMapBuffer
;
707 interface
->fUnmapBuffer
= StubGLUnmapBuffer
;
708 interface
->fBindFragDataLocationIndexed
=
709 StubGLBindFragDataLocationIndexed
;