diff options
Diffstat (limited to 'ui/gl/gl_interface.h')
-rw-r--r-- | ui/gl/gl_interface.h | 640 |
1 files changed, 640 insertions, 0 deletions
diff --git a/ui/gl/gl_interface.h b/ui/gl/gl_interface.h new file mode 100644 index 0000000..db120b6 --- /dev/null +++ b/ui/gl/gl_interface.h @@ -0,0 +1,640 @@ +// Copyright (c) 2012 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. + +#ifndef UI_GL_GL_INTERFACE_H_ +#define UI_GL_GL_INTERFACE_H_ +#pragma once + +// 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. + +#include "ui/gl/gl_bindings.h" + +namespace gfx { + +class GL_EXPORT 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 BeginQuery(GLenum target, GLuint id) = 0; + + virtual void BeginQueryARB(GLenum target, GLuint id) = 0; + + virtual void BindAttribLocation(GLuint program, + GLuint index, + const char* name) = 0; + + virtual void BindBuffer(GLenum target, GLuint buffer) = 0; + + virtual void BindFragDataLocationIndexed(GLuint program, + GLuint colorNumber, + GLuint index, + const char* name) = 0; + + virtual void BindFragDataLocation(GLuint program, + GLuint colorNumber, + const char* name) = 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 BlitFramebufferANGLE( + GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter) = 0; + + virtual void BlitFramebufferEXT( + GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter) = 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(GLclampd depth) = 0; + + virtual void ClearDepthf(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 DeleteQueries(GLsizei n, const GLuint* ids) = 0; + + virtual void DeleteQueriesARB(GLsizei n, const GLuint* ids) = 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(GLclampd zNear, GLclampd zFar) = 0; + + virtual void DepthRangef(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 DrawBuffer(GLenum mode) = 0; + + virtual void DrawBuffersARB(GLsizei n, const GLenum* bufs) = 0; + + virtual void DrawElements(GLenum mode, + GLsizei count, + GLenum type, + const void* indices) = 0; + + virtual void EGLImageTargetTexture2DOES( + GLenum target, GLeglImageOES image) = 0; + + virtual void EGLImageTargetRenderbufferStorageOES( + GLenum target, GLeglImageOES image) = 0; + + virtual void Enable(GLenum cap) = 0; + + virtual void EnableVertexAttribArray(GLuint index) = 0; + + virtual void EndQuery(GLenum target) = 0; + + virtual void EndQueryARB(GLenum target) = 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 GenQueries(GLsizei n, GLuint* ids) = 0; + + virtual void GenQueriesARB(GLsizei n, GLuint* ids) = 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 GetQueryiv(GLenum target, GLenum pname, GLint* params) = 0; + + virtual void GetQueryivARB(GLenum target, GLenum pname, GLint* params) = 0; + + virtual void GetQueryObjecti64v(GLuint id, GLenum pname, GLint64* params) = 0; + + virtual void GetQueryObjectiv(GLuint id, GLenum pname, GLint* params) = 0; + + virtual void GetQueryObjectui64v(GLuint id, + GLenum pname, + GLuint64* params) = 0; + + virtual void GetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params) = 0; + + virtual void GetQueryObjectuivARB(GLuint id, + GLenum pname, + GLuint* params) = 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 GetTexLevelParameterfv(GLenum target, + GLint level, + GLenum pname, + GLfloat* params) = 0; + + virtual void GetTexLevelParameteriv(GLenum target, + GLint level, + GLenum pname, + GLint* params) = 0; + + virtual void GetTexParameterfv(GLenum target, + GLenum pname, + GLfloat* params) = 0; + + virtual void GetTexParameteriv(GLenum target, + GLenum pname, + GLint* params) = 0; + + virtual void GetTranslatedShaderSourceANGLE(GLuint shader, + GLsizei bufsize, + GLsizei* length, + char* source) = 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 IsQueryARB(GLuint query) = 0; + + virtual GLboolean IsRenderbufferEXT(GLuint renderbuffer) = 0; + + virtual GLboolean IsShader(GLuint shader) = 0; + + virtual GLboolean IsTexture(GLuint texture) = 0; + + virtual void* MapBuffer(GLenum target, GLenum access) = 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 QueryCounter(GLuint id, GLenum target) = 0; + + virtual void ReadBuffer(GLenum src) = 0; + + virtual void ReadPixels(GLint x, GLint y, + GLsizei width, GLsizei height, + GLenum format, + GLenum type, + void* pixels) = 0; + + virtual void ReleaseShaderCompiler(void) = 0; + + virtual void RenderbufferStorageEXT(GLenum target, + GLenum internalformat, + GLsizei width, GLsizei height) = 0; + + virtual void RenderbufferStorageMultisampleANGLE(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) = 0; + + virtual void RenderbufferStorageMultisampleEXT(GLenum target, + GLsizei samples, + 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 ShaderBinary(GLsizei n, + const GLuint* shaders, + GLenum binaryformat, + const void* binary, + GLsizei length) = 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 TexStorage2DEXT(GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height) = 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 GLboolean UnmapBuffer(GLenum target) = 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; + + virtual GLuint GetMaxValueInBufferCHROMIUM(GLuint buffer_id, + GLsizei count, + GLenum type, + GLuint offset) = 0; + + virtual void GenFencesNV(GLsizei n, GLuint *fences) = 0; + + virtual void DeleteFencesNV(GLsizei n, const GLuint *fences) = 0; + + virtual void SetFenceNV(GLuint fence, GLenum condition) = 0; + + virtual GLboolean TestFenceNV(GLuint fence) = 0; + + virtual void FinishFenceNV(GLuint fence) = 0; + + virtual GLboolean IsFenceNV(GLuint fence) = 0; + + virtual void GetFenceivNV(GLuint fence, GLenum pname, GLint *params) = 0; + + virtual void SetSurfaceCHROMIUM(GLuint id) = 0; + + virtual GLenum GetGraphicsResetStatusARB() = 0; + + virtual GLsync FenceSync(GLenum condition, GLbitfield flags) = 0; + + virtual void DeleteSync(GLsync sync) = 0; + + virtual void GetSynciv(GLsync sync, + GLenum pname, + GLsizei bufSize, + GLsizei* length, + GLint* values) = 0; + + virtual void DrawArraysInstancedANGLE(GLenum mode, + GLint first, + GLsizei count, + GLsizei primcount) = 0; + + virtual void DrawElementsInstancedANGLE(GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount) = 0; + + virtual void VertexAttribDivisorANGLE(GLuint index, GLuint divisor) = 0; + + private: + static GLInterface* interface_; +}; + +} // namespace gfx + +#endif // UI_GL_GL_INTERFACE_H_ |