Cast: Stop logging kVideoFrameSentToEncoder and rename a couple events.
[chromium-blink-merge.git] / ui / gl / gl_bindings_skia_in_process.cc
blob0e2dfe56ba4e8c19daa659d5fa6592d33801edf4
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"
13 namespace {
15 extern "C" {
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,
33 const char* name) {
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,
68 GLclampf alpha) {
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,
80 mask, filter);
83 GLvoid StubGLBufferData(GLenum target, GLsizeiptr size, const void* data,
84 GLenum usage) {
85 glBufferData(target, size, data, usage);
88 GLvoid StubGLBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
89 const void* data) {
90 glBufferSubData(target, offset, size, data);
93 GLenum StubGLCheckFramebufferStatus(GLenum target) {
94 return glCheckFramebufferStatusEXT(target);
97 GLvoid StubGLClear(GLbitfield mask) {
98 glClear(mask);
101 GLvoid StubGLClearColor(GLclampf red, GLclampf green, GLclampf blue,
102 GLclampf alpha) {
103 glClearColor(red, green, blue, alpha);
106 GLvoid StubGLClearStencil(GLint s) {
107 glClearStencil(s);
110 GLvoid StubGLColorMask(GLboolean red, GLboolean green, GLboolean blue,
111 GLboolean alpha) {
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,
124 imageSize, data);
127 GLvoid StubGLCopyTexSubImage2D(GLenum target, GLint level,
128 GLint xoffset, GLint yoffset,
129 GLint x, GLint y,
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) {
143 glCullFace(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) {
179 glDepthMask(flag);
182 GLvoid StubGLDisable(GLenum cap) {
183 glDisable(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) {
200 glDrawBuffer(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) {
213 glEnable(cap);
216 GLvoid StubGLEnableVertexAttribArray(GLuint index) {
217 glEnableVertexAttribArray(index);
220 GLvoid StubGLEndQuery(GLenum target) {
221 glEndQuery(target);
224 GLvoid StubGLFinish() {
225 glFinish();
228 GLvoid StubGLFlush() {
229 glFlush();
232 GLvoid StubGLFramebufferRenderbuffer(GLenum target, GLenum attachment,
233 GLenum renderbuffertarget,
234 GLuint renderbuffer) {
235 glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget,
236 renderbuffer);
239 GLvoid StubGLFramebufferTexture2D(GLenum target, GLenum attachment,
240 GLenum textarget, GLuint texture,
241 GLint level) {
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,
249 level, samples);
252 GLvoid StubGLFrontFace(GLenum mode) {
253 glFrontFace(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,
285 GLenum attachment,
286 GLenum pname, GLint* params) {
287 glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);
290 GLenum StubGLGetError() {
291 return glGetError();
294 GLvoid StubGLGetIntegerv(GLenum pname, GLint* params) {
295 glGetIntegerv(pname, params);
298 GLvoid StubGLGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length,
299 char* infolog) {
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,
313 char* infolog) {
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) {
359 glLineWidth(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) {
387 glReadBuffer(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,
404 height);
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,
421 GLuint mask) {
422 glStencilFuncSeparate(face, func, ref, mask);
425 GLvoid StubGLStencilMask(GLuint mask) {
426 glStencilMask(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,
438 GLenum zpass) {
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,
446 type, pixels);
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,
466 pixels);
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,
518 GLfloat v3) {
519 glUniform4i(location, v0, v1, v2, v3);
522 GLvoid StubGLUniform4i(GLint location, GLint v0, GLint v1, GLint v2,
523 GLint v3) {
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,
564 const void* ptr) {
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);
571 } // extern "C"
572 } // namespace
574 namespace gfx {
576 GrGLInterface* CreateInProcessSkiaGLBinding() {
577 GrGLStandard standard;
578 switch (gfx::GetGLImplementation()) {
579 case gfx::kGLImplementationNone:
580 NOTREACHED();
581 return NULL;
582 case gfx::kGLImplementationDesktopGL:
583 case gfx::kGLImplementationAppleGL:
584 standard = kGL_GrGLStandard;
585 break;
586 case gfx::kGLImplementationOSMesaGL:
587 standard = kGL_GrGLStandard;
588 break;
589 case gfx::kGLImplementationEGLGLES2:
590 standard = kGLES_GrGLStandard;
591 break;
592 case gfx::kGLImplementationMockGL:
593 NOTREACHED();
594 return NULL;
595 default:
596 NOTREACHED();
597 return NULL;
600 GrGLInterface* interface = new GrGLInterface;
601 interface->fStandard = standard;
602 interface->fExtensions.init(standard,
603 StubGLGetString,
604 NULL,
605 StubGLGetIntegerv);
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;
737 return interface;
740 } // namespace gfx