|  | /* | 
|  | * Copyright 2013 Google Inc. | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #ifndef GrGLNoOpInterface_DEFINED | 
|  | #define GrGLNoOpInterface_DEFINED | 
|  |  | 
|  | #include "gl/GrGLDefines.h" | 
|  | #include "gl/GrGLFunctions.h" | 
|  |  | 
|  | // These are constants/functions that are common to the Null and Debug GL interface implementations. | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendColor(GrGLclampf red, | 
|  | GrGLclampf green, | 
|  | GrGLclampf blue, | 
|  | GrGLclampf alpha); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocation(GrGLuint program, | 
|  | GrGLuint colorNumber, | 
|  | const GrGLchar* name); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendFunc(GrGLenum sfactor, | 
|  | GrGLenum dfactor); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBufferSubData(GrGLenum target, | 
|  | GrGLintptr offset, | 
|  | GrGLsizeiptr size, | 
|  | const GrGLvoid* data); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClear(GrGLbitfield mask); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearColor(GrGLclampf red, | 
|  | GrGLclampf green, | 
|  | GrGLclampf blue, | 
|  | GrGLclampf alpha); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearStencil(GrGLint s); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLColorMask(GrGLboolean red, | 
|  | GrGLboolean green, | 
|  | GrGLboolean blue, | 
|  | GrGLboolean alpha); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompileShader(GrGLuint shader); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompressedTexImage2D(GrGLenum target, | 
|  | GrGLint level, | 
|  | GrGLenum internalformat, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height, | 
|  | GrGLint border, | 
|  | GrGLsizei imageSize, | 
|  | const GrGLvoid* data); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompressedTexSubImage2D(GrGLenum target, | 
|  | GrGLint level, | 
|  | GrGLint xoffset, | 
|  | GrGLint yoffset, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height, | 
|  | GrGLenum format, | 
|  | GrGLsizei imageSize, | 
|  | const GrGLvoid* data); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCopyTexSubImage2D(GrGLenum target, | 
|  | GrGLint level, | 
|  | GrGLint xoffset, | 
|  | GrGLint yoffset, | 
|  | GrGLint x, | 
|  | GrGLint y, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCullFace(GrGLenum mode); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDepthMask(GrGLboolean flag); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisable(GrGLenum cap); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableVertexAttribArray(GrGLuint index); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawArrays(GrGLenum mode, GrGLint first, GrGLsizei count); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffer(GrGLenum mode); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffers(GrGLsizei n, | 
|  | const GrGLenum* bufs); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawElements(GrGLenum mode, | 
|  | GrGLsizei count, | 
|  | GrGLenum type, | 
|  | const GrGLvoid* indices); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnable(GrGLenum cap); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableVertexAttribArray(GrGLuint index); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEndQuery(GrGLenum target); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFinish(); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFlush(); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFrontFace(GrGLenum mode); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLMatrixLoadf(GrGLenum, const GrGLfloat*); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLMatrixLoadIdentity(GrGLenum); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLineWidth(GrGLfloat width); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLinkProgram(GrGLuint program); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLQueryCounter(GrGLuint id, | 
|  | GrGLenum target); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLReadBuffer(GrGLenum src); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLScissor(GrGLint x, | 
|  | GrGLint y, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLShaderSource(GrGLuint shader, | 
|  | GrGLsizei count, | 
|  | #if GR_GL_USE_NEW_SHADER_SOURCE_SIGNATURE | 
|  | const char* const * str, | 
|  | #else | 
|  | const char** str, | 
|  | #endif | 
|  | const GrGLint* length); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFunc(GrGLenum func, GrGLint ref, GrGLuint mask); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFuncSeparate(GrGLenum face, | 
|  | GrGLenum func, | 
|  | GrGLint ref, | 
|  | GrGLuint mask); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMask(GrGLuint mask); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMaskSeparate(GrGLenum face, GrGLuint mask); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOp(GrGLenum fail, GrGLenum zfail, GrGLenum zpass); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOpSeparate(GrGLenum face, | 
|  | GrGLenum fail, | 
|  | GrGLenum zfail, | 
|  | GrGLenum zpass); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexImage2D(GrGLenum target, | 
|  | GrGLint level, | 
|  | GrGLint internalformat, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height, | 
|  | GrGLint border, | 
|  | GrGLenum format, | 
|  | GrGLenum type, | 
|  | const GrGLvoid* pixels); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteri(GrGLenum target, GrGLenum pname, GrGLint param); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteriv(GrGLenum target, | 
|  | GrGLenum pname, | 
|  | const GrGLint* params); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexStorage2D(GrGLenum target, | 
|  | GrGLsizei levels, | 
|  | GrGLenum internalformat, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDiscardFramebuffer(GrGLenum target, | 
|  | GrGLsizei numAttachments, | 
|  | const GrGLenum* attachments); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexSubImage2D(GrGLenum target, | 
|  | GrGLint level, | 
|  | GrGLint xoffset, | 
|  | GrGLint yoffset, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height, | 
|  | GrGLenum format, | 
|  | GrGLenum type, | 
|  | const GrGLvoid* pixels); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1f(GrGLint location, GrGLfloat v0); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1i(GrGLint location, GrGLint v0); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1fv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | const GrGLfloat* v); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1iv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | const GrGLint* v); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2f(GrGLint location, | 
|  | GrGLfloat v0, | 
|  | GrGLfloat v1); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2i(GrGLint location, GrGLint v0, GrGLint v1); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2fv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | const GrGLfloat* v); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2iv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | const GrGLint* v); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3f(GrGLint location, | 
|  | GrGLfloat v0, | 
|  | GrGLfloat v1, | 
|  | GrGLfloat v2); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3i(GrGLint location, | 
|  | GrGLint v0, | 
|  | GrGLint v1, | 
|  | GrGLint v2); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3fv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | const GrGLfloat* v); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3iv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | const GrGLint* v); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4f(GrGLint location, | 
|  | GrGLfloat v0, | 
|  | GrGLfloat v1, | 
|  | GrGLfloat v2, | 
|  | GrGLfloat v3); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4i(GrGLint location, | 
|  | GrGLint v0, | 
|  | GrGLint v1, | 
|  | GrGLint v2, | 
|  | GrGLint v3); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4fv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | const GrGLfloat* v); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4iv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | const GrGLint* v); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix2fv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | GrGLboolean transpose, | 
|  | const GrGLfloat* value); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix3fv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | GrGLboolean transpose, | 
|  | const GrGLfloat* value); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix4fv(GrGLint location, | 
|  | GrGLsizei count, | 
|  | GrGLboolean transpose, | 
|  | const GrGLfloat* value); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib4fv(GrGLuint indx, const GrGLfloat* values); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttribPointer(GrGLuint indx, | 
|  | GrGLint size, | 
|  | GrGLenum type, | 
|  | GrGLboolean normalized, | 
|  | GrGLsizei stride, | 
|  | const GrGLvoid* ptr); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLViewport(GrGLint x, | 
|  | GrGLint y, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetFramebufferAttachmentParameteriv(GrGLenum target, | 
|  | GrGLenum attachment, | 
|  | GrGLenum pname, | 
|  | GrGLint* params); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetRenderbufferParameteriv(GrGLenum target, | 
|  | GrGLenum pname, | 
|  | GrGLint* params); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorage(GrGLenum target, | 
|  | GrGLenum internalformat, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorageMultisample(GrGLenum target, | 
|  | GrGLsizei samples, | 
|  | GrGLenum internalformat, | 
|  | GrGLsizei width, | 
|  | GrGLsizei height); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlitFramebuffer(GrGLint srcX0, | 
|  | GrGLint srcY0, | 
|  | GrGLint srcX1, | 
|  | GrGLint srcY1, | 
|  | GrGLint dstX0, | 
|  | GrGLint dstY0, | 
|  | GrGLint dstX1, | 
|  | GrGLint dstY1, | 
|  | GrGLbitfield mask, | 
|  | GrGLenum filter); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLResolveMultisampleFramebuffer(); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocationIndexed(GrGLuint program, | 
|  | GrGLuint colorNumber, | 
|  | GrGLuint index, | 
|  | const GrGLchar * name); | 
|  |  | 
|  | GrGLenum GR_GL_FUNCTION_TYPE noOpGLCheckFramebufferStatus(GrGLenum target); | 
|  |  | 
|  | // this function can be used for all glGen*(GLsize i, GLuint*) functions | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGenIds(GrGLsizei n, GrGLuint* ids); | 
|  |  | 
|  | // this function function can be used for all glDelete*(GLsize i, const GLuint*) | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDeleteIds(GrGLsizei n, const GrGLuint* ids); | 
|  |  | 
|  | GrGLenum GR_GL_FUNCTION_TYPE noOpGLGetError(); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetIntegerv(GrGLenum pname, GrGLint* params); | 
|  |  | 
|  | // can be used for both the program and shader info logs | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetInfoLog(GrGLuint program, | 
|  | GrGLsizei bufsize, | 
|  | GrGLsizei* length, | 
|  | char* infolog); | 
|  |  | 
|  | // can be used for both the program and shader params | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetShaderOrProgramiv(GrGLuint program, | 
|  | GrGLenum pname, | 
|  | GrGLint* params); | 
|  |  | 
|  | // Queries on bogus GLs just don't do anything at all. We could potentially make the timers work. | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryiv(GrGLenum GLtarget, | 
|  | GrGLenum pname, | 
|  | GrGLint *params); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjecti64v(GrGLuint id, | 
|  | GrGLenum pname, | 
|  | GrGLint64 *params); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectiv(GrGLuint id, GrGLenum pname, GrGLint *params); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectui64v(GrGLuint id, | 
|  | GrGLenum pname, | 
|  | GrGLuint64 *params); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectuiv(GrGLuint id, | 
|  | GrGLenum pname, | 
|  | GrGLuint *params); | 
|  |  | 
|  | const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetString(GrGLenum name); | 
|  |  | 
|  | const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetStringi(GrGLenum name, GrGLuint i); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetTexLevelParameteriv(GrGLenum target, | 
|  | GrGLint level, | 
|  | GrGLenum pname, | 
|  | GrGLint* params); | 
|  |  | 
|  | GrGLint GR_GL_FUNCTION_TYPE noOpGLGetUniformLocation(GrGLuint program, const char* name); | 
|  |  | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLInsertEventMarker(GrGLsizei length, const char* marker); | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLPushGroupMarker(GrGLsizei length  , const char* marker); | 
|  | GrGLvoid GR_GL_FUNCTION_TYPE noOpGLPopGroupMarker(); | 
|  |  | 
|  | #endif |