Revert 219061 "Introduce facade for interaction with Android Sur..."
[chromium-blink-merge.git] / ui / gl / gl_bindings_skia_in_process.cc
blob9c2cea6a07e97b15cb1fe8ea49b3fd3017017298
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 StubGLDrawArrays(GLenum mode, GLint first, GLsizei count) {
191 glDrawArrays(mode, first, count);
194 GLvoid StubGLDrawBuffer(GLenum mode) {
195 glDrawBuffer(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) {
208 glEnable(cap);
211 GLvoid StubGLEnableVertexAttribArray(GLuint index) {
212 glEnableVertexAttribArray(index);
215 GLvoid StubGLEndQuery(GLenum target) {
216 glEndQuery(target);
219 GLvoid StubGLFinish() {
220 glFinish();
223 GLvoid StubGLFlush() {
224 glFlush();
227 GLvoid StubGLFramebufferRenderbuffer(GLenum target, GLenum attachment,
228 GLenum renderbuffertarget,
229 GLuint renderbuffer) {
230 glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget,
231 renderbuffer);
234 GLvoid StubGLFramebufferTexture2D(GLenum target, GLenum attachment,
235 GLenum textarget, GLuint texture,
236 GLint level) {
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,
244 level, samples);
247 GLvoid StubGLFrontFace(GLenum mode) {
248 glFrontFace(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,
280 GLenum attachment,
281 GLenum pname, GLint* params) {
282 glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);
285 GLenum StubGLGetError() {
286 return glGetError();
289 GLvoid StubGLGetIntegerv(GLenum pname, GLint* params) {
290 glGetIntegerv(pname, params);
293 GLvoid StubGLGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length,
294 char* infolog) {
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,
308 char* infolog) {
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) {
350 glLineWidth(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) {
370 glReadBuffer(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,
387 height);
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,
404 GLuint mask) {
405 glStencilFuncSeparate(face, func, ref, mask);
408 GLvoid StubGLStencilMask(GLuint mask) {
409 glStencilMask(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,
421 GLenum zpass) {
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,
429 type, pixels);
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,
449 pixels);
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,
501 GLfloat v3) {
502 glUniform4i(location, v0, v1, v2, v3);
505 GLvoid StubGLUniform4i(GLint location, GLint v0, GLint v1, GLint v2,
506 GLint v3) {
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,
547 const void* ptr) {
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);
554 } // extern "C"
555 } // namespace
557 namespace gfx {
559 GrGLInterface* CreateInProcessSkiaGLBinding() {
560 GrGLBinding binding;
561 switch (gfx::GetGLImplementation()) {
562 case gfx::kGLImplementationNone:
563 NOTREACHED();
564 return NULL;
565 case gfx::kGLImplementationDesktopGL:
566 case gfx::kGLImplementationAppleGL:
567 binding = kDesktop_GrGLBinding;
568 break;
569 case gfx::kGLImplementationOSMesaGL:
570 binding = kDesktop_GrGLBinding;
571 break;
572 case gfx::kGLImplementationEGLGLES2:
573 binding = kES2_GrGLBinding;
574 break;
575 case gfx::kGLImplementationMockGL:
576 NOTREACHED();
577 return NULL;
578 default:
579 NOTREACHED();
580 return NULL;
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;
710 return interface;
713 } // namespace gfx