blob: 32b061fafa52b88e8db157a2e4ab55d856d29235 [file] [log] [blame]
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file implements glue to a GL interface so we can mock it for unit
// testing. It has to be Desktop GL, not GLES2 as it is used to test the service
// side code.
#ifndef GPU_COMMAND_BUFFER_SERVICE_GL_INTERFACE_H_
#define GPU_COMMAND_BUFFER_SERVICE_GL_INTERFACE_H_
#include <GLES2/gl2types.h>
namespace gles2 {
class GLInterface {
public:
virtual ~GLInterface() {
}
static void SetGLInterface(GLInterface* gl_interface);
static GLInterface* GetGLInterface();
virtual void ActiveTexture(GLenum texture) = 0;
virtual void AttachShader(GLuint program, GLuint shader) = 0;
virtual void BindAttribLocation(
GLuint program, GLuint index, const char* name) = 0;
virtual void BindBuffer(GLenum target, GLuint buffer) = 0;
virtual void BindFramebufferEXT(GLenum target, GLuint framebuffer) = 0;
virtual void BindRenderbufferEXT(GLenum target, GLuint renderbuffer) = 0;
virtual void BindTexture(GLenum target, GLuint texture) = 0;
virtual void BlendColor(
GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) = 0;
virtual void BlendEquation(GLenum mode) = 0;
virtual void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) = 0;
virtual void BlendFunc(GLenum sfactor, GLenum dfactor) = 0;
virtual void BlendFuncSeparate(
GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) = 0;
virtual void BufferData(
GLenum target, GLsizeiptr size, const void* data, GLenum usage) = 0;
virtual void BufferSubData(
GLenum target, GLintptr offset, GLsizeiptr size, const void* data) = 0;
virtual GLenum CheckFramebufferStatusEXT(GLenum target) = 0;
virtual void Clear(GLbitfield mask) = 0;
virtual void ClearColor(
GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) = 0;
virtual void ClearDepth(GLclampf depth) = 0;
virtual void ClearStencil(GLint s) = 0;
virtual void ColorMask(
GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) = 0;
virtual void CompileShader(GLuint shader) = 0;
virtual void CompressedTexImage2D(
GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLint border, GLsizei imageSize, const void* data) = 0;
virtual void CompressedTexSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLsizei imageSize, const void* data) = 0;
virtual void CopyTexImage2D(
GLenum target, GLint level, GLenum internalformat, GLint x, GLint y,
GLsizei width, GLsizei height, GLint border) = 0;
virtual void CopyTexSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLint x, GLint y, GLsizei width, GLsizei height) = 0;
virtual GLuint CreateProgram() = 0;
virtual GLuint CreateShader(GLenum type) = 0;
virtual void CullFace(GLenum mode) = 0;
virtual void DeleteBuffersARB(GLsizei n, const GLuint* buffers) = 0;
virtual void DeleteFramebuffersEXT(GLsizei n, const GLuint* framebuffers) = 0;
virtual void DeleteProgram(GLuint program) = 0;
virtual void DeleteRenderbuffersEXT(
GLsizei n, const GLuint* renderbuffers) = 0;
virtual void DeleteShader(GLuint shader) = 0;
virtual void DeleteTextures(GLsizei n, const GLuint* textures) = 0;
virtual void DepthFunc(GLenum func) = 0;
virtual void DepthMask(GLboolean flag) = 0;
virtual void DepthRange(GLclampf zNear, GLclampf zFar) = 0;
virtual void DetachShader(GLuint program, GLuint shader) = 0;
virtual void Disable(GLenum cap) = 0;
virtual void DisableVertexAttribArray(GLuint index) = 0;
virtual void DrawArrays(GLenum mode, GLint first, GLsizei count) = 0;
virtual void DrawElements(
GLenum mode, GLsizei count, GLenum type, const void* indices) = 0;
virtual void Enable(GLenum cap) = 0;
virtual void EnableVertexAttribArray(GLuint index) = 0;
virtual void Finish() = 0;
virtual void Flush() = 0;
virtual void FramebufferRenderbufferEXT(
GLenum target, GLenum attachment, GLenum renderbuffertarget,
GLuint renderbuffer) = 0;
virtual void FramebufferTexture2DEXT(
GLenum target, GLenum attachment, GLenum textarget, GLuint texture,
GLint level) = 0;
virtual void FrontFace(GLenum mode) = 0;
virtual void GenBuffersARB(GLsizei n, GLuint* buffers) = 0;
virtual void GenerateMipmapEXT(GLenum target) = 0;
virtual void GenFramebuffersEXT(GLsizei n, GLuint* framebuffers) = 0;
virtual void GenRenderbuffersEXT(GLsizei n, GLuint* renderbuffers) = 0;
virtual void GenTextures(GLsizei n, GLuint* textures) = 0;
virtual void GetActiveAttrib(
GLuint program, GLuint index, GLsizei bufsize, GLsizei* length,
GLint* size, GLenum* type, char* name) = 0;
virtual void GetActiveUniform(
GLuint program, GLuint index, GLsizei bufsize, GLsizei* length,
GLint* size, GLenum* type, char* name) = 0;
virtual void GetAttachedShaders(
GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) = 0;
virtual GLint GetAttribLocation(GLuint program, const char* name) = 0;
virtual void GetBooleanv(GLenum pname, GLboolean* params) = 0;
virtual void GetBufferParameteriv(
GLenum target, GLenum pname, GLint* params) = 0;
virtual GLenum GetError() = 0;
virtual void GetFloatv(GLenum pname, GLfloat* params) = 0;
virtual void GetFramebufferAttachmentParameterivEXT(
GLenum target, GLenum attachment, GLenum pname, GLint* params) = 0;
virtual void GetIntegerv(GLenum pname, GLint* params) = 0;
virtual void GetProgramiv(GLuint program, GLenum pname, GLint* params) = 0;
// TODO(gman): Implement this
virtual void GetProgramInfoLog(
GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) = 0;
virtual void GetRenderbufferParameterivEXT(
GLenum target, GLenum pname, GLint* params) = 0;
virtual void GetShaderiv(GLuint shader, GLenum pname, GLint* params) = 0;
// TODO(gman): Implement this
virtual void GetShaderInfoLog(
GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) = 0;
virtual void GetShaderPrecisionFormat(
GLenum shadertype, GLenum precisiontype, GLint* range,
GLint* precision) = 0;
// TODO(gman): Implement this
virtual void GetShaderSource(
GLuint shader, GLsizei bufsize, GLsizei* length, char* source) = 0;
virtual const GLubyte* GetString(GLenum name) = 0;
virtual void GetTexParameterfv(
GLenum target, GLenum pname, GLfloat* params) = 0;
virtual void GetTexParameteriv(
GLenum target, GLenum pname, GLint* params) = 0;
virtual void GetUniformfv(
GLuint program, GLint location, GLfloat* params) = 0;
virtual void GetUniformiv(GLuint program, GLint location, GLint* params) = 0;
virtual GLint GetUniformLocation(GLuint program, const char* name) = 0;
virtual void GetVertexAttribfv(
GLuint index, GLenum pname, GLfloat* params) = 0;
virtual void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params) = 0;
virtual void GetVertexAttribPointerv(
GLuint index, GLenum pname, void** pointer) = 0;
virtual void Hint(GLenum target, GLenum mode) = 0;
virtual GLboolean IsBuffer(GLuint buffer) = 0;
virtual GLboolean IsEnabled(GLenum cap) = 0;
virtual GLboolean IsFramebufferEXT(GLuint framebuffer) = 0;
virtual GLboolean IsProgram(GLuint program) = 0;
virtual GLboolean IsRenderbufferEXT(GLuint renderbuffer) = 0;
virtual GLboolean IsShader(GLuint shader) = 0;
virtual GLboolean IsTexture(GLuint texture) = 0;
virtual void LineWidth(GLfloat width) = 0;
virtual void LinkProgram(GLuint program) = 0;
virtual void PixelStorei(GLenum pname, GLint param) = 0;
virtual void PolygonOffset(GLfloat factor, GLfloat units) = 0;
virtual void ReadPixels(
GLint x, GLint y, GLsizei width, GLsizei height, GLenum format,
GLenum type, void* pixels) = 0;
virtual void RenderbufferStorageEXT(
GLenum target, GLenum internalformat, GLsizei width, GLsizei height) = 0;
virtual void SampleCoverage(GLclampf value, GLboolean invert) = 0;
virtual void Scissor(GLint x, GLint y, GLsizei width, GLsizei height) = 0;
virtual void ShaderSource(
GLuint shader, GLsizei count, const char** str, const
GLint* length) = 0;
virtual void StencilFunc(GLenum func, GLint ref, GLuint mask) = 0;
virtual void StencilFuncSeparate(
GLenum face, GLenum func, GLint ref, GLuint mask) = 0;
virtual void StencilMask(GLuint mask) = 0;
virtual void StencilMaskSeparate(GLenum face, GLuint mask) = 0;
virtual void StencilOp(GLenum fail, GLenum zfail, GLenum zpass) = 0;
virtual void StencilOpSeparate(
GLenum face, GLenum fail, GLenum zfail, GLenum zpass) = 0;
virtual void TexImage2D(
GLenum target, GLint level, GLint internalformat, GLsizei width,
GLsizei height, GLint border, GLenum format, GLenum type,
const void* pixels) = 0;
virtual void TexParameterf(GLenum target, GLenum pname, GLfloat param) = 0;
virtual void TexParameterfv(
GLenum target, GLenum pname, const GLfloat* params) = 0;
virtual void TexParameteri(GLenum target, GLenum pname, GLint param) = 0;
virtual void TexParameteriv(
GLenum target, GLenum pname, const GLint* params) = 0;
virtual void TexSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type, const void* pixels) = 0;
virtual void Uniform1f(GLint location, GLfloat x) = 0;
virtual void Uniform1fv(GLint location, GLsizei count, const GLfloat* v) = 0;
virtual void Uniform1i(GLint location, GLint x) = 0;
virtual void Uniform1iv(GLint location, GLsizei count, const GLint* v) = 0;
virtual void Uniform2f(GLint location, GLfloat x, GLfloat y) = 0;
virtual void Uniform2fv(GLint location, GLsizei count, const GLfloat* v) = 0;
virtual void Uniform2i(GLint location, GLint x, GLint y) = 0;
virtual void Uniform2iv(GLint location, GLsizei count, const GLint* v) = 0;
virtual void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) = 0;
virtual void Uniform3fv(GLint location, GLsizei count, const GLfloat* v) = 0;
virtual void Uniform3i(GLint location, GLint x, GLint y, GLint z) = 0;
virtual void Uniform3iv(GLint location, GLsizei count, const GLint* v) = 0;
virtual void Uniform4f(
GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0;
virtual void Uniform4fv(GLint location, GLsizei count, const GLfloat* v) = 0;
virtual void Uniform4i(
GLint location, GLint x, GLint y, GLint z, GLint w) = 0;
virtual void Uniform4iv(GLint location, GLsizei count, const GLint* v) = 0;
virtual void UniformMatrix2fv(
GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value) = 0;
virtual void UniformMatrix3fv(
GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value) = 0;
virtual void UniformMatrix4fv(
GLint location, GLsizei count, GLboolean transpose,
const GLfloat* value) = 0;
virtual void UseProgram(GLuint program) = 0;
virtual void ValidateProgram(GLuint program) = 0;
virtual void VertexAttrib1f(GLuint indx, GLfloat x) = 0;
virtual void VertexAttrib1fv(GLuint indx, const GLfloat* values) = 0;
virtual void VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) = 0;
virtual void VertexAttrib2fv(GLuint indx, const GLfloat* values) = 0;
virtual void VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) = 0;
virtual void VertexAttrib3fv(GLuint indx, const GLfloat* values) = 0;
virtual void VertexAttrib4f(
GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0;
virtual void VertexAttrib4fv(GLuint indx, const GLfloat* values) = 0;
virtual void VertexAttribPointer(
GLuint indx, GLint size, GLenum type, GLboolean normalized,
GLsizei stride, const void* ptr) = 0;
virtual void Viewport(GLint x, GLint y, GLsizei width, GLsizei height) = 0;
virtual void SwapBuffers() = 0;
private:
static GLInterface* interface_;
};
} // namespace gles2
#define GL_IFACE_GET_FUN(name) ::gles2::GLInterface::GetGLInterface()->name
#define glActiveTexture GL_IFACE_GET_FUN(ActiveTexture)
#define glAttachShader GL_IFACE_GET_FUN(AttachShader)
#define glBindAttribLocation GL_IFACE_GET_FUN(BindAttribLocation)
#define glBindBuffer GL_IFACE_GET_FUN(BindBuffer)
#define glBindFramebufferEXT GL_IFACE_GET_FUN(BindFramebufferEXT)
#define glBindRenderbufferEXT GL_IFACE_GET_FUN(BindRenderbufferEXT)
#define glBindTexture GL_IFACE_GET_FUN(BindTexture)
#define glBlendColor GL_IFACE_GET_FUN(BlendColor)
#define glBlendEquation GL_IFACE_GET_FUN(BlendEquation)
#define glBlendEquationSeparate GL_IFACE_GET_FUN(BlendEquationSeparate)
#define glBlendFunc GL_IFACE_GET_FUN(BlendFunc)
#define glBlendFuncSeparate GL_IFACE_GET_FUN(BlendFuncSeparate)
#define glBufferData GL_IFACE_GET_FUN(BufferData)
#define glBufferSubData GL_IFACE_GET_FUN(BufferSubData)
#define glCheckFramebufferStatusEXT GL_IFACE_GET_FUN(CheckFramebufferStatusEXT)
#define glClear GL_IFACE_GET_FUN(Clear)
#define glClearColor GL_IFACE_GET_FUN(ClearColor)
#define glClearDepth GL_IFACE_GET_FUN(ClearDepth)
#define glClearStencil GL_IFACE_GET_FUN(ClearStencil)
#define glColorMask GL_IFACE_GET_FUN(ColorMask)
#define glCompileShader GL_IFACE_GET_FUN(CompileShader)
#define glCompressedTexImage2D GL_IFACE_GET_FUN(CompressedTexImage2D)
#define glCompressedTexSubImage2D GL_IFACE_GET_FUN(CompressedTexSubImage2D)
#define glCopyTexImage2D GL_IFACE_GET_FUN(CopyTexImage2D)
#define glCopyTexSubImage2D GL_IFACE_GET_FUN(CopyTexSubImage2D)
#define glCreateProgram GL_IFACE_GET_FUN(CreateProgram)
#define glCreateShader GL_IFACE_GET_FUN(CreateShader)
#define glCullFace GL_IFACE_GET_FUN(CullFace)
#define glDeleteBuffersARB GL_IFACE_GET_FUN(DeleteBuffersARB)
#define glDeleteFramebuffersEXT GL_IFACE_GET_FUN(DeleteFramebuffersEXT)
#define glDeleteProgram GL_IFACE_GET_FUN(DeleteProgram)
#define glDeleteRenderbuffersEXT GL_IFACE_GET_FUN(DeleteRenderbuffersEXT)
#define glDeleteShader GL_IFACE_GET_FUN(DeleteShader)
#define glDeleteTextures GL_IFACE_GET_FUN(DeleteTextures)
#define glDepthFunc GL_IFACE_GET_FUN(DepthFunc)
#define glDepthMask GL_IFACE_GET_FUN(DepthMask)
#define glDepthRange GL_IFACE_GET_FUN(DepthRange)
#define glDetachShader GL_IFACE_GET_FUN(DetachShader)
#define glDisable GL_IFACE_GET_FUN(Disable)
#define glDisableVertexAttribArray GL_IFACE_GET_FUN(DisableVertexAttribArray)
#define glDrawArrays GL_IFACE_GET_FUN(DrawArrays)
#define glDrawElements GL_IFACE_GET_FUN(DrawElements)
#define glEnable GL_IFACE_GET_FUN(Enable)
#define glEnableVertexAttribArray GL_IFACE_GET_FUN(EnableVertexAttribArray)
#define glFinish GL_IFACE_GET_FUN(Finish)
#define glFlush GL_IFACE_GET_FUN(Flush)
#define glFramebufferRenderbufferEXT \
GL_IFACE_GET_FUN(FramebufferRenderbufferEXT)
#define glFramebufferTexture2DEXT GL_IFACE_GET_FUN(FramebufferTexture2DEXT)
#define glFrontFace GL_IFACE_GET_FUN(FrontFace)
#define glGenBuffersARB GL_IFACE_GET_FUN(GenBuffersARB)
#define glGenerateMipmapEXT GL_IFACE_GET_FUN(GenerateMipmapEXT)
#define glGenFramebuffersEXT GL_IFACE_GET_FUN(GenFramebuffersEXT)
#define glGenRenderbuffersEXT GL_IFACE_GET_FUN(GenRenderbuffersEXT)
#define glGenTextures GL_IFACE_GET_FUN(GenTextures)
#define glGetActiveAttrib GL_IFACE_GET_FUN(GetActiveAttrib)
#define glGetActiveUniform GL_IFACE_GET_FUN(GetActiveUniform)
#define glGetAttachedShaders GL_IFACE_GET_FUN(GetAttachedShaders)
#define glGetAttribLocation GL_IFACE_GET_FUN(GetAttribLocation)
#define glGetBooleanv GL_IFACE_GET_FUN(GetBooleanv)
#define glGetBufferParameteriv GL_IFACE_GET_FUN(GetBufferParameteriv)
#define glGetError GL_IFACE_GET_FUN(GetError)
#define glGetFloatv GL_IFACE_GET_FUN(GetFloatv)
#define glGetFramebufferAttachmentParameterivEXT \
GL_IFACE_GET_FUN(GetFramebufferAttachmentParameterivEXT)
#define glGetIntegerv GL_IFACE_GET_FUN(GetIntegerv)
#define glGetProgramiv GL_IFACE_GET_FUN(GetProgramiv)
#define glGetProgramInfoLog GL_IFACE_GET_FUN(GetProgramInfoLog)
#define glGetRenderbufferParameterivEXT \
GL_IFACE_GET_FUN(GetRenderbufferParameterivEXT)
#define glGetShaderiv GL_IFACE_GET_FUN(GetShaderiv)
#define glGetShaderInfoLog GL_IFACE_GET_FUN(GetShaderInfoLog)
#define glGetShaderPrecisionFormat GL_IFACE_GET_FUN(GetShaderPrecisionFormat)
#define glGetShaderSource GL_IFACE_GET_FUN(GetShaderSource)
#define glGetString GL_IFACE_GET_FUN(GetString)
#define glGetTexParameterfv GL_IFACE_GET_FUN(GetTexParameterfv)
#define glGetTexParameteriv GL_IFACE_GET_FUN(GetTexParameteriv)
#define glGetUniformfv GL_IFACE_GET_FUN(GetUniformfv)
#define glGetUniformiv GL_IFACE_GET_FUN(GetUniformiv)
#define glGetUniformLocation GL_IFACE_GET_FUN(GetUniformLocation)
#define glGetVertexAttribfv GL_IFACE_GET_FUN(GetVertexAttribfv)
#define glGetVertexAttribiv GL_IFACE_GET_FUN(GetVertexAttribiv)
#define glGetVertexAttribPointerv GL_IFACE_GET_FUN(GetVertexAttribPointerv)
#define glHint GL_IFACE_GET_FUN(Hint)
#define glIsBuffer GL_IFACE_GET_FUN(IsBuffer)
#define glIsEnabled GL_IFACE_GET_FUN(IsEnabled)
#define glIsFramebufferEXT GL_IFACE_GET_FUN(IsFramebufferEXT)
#define glIsProgram GL_IFACE_GET_FUN(IsProgram)
#define glIsRenderbufferEXT GL_IFACE_GET_FUN(IsRenderbufferEXT)
#define glIsShader GL_IFACE_GET_FUN(IsShader)
#define glIsTexture GL_IFACE_GET_FUN(IsTexture)
#define glLineWidth GL_IFACE_GET_FUN(LineWidth)
#define glLinkProgram GL_IFACE_GET_FUN(LinkProgram)
#define glPixelStorei GL_IFACE_GET_FUN(PixelStorei)
#define glPolygonOffset GL_IFACE_GET_FUN(PolygonOffset)
#define glReadPixels GL_IFACE_GET_FUN(ReadPixels)
#define glReleaseShaderCompiler GL_IFACE_GET_FUN(ReleaseShaderCompiler)
#define glRenderbufferStorageEXT GL_IFACE_GET_FUN(RenderbufferStorageEXT)
#define glSampleCoverage GL_IFACE_GET_FUN(SampleCoverage)
#define glScissor GL_IFACE_GET_FUN(Scissor)
#define glShaderBinary GL_IFACE_GET_FUN(ShaderBinary)
#define glShaderSource GL_IFACE_GET_FUN(ShaderSource)
#define glStencilFunc GL_IFACE_GET_FUN(StencilFunc)
#define glStencilFuncSeparate GL_IFACE_GET_FUN(StencilFuncSeparate)
#define glStencilMask GL_IFACE_GET_FUN(StencilMask)
#define glStencilMaskSeparate GL_IFACE_GET_FUN(StencilMaskSeparate)
#define glStencilOp GL_IFACE_GET_FUN(StencilOp)
#define glStencilOpSeparate GL_IFACE_GET_FUN(StencilOpSeparate)
#define glTexImage2D GL_IFACE_GET_FUN(TexImage2D)
#define glTexParameterf GL_IFACE_GET_FUN(TexParameterf)
#define glTexParameterfv GL_IFACE_GET_FUN(TexParameterfv)
#define glTexParameteri GL_IFACE_GET_FUN(TexParameteri)
#define glTexParameteriv GL_IFACE_GET_FUN(TexParameteriv)
#define glTexSubImage2D GL_IFACE_GET_FUN(TexSubImage2D)
#define glUniform1f GL_IFACE_GET_FUN(Uniform1f)
#define glUniform1fv GL_IFACE_GET_FUN(Uniform1fv)
#define glUniform1i GL_IFACE_GET_FUN(Uniform1i)
#define glUniform1iv GL_IFACE_GET_FUN(Uniform1iv)
#define glUniform2f GL_IFACE_GET_FUN(Uniform2f)
#define glUniform2fv GL_IFACE_GET_FUN(Uniform2fv)
#define glUniform2i GL_IFACE_GET_FUN(Uniform2i)
#define glUniform2iv GL_IFACE_GET_FUN(Uniform2iv)
#define glUniform3f GL_IFACE_GET_FUN(Uniform3f)
#define glUniform3fv GL_IFACE_GET_FUN(Uniform3fv)
#define glUniform3i GL_IFACE_GET_FUN(Uniform3i)
#define glUniform3iv GL_IFACE_GET_FUN(Uniform3iv)
#define glUniform4f GL_IFACE_GET_FUN(Uniform4f)
#define glUniform4fv GL_IFACE_GET_FUN(Uniform4fv)
#define glUniform4i GL_IFACE_GET_FUN(Uniform4i)
#define glUniform4iv GL_IFACE_GET_FUN(Uniform4iv)
#define glUniformMatrix2fv GL_IFACE_GET_FUN(UniformMatrix2fv)
#define glUniformMatrix3fv GL_IFACE_GET_FUN(UniformMatrix3fv)
#define glUniformMatrix4fv GL_IFACE_GET_FUN(UniformMatrix4fv)
#define glUseProgram GL_IFACE_GET_FUN(UseProgram)
#define glValidateProgram GL_IFACE_GET_FUN(ValidateProgram)
#define glVertexAttrib1f GL_IFACE_GET_FUN(VertexAttrib1f)
#define glVertexAttrib1fv GL_IFACE_GET_FUN(VertexAttrib1fv)
#define glVertexAttrib2f GL_IFACE_GET_FUN(VertexAttrib2f)
#define glVertexAttrib2fv GL_IFACE_GET_FUN(VertexAttrib2fv)
#define glVertexAttrib3f GL_IFACE_GET_FUN(VertexAttrib3f)
#define glVertexAttrib3fv GL_IFACE_GET_FUN(VertexAttrib3fv)
#define glVertexAttrib4f GL_IFACE_GET_FUN(VertexAttrib4f)
#define glVertexAttrib4fv GL_IFACE_GET_FUN(VertexAttrib4fv)
#define glVertexAttribPointer GL_IFACE_GET_FUN(VertexAttribPointer)
#define glViewport GL_IFACE_GET_FUN(Viewport)
#endif // GPU_COMMAND_BUFFER_SERVICE_GL_INTERFACE_H_