/*
* Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "GrGLTestInterface.h"
namespace {
template<typename R, typename... A>
GrGLFunction<R(*)(A...)> bind_to_member(GrGLTestInterface* interface,
R (GrGLTestInterface::*member)(A...)) {
return [interface, member] (A... a) -> R { return (interface->*member)(a...); };
}
} // anonymous namespace
GrGLTestInterface::GrGLTestInterface() {
fFunctions.fActiveTexture = bind_to_member(this, &GrGLTestInterface::activeTexture);
fFunctions.fAttachShader = bind_to_member(this, &GrGLTestInterface::attachShader);
fFunctions.fBeginQuery = bind_to_member(this, &GrGLTestInterface::beginQuery);
fFunctions.fBindAttribLocation = bind_to_member(this, &GrGLTestInterface::bindAttribLocation);
fFunctions.fBindBuffer = bind_to_member(this, &GrGLTestInterface::bindBuffer);
fFunctions.fBindFramebuffer = bind_to_member(this, &GrGLTestInterface::bindFramebuffer);
fFunctions.fBindRenderbuffer = bind_to_member(this, &GrGLTestInterface::bindRenderbuffer);
fFunctions.fBindTexture = bind_to_member(this, &GrGLTestInterface::bindTexture);
fFunctions.fBindFragDataLocation = bind_to_member(this, &GrGLTestInterface::bindFragDataLocation);
fFunctions.fBindFragDataLocationIndexed = bind_to_member(this, &GrGLTestInterface::bindFragDataLocationIndexed);
fFunctions.fBindVertexArray = bind_to_member(this, &GrGLTestInterface::bindVertexArray);
fFunctions.fBlendBarrier = bind_to_member(this, &GrGLTestInterface::blendBarrier);
fFunctions.fBlendColor = bind_to_member(this, &GrGLTestInterface::blendColor);
fFunctions.fBlendEquation = bind_to_member(this, &GrGLTestInterface::blendEquation);
fFunctions.fBlendFunc = bind_to_member(this, &GrGLTestInterface::blendFunc);
fFunctions.fBlitFramebuffer = bind_to_member(this, &GrGLTestInterface::blitFramebuffer);
fFunctions.fBufferData = bind_to_member(this, &GrGLTestInterface::bufferData);
fFunctions.fBufferSubData = bind_to_member(this, &GrGLTestInterface::bufferSubData);
fFunctions.fCheckFramebufferStatus = bind_to_member(this, &GrGLTestInterface::checkFramebufferStatus);
fFunctions.fClear = bind_to_member(this, &GrGLTestInterface::clear);
fFunctions.fClearColor = bind_to_member(this, &GrGLTestInterface::clearColor);
fFunctions.fClearStencil = bind_to_member(this, &GrGLTestInterface::clearStencil);
fFunctions.fColorMask = bind_to_member(this, &GrGLTestInterface::colorMask);
fFunctions.fCompileShader = bind_to_member(this, &GrGLTestInterface::compileShader);
fFunctions.fCompressedTexImage2D = bind_to_member(this, &GrGLTestInterface::compressedTexImage2D);
fFunctions.fCompressedTexSubImage2D = bind_to_member(this, &GrGLTestInterface::compressedTexSubImage2D);
fFunctions.fCopyTexSubImage2D = bind_to_member(this, &GrGLTestInterface::copyTexSubImage2D);
fFunctions.fCreateProgram = bind_to_member(this, &GrGLTestInterface::createProgram);
fFunctions.fCreateShader = bind_to_member(this, &GrGLTestInterface::createShader);
fFunctions.fCullFace = bind_to_member(this, &GrGLTestInterface::cullFace);
fFunctions.fDeleteBuffers = bind_to_member(this, &GrGLTestInterface::deleteBuffers);
fFunctions.fDeleteFramebuffers = bind_to_member(this, &GrGLTestInterface::deleteFramebuffers);
fFunctions.fDeleteProgram = bind_to_member(this, &GrGLTestInterface::deleteProgram);
fFunctions.fDeleteQueries = bind_to_member(this, &GrGLTestInterface::deleteQueries);
fFunctions.fDeleteRenderbuffers = bind_to_member(this, &GrGLTestInterface::deleteRenderbuffers);
fFunctions.fDeleteShader = bind_to_member(this, &GrGLTestInterface::deleteShader);
fFunctions.fDeleteTextures = bind_to_member(this, &GrGLTestInterface::deleteTextures);
fFunctions.fDeleteVertexArrays = bind_to_member(this, &GrGLTestInterface::deleteVertexArrays);
fFunctions.fDepthMask = bind_to_member(this, &GrGLTestInterface::depthMask);
fFunctions.fDisable = bind_to_member(this, &GrGLTestInterface::disable);
fFunctions.fDisableVertexAttribArray = bind_to_member(this, &GrGLTestInterface::disableVertexAttribArray);
fFunctions.fDrawArrays = bind_to_member(this, &GrGLTestInterface::drawArrays);
fFunctions.fDrawArraysInstanced = bind_to_member(this, &GrGLTestInterface::drawArraysInstanced);
fFunctions.fDrawArraysIndirect = bind_to_member(this, &GrGLTestInterface::drawArraysIndirect);
fFunctions.fDrawBuffer = bind_to_member(this, &GrGLTestInterface::drawBuffer);
fFunctions.fDrawBuffers = bind_to_member(this, &GrGLTestInterface::drawBuffers);
fFunctions.fDrawElements = bind_to_member(this, &GrGLTestInterface::drawElements);
fFunctions.fDrawElementsInstanced = bind_to_member(this, &GrGLTestInterface::drawElementsInstanced);
fFunctions.fDrawElementsIndirect = bind_to_member(this, &GrGLTestInterface::drawElementsIndirect);
fFunctions.fDrawRangeElements = bind_to_member(this, &GrGLTestInterface::drawRangeElements);
fFunctions.fEnable = bind_to_member(this, &GrGLTestInterface::enable);
fFunctions.fEnableVertexAttribArray = bind_to_member(this, &GrGLTestInterface::enableVertexAttribArray);
fFunctions.fEndQuery = bind_to_member(this, &GrGLTestInterface::endQuery);
fFunctions.fFinish = bind_to_member(this, &GrGLTestInterface::finish);
fFunctions.fFlush = bind_to_member(this, &GrGLTestInterface::flush);
fFunctions.fFlushMappedBufferRange = bind_to_member(this, &GrGLTestInterface::flushMappedBufferRange);
fFunctions.fFramebufferRenderbuffer = bind_to_member(this, &GrGLTestInterface::framebufferRenderbuffer);
fFunctions.fFramebufferTexture2D = bind_to_member(this, &GrGLTestInterface::framebufferTexture2D);
fFunctions.fFramebufferTexture2DMultisample = bind_to_member(this, &GrGLTestInterface::framebufferTexture2DMultisample);
fFunctions.fFrontFace = bind_to_member(this, &GrGLTestInterface::frontFace);
fFunctions.fGenBuffers = bind_to_member(this, &GrGLTestInterface::genBuffers);
fFunctions.fGenFramebuffers = bind_to_member(this, &GrGLTestInterface::genFramebuffers);
fFunctions.fGenerateMipmap = bind_to_member(this, &GrGLTestInterface::generateMipmap);
fFunctions.fGenQueries = bind_to_member(this, &GrGLTestInterface::genQueries);
fFunctions.fGenRenderbuffers = bind_to_member(this, &GrGLTestInterface::genRenderbuffers);
fFunctions.fGenTextures = bind_to_member(this, &GrGLTestInterface::genTextures);
fFunctions.fGenVertexArrays = bind_to_member(this, &GrGLTestInterface::genVertexArrays);
fFunctions.fGetBufferParameteriv = bind_to_member(this, &GrGLTestInterface::getBufferParameteriv);
fFunctions.fGetError = bind_to_member(this, &GrGLTestInterface::getError);
fFunctions.fGetFramebufferAttachmentParameteriv = bind_to_member(this, &GrGLTestInterface::getFramebufferAttachmentParameteriv);
fFunctions.fGetIntegerv = bind_to_member(this, &GrGLTestInterface::getIntegerv);
fFunctions.fGetMultisamplefv = bind_to_member(this, &GrGLTestInterface::getMultisamplefv);
fFunctions.fGetProgramInfoLog = bind_to_member(this, &GrGLTestInterface::getProgramInfoLog);
fFunctions.fGetProgramiv = bind_to_member(this, &GrGLTestInterface::getProgramiv);
fFunctions.fGetQueryiv = bind_to_member(this, &GrGLTestInterface::getQueryiv);
fFunctions.fGetQueryObjecti64v = bind_to_member(this, &GrGLTestInterface::getQueryObjecti64v);
fFunctions.fGetQueryObjectiv = bind_to_member(this, &GrGLTestInterface::getQueryObjectiv);
fFunctions.fGetQueryObjectui64v = bind_to_member(this, &GrGLTestInterface::getQueryObjectui64v);
fFunctions.fGetQueryObjectuiv = bind_to_member(this, &GrGLTestInterface::getQueryObjectuiv);
fFunctions.fGetRenderbufferParameteriv = bind_to_member(this, &GrGLTestInterface::getRenderbufferParameteriv);
fFunctions.fGetShaderInfoLog = bind_to_member(this, &GrGLTestInterface::getShaderInfoLog);
fFunctions.fGetShaderiv = bind_to_member(this, &GrGLTestInterface::getShaderiv);
fFunctions.fGetShaderPrecisionFormat = bind_to_member(this, &GrGLTestInterface::getShaderPrecisionFormat);
fFunctions.fGetString = bind_to_member(this, &GrGLTestInterface::getString);
fFunctions.fGetStringi = bind_to_member(this, &GrGLTestInterface::getStringi);
fFunctions.fGetTexLevelParameteriv = bind_to_member(this, &GrGLTestInterface::getTexLevelParameteriv);
fFunctions.fGetUniformLocation = bind_to_member(this, &GrGLTestInterface::getUniformLocation);
fFunctions.fInsertEventMarker = bind_to_member(this, &GrGLTestInterface::insertEventMarker);
fFunctions.fInvalidateBufferData = bind_to_member(this, &GrGLTestInterface::invalidateBufferData);
fFunctions.fInvalidateBufferSubData = bind_to_member(this, &GrGLTestInterface::invalidateBufferSubData);
fFunctions.fInvalidateFramebuffer = bind_to_member(this, &GrGLTestInterface::invalidateFramebuffer);
fFunctions.fInvalidateSubFramebuffer = bind_to_member(this, &GrGLTestInterface::invalidateSubFramebuffer);
fFunctions.fInvalidateTexImage = bind_to_member(this, &GrGLTestInterface::invalidateTexImage);
fFunctions.fInvalidateTexSubImage = bind_to_member(this, &GrGLTestInterface::invalidateTexSubImage);
fFunctions.fIsTexture = bind_to_member(this, &GrGLTestInterface::isTexture);
fFunctions.fLineWidth = bind_to_member(this, &GrGLTestInterface::lineWidth);
fFunctions.fLinkProgram = bind_to_member(this, &GrGLTestInterface::linkProgram);
fFunctions.fMapBuffer = bind_to_member(this, &GrGLTestInterface::mapBuffer);
fFunctions.fMapBufferRange = bind_to_member(this, &GrGLTestInterface::mapBufferRange);
fFunctions.fMapBufferSubData = bind_to_member(this, &GrGLTestInterface::mapBufferSubData);
fFunctions.fMapTexSubImage2D = bind_to_member(this, &GrGLTestInterface::mapTexSubImage2D);
fFunctions.fMinSampleShading = bind_to_member(this, &GrGLTestInterface::minSampleShading);
fFunctions.fPixelStorei = bind_to_member(this, &GrGLTestInterface::pixelStorei);
fFunctions.fPolygonMode = bind_to_member(this, &GrGLTestInterface::polygonMode);
fFunctions.fPopGroupMarker = bind_to_member(this, &GrGLTestInterface::popGroupMarker);
fFunctions.fPushGroupMarker = bind_to_member(this, &GrGLTestInterface::pushGroupMarker);
fFunctions.fQueryCounter = bind_to_member(this, &GrGLTestInterface::queryCounter);
fFunctions.fRasterSamples = bind_to_member(this, &GrGLTestInterface::rasterSamples);
fFunctions.fReadBuffer = bind_to_member(this, &GrGLTestInterface::readBuffer);
fFunctions.fReadPixels = bind_to_member(this, &GrGLTestInterface::readPixels);
fFunctions.fRenderbufferStorage = bind_to_member(this, &GrGLTestInterface::renderbufferStorage);
fFunctions.fRenderbufferStorageMultisample = bind_to_member(this, &GrGLTestInterface::renderbufferStorageMultisample);
fFunctions.fResolveMultisampleFramebuffer = bind_to_member(this, &GrGLTestInterface::resolveMultisampleFramebuffer);
fFunctions.fScissor = bind_to_member(this, &GrGLTestInterface::scissor);
fFunctions.fBindUniformLocation = bind_to_member(this, &GrGLTestInterface::bindUniformLocation);
fFunctions.fShaderSource = bind_to_member(this, &GrGLTestInterface::shaderSource);
fFunctions.fStencilFunc = bind_to_member(this, &GrGLTestInterface::stencilFunc);
fFunctions.fStencilFuncSeparate = bind_to_member(this, &GrGLTestInterface::stencilFuncSeparate);
fFunctions.fStencilMask = bind_to_member(this, &GrGLTestInterface::stencilMask);
fFunctions.fStencilMaskSeparate = bind_to_member(this, &GrGLTestInterface::stencilMaskSeparate);
fFunctions.fStencilOp = bind_to_member(this, &GrGLTestInterface::stencilOp);
fFunctions.fStencilOpSeparate = bind_to_member(this, &GrGLTestInterface::stencilOpSeparate);
fFunctions.fTexBuffer = bind_to_member(this, &GrGLTestInterface::texBuffer);
fFunctions.fTexImage2D = bind_to_member(this, &GrGLTestInterface::texImage2D);
fFunctions.fTexParameteri = bind_to_member(this, &GrGLTestInterface::texParameteri);
fFunctions.fTexParameteriv = bind_to_member(this, &GrGLTestInterface::texParameteriv);
fFunctions.fTexStorage2D = bind_to_member(this, &GrGLTestInterface::texStorage2D);
fFunctions.fDiscardFramebuffer = bind_to_member(this, &GrGLTestInterface::discardFramebuffer);
fFunctions.fTexSubImage2D = bind_to_member(this, &GrGLTestInterface::texSubImage2D);
fFunctions.fTextureBarrier = bind_to_member(this, &GrGLTestInterface::textureBarrier);
fFunctions.fUniform1f = bind_to_member(this, &GrGLTestInterface::uniform1f);
fFunctions.fUniform1i = bind_to_member(this, &GrGLTestInterface::uniform1i);
fFunctions.fUniform1fv = bind_to_member(this, &GrGLTestInterface::uniform1fv);
fFunctions.fUniform1iv = bind_to_member(this, &GrGLTestInterface::uniform1iv);
fFunctions.fUniform2f = bind_to_member(this, &GrGLTestInterface::uniform2f);
fFunctions.fUniform2i = bind_to_member(this, &GrGLTestInterface::uniform2i);
fFunctions.fUniform2fv = bind_to_member(this, &GrGLTestInterface::uniform2fv);
fFunctions.fUniform2iv = bind_to_member(this, &GrGLTestInterface::uniform2iv);
fFunctions.fUniform3f = bind_to_member(this, &GrGLTestInterface::uniform3f);
fFunctions.fUniform3i = bind_to_member(this, &GrGLTestInterface::uniform3i);
fFunctions.fUniform3fv = bind_to_member(this, &GrGLTestInterface::uniform3fv);
fFunctions.fUniform3iv = bind_to_member(this, &GrGLTestInterface::uniform3iv);
fFunctions.fUniform4f = bind_to_member(this, &GrGLTestInterface::uniform4f);
fFunctions.fUniform4i = bind_to_member(this, &GrGLTestInterface::uniform4i);
fFunctions.fUniform4fv = bind_to_member(this, &GrGLTestInterface::uniform4fv);
fFunctions.fUniform4iv = bind_to_member(this, &GrGLTestInterface::uniform4iv);
fFunctions.fUniformMatrix2fv = bind_to_member(this, &GrGLTestInterface::uniformMatrix2fv);
fFunctions.fUniformMatrix3fv = bind_to_member(this, &GrGLTestInterface::uniformMatrix3fv);
fFunctions.fUniformMatrix4fv = bind_to_member(this, &GrGLTestInterface::uniformMatrix4fv);
fFunctions.fUnmapBuffer = bind_to_member(this, &GrGLTestInterface::unmapBuffer);
fFunctions.fUnmapBufferSubData = bind_to_member(this, &GrGLTestInterface::unmapBufferSubData);
fFunctions.fUnmapTexSubImage2D = bind_to_member(this, &GrGLTestInterface::unmapTexSubImage2D);
fFunctions.fUseProgram = bind_to_member(this, &GrGLTestInterface::useProgram);
fFunctions.fVertexAttrib1f = bind_to_member(this, &GrGLTestInterface::vertexAttrib1f);
fFunctions.fVertexAttrib2fv = bind_to_member(this, &GrGLTestInterface::vertexAttrib2fv);
fFunctions.fVertexAttrib3fv = bind_to_member(this, &GrGLTestInterface::vertexAttrib3fv);
fFunctions.fVertexAttrib4fv = bind_to_member(this, &GrGLTestInterface::vertexAttrib4fv);
fFunctions.fVertexAttribDivisor = bind_to_member(this, &GrGLTestInterface::vertexAttribDivisor);
fFunctions.fVertexAttribIPointer = bind_to_member(this, &GrGLTestInterface::vertexAttribIPointer);
fFunctions.fVertexAttribPointer = bind_to_member(this, &GrGLTestInterface::vertexAttribPointer);
fFunctions.fViewport = bind_to_member(this, &GrGLTestInterface::viewport);
fFunctions.fMatrixLoadf = bind_to_member(this, &GrGLTestInterface::matrixLoadf);
fFunctions.fMatrixLoadIdentity = bind_to_member(this, &GrGLTestInterface::matrixLoadIdentity);
fFunctions.fPathCommands = bind_to_member(this, &GrGLTestInterface::pathCommands);
fFunctions.fPathParameteri = bind_to_member(this, &GrGLTestInterface::pathParameteri);
fFunctions.fPathParameterf = bind_to_member(this, &GrGLTestInterface::pathParameterf);
fFunctions.fGenPaths = bind_to_member(this, &GrGLTestInterface::genPaths);
fFunctions.fDeletePaths = bind_to_member(this, &GrGLTestInterface::deletePaths);
fFunctions.fIsPath = bind_to_member(this, &GrGLTestInterface::isPath);
fFunctions.fPathStencilFunc = bind_to_member(this, &GrGLTestInterface::pathStencilFunc);
fFunctions.fStencilFillPath = bind_to_member(this, &GrGLTestInterface::stencilFillPath);
fFunctions.fStencilStrokePath = bind_to_member(this, &GrGLTestInterface::stencilStrokePath);
fFunctions.fStencilFillPathInstanced = bind_to_member(this, &GrGLTestInterface::stencilFillPathInstanced);
fFunctions.fStencilStrokePathInstanced = bind_to_member(this, &GrGLTestInterface::stencilStrokePathInstanced);
fFunctions.fCoverFillPath = bind_to_member(this, &GrGLTestInterface::coverFillPath);
fFunctions.fCoverStrokePath = bind_to_member(this, &GrGLTestInterface::coverStrokePath);
fFunctions.fCoverFillPathInstanced = bind_to_member(this, &GrGLTestInterface::coverFillPathInstanced);
fFunctions.fCoverStrokePathInstanced = bind_to_member(this, &GrGLTestInterface::coverStrokePathInstanced);
fFunctions.fStencilThenCoverFillPath = bind_to_member(this, &GrGLTestInterface::stencilThenCoverFillPath);
fFunctions.fStencilThenCoverStrokePath = bind_to_member(this, &GrGLTestInterface::stencilThenCoverStrokePath);
fFunctions.fStencilThenCoverFillPathInstanced = bind_to_member(this, &GrGLTestInterface::stencilThenCoverFillPathInstanced);
fFunctions.fStencilThenCoverStrokePathInstanced = bind_to_member(this, &GrGLTestInterface::stencilThenCoverStrokePathInstanced);
fFunctions.fProgramPathFragmentInputGen = bind_to_member(this, &GrGLTestInterface::programPathFragmentInputGen);
fFunctions.fBindFragmentInputLocation = bind_to_member(this, &GrGLTestInterface::bindFragmentInputLocation);
fFunctions.fGetProgramResourceLocation = bind_to_member(this, &GrGLTestInterface::getProgramResourceLocation);
fFunctions.fCoverageModulation = bind_to_member(this, &GrGLTestInterface::coverageModulation);
fFunctions.fMultiDrawArraysIndirect = bind_to_member(this, &GrGLTestInterface::multiDrawArraysIndirect);
fFunctions.fMultiDrawElementsIndirect = bind_to_member(this, &GrGLTestInterface::multiDrawElementsIndirect);
fFunctions.fFenceSync = bind_to_member(this, &GrGLTestInterface::fenceSync);
fFunctions.fIsSync = bind_to_member(this, &GrGLTestInterface::isSync);
fFunctions.fClientWaitSync = bind_to_member(this, &GrGLTestInterface::clientWaitSync);
fFunctions.fWaitSync = bind_to_member(this, &GrGLTestInterface::waitSync);
fFunctions.fDeleteSync = bind_to_member(this, &GrGLTestInterface::deleteSync);
fFunctions.fDebugMessageControl = bind_to_member(this, &GrGLTestInterface::debugMessageControl);
fFunctions.fDebugMessageInsert = bind_to_member(this, &GrGLTestInterface::debugMessageInsert);
fFunctions.fDebugMessageCallback = bind_to_member(this, &GrGLTestInterface::debugMessageCallback);
fFunctions.fGetDebugMessageLog = bind_to_member(this, &GrGLTestInterface::getDebugMessageLog);
fFunctions.fPushDebugGroup = bind_to_member(this, &GrGLTestInterface::pushDebugGroup);
fFunctions.fPopDebugGroup = bind_to_member(this, &GrGLTestInterface::popDebugGroup);
fFunctions.fObjectLabel = bind_to_member(this, &GrGLTestInterface::objectLabel);
fFunctions.fGetInternalformativ = bind_to_member(this, &GrGLTestInterface::getInternalformativ);
fFunctions.fProgramBinary = bind_to_member(this, &GrGLTestInterface::programBinary);
fFunctions.fGetProgramBinary = bind_to_member(this, &GrGLTestInterface::getProgramBinary);
fFunctions.fProgramParameteri = bind_to_member(this, &GrGLTestInterface::programParameteri);
}