/*
 * 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 <functional>
#include "GrGLTestInterface.h"

namespace {
template<typename R, typename... A>
std::function<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.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.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.fGetTextureHandle = bind_to_member(this, &GrGLTestInterface::getTextureHandle);
    fFunctions.fGetTextureSamplerHandle = bind_to_member(this, &GrGLTestInterface::getTextureSamplerHandle);
    fFunctions.fMakeTextureHandleResident = bind_to_member(this, &GrGLTestInterface::makeTextureHandleResident);
    fFunctions.fMakeTextureHandleNonResident = bind_to_member(this, &GrGLTestInterface::makeTextureHandleNonResident);
    fFunctions.fGetImageHandle = bind_to_member(this, &GrGLTestInterface::getImageHandle);
    fFunctions.fMakeImageHandleResident = bind_to_member(this, &GrGLTestInterface::makeImageHandleResident);
    fFunctions.fMakeImageHandleNonResident = bind_to_member(this, &GrGLTestInterface::makeImageHandleNonResident);
    fFunctions.fIsTextureHandleResident = bind_to_member(this, &GrGLTestInterface::isTextureHandleResident);
    fFunctions.fIsImageHandleResident = bind_to_member(this, &GrGLTestInterface::isImageHandleResident);
    fFunctions.fUniformHandleui64 = bind_to_member(this, &GrGLTestInterface::uniformHandleui64);
    fFunctions.fUniformHandleui64v = bind_to_member(this, &GrGLTestInterface::uniformHandleui64v);
    fFunctions.fProgramUniformHandleui64 = bind_to_member(this, &GrGLTestInterface::programUniformHandleui64);
    fFunctions.fProgramUniformHandleui64v = bind_to_member(this, &GrGLTestInterface::programUniformHandleui64v);
    fFunctions.fTextureParameteri = bind_to_member(this, &GrGLTestInterface::textureParameteri);
    fFunctions.fTextureParameteriv = bind_to_member(this, &GrGLTestInterface::textureParameteriv);
    fFunctions.fTextureParameterf = bind_to_member(this, &GrGLTestInterface::textureParameterf);
    fFunctions.fTextureParameterfv = bind_to_member(this, &GrGLTestInterface::textureParameterfv);
    fFunctions.fTextureImage1D = bind_to_member(this, &GrGLTestInterface::textureImage1D);
    fFunctions.fTextureImage2D = bind_to_member(this, &GrGLTestInterface::textureImage2D);
    fFunctions.fTextureSubImage1D = bind_to_member(this, &GrGLTestInterface::textureSubImage1D);
    fFunctions.fTextureSubImage2D = bind_to_member(this, &GrGLTestInterface::textureSubImage2D);
    fFunctions.fCopyTextureImage1D = bind_to_member(this, &GrGLTestInterface::copyTextureImage1D);
    fFunctions.fCopyTextureImage2D = bind_to_member(this, &GrGLTestInterface::copyTextureImage2D);
    fFunctions.fCopyTextureSubImage1D = bind_to_member(this, &GrGLTestInterface::copyTextureSubImage1D);
    fFunctions.fCopyTextureSubImage2D = bind_to_member(this, &GrGLTestInterface::copyTextureSubImage2D);
    fFunctions.fGetTextureImage = bind_to_member(this, &GrGLTestInterface::getTextureImage);
    fFunctions.fGetTextureParameterfv = bind_to_member(this, &GrGLTestInterface::getTextureParameterfv);
    fFunctions.fGetTextureParameteriv = bind_to_member(this, &GrGLTestInterface::getTextureParameteriv);
    fFunctions.fGetTextureLevelParameterfv = bind_to_member(this, &GrGLTestInterface::getTextureLevelParameterfv);
    fFunctions.fGetTextureLevelParameteriv = bind_to_member(this, &GrGLTestInterface::getTextureLevelParameteriv);
    fFunctions.fTextureImage3D = bind_to_member(this, &GrGLTestInterface::textureImage3D);
    fFunctions.fTextureSubImage3D = bind_to_member(this, &GrGLTestInterface::textureSubImage3D);
    fFunctions.fCopyTextureSubImage3D = bind_to_member(this, &GrGLTestInterface::copyTextureSubImage3D);
    fFunctions.fCompressedTextureImage3D = bind_to_member(this, &GrGLTestInterface::compressedTextureImage3D);
    fFunctions.fCompressedTextureImage2D = bind_to_member(this, &GrGLTestInterface::compressedTextureImage2D);
    fFunctions.fCompressedTextureImage1D = bind_to_member(this, &GrGLTestInterface::compressedTextureImage1D);
    fFunctions.fCompressedTextureSubImage3D = bind_to_member(this, &GrGLTestInterface::compressedTextureSubImage3D);
    fFunctions.fCompressedTextureSubImage2D = bind_to_member(this, &GrGLTestInterface::compressedTextureSubImage2D);
    fFunctions.fCompressedTextureSubImage1D = bind_to_member(this, &GrGLTestInterface::compressedTextureSubImage1D);
    fFunctions.fGetCompressedTextureImage = bind_to_member(this, &GrGLTestInterface::getCompressedTextureImage);
    fFunctions.fNamedBufferData = bind_to_member(this, &GrGLTestInterface::namedBufferData);
    fFunctions.fNamedBufferSubData = bind_to_member(this, &GrGLTestInterface::namedBufferSubData);
    fFunctions.fMapNamedBuffer = bind_to_member(this, &GrGLTestInterface::mapNamedBuffer);
    fFunctions.fUnmapNamedBuffer = bind_to_member(this, &GrGLTestInterface::unmapNamedBuffer);
    fFunctions.fGetNamedBufferParameteriv = bind_to_member(this, &GrGLTestInterface::getNamedBufferParameteriv);
    fFunctions.fGetNamedBufferPointerv = bind_to_member(this, &GrGLTestInterface::getNamedBufferPointerv);
    fFunctions.fGetNamedBufferSubData = bind_to_member(this, &GrGLTestInterface::getNamedBufferSubData);
    fFunctions.fProgramUniform1f = bind_to_member(this, &GrGLTestInterface::programUniform1f);
    fFunctions.fProgramUniform2f = bind_to_member(this, &GrGLTestInterface::programUniform2f);
    fFunctions.fProgramUniform3f = bind_to_member(this, &GrGLTestInterface::programUniform3f);
    fFunctions.fProgramUniform4f = bind_to_member(this, &GrGLTestInterface::programUniform4f);
    fFunctions.fProgramUniform1i = bind_to_member(this, &GrGLTestInterface::programUniform1i);
    fFunctions.fProgramUniform2i = bind_to_member(this, &GrGLTestInterface::programUniform2i);
    fFunctions.fProgramUniform3i = bind_to_member(this, &GrGLTestInterface::programUniform3i);
    fFunctions.fProgramUniform4i = bind_to_member(this, &GrGLTestInterface::programUniform4i);
    fFunctions.fProgramUniform1fv = bind_to_member(this, &GrGLTestInterface::programUniform1fv);
    fFunctions.fProgramUniform2fv = bind_to_member(this, &GrGLTestInterface::programUniform2fv);
    fFunctions.fProgramUniform3fv = bind_to_member(this, &GrGLTestInterface::programUniform3fv);
    fFunctions.fProgramUniform4fv = bind_to_member(this, &GrGLTestInterface::programUniform4fv);
    fFunctions.fProgramUniform1iv = bind_to_member(this, &GrGLTestInterface::programUniform1iv);
    fFunctions.fProgramUniform2iv = bind_to_member(this, &GrGLTestInterface::programUniform2iv);
    fFunctions.fProgramUniform3iv = bind_to_member(this, &GrGLTestInterface::programUniform3iv);
    fFunctions.fProgramUniform4iv = bind_to_member(this, &GrGLTestInterface::programUniform4iv);
    fFunctions.fProgramUniformMatrix2fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix2fv);
    fFunctions.fProgramUniformMatrix3fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix3fv);
    fFunctions.fProgramUniformMatrix4fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix4fv);
    fFunctions.fProgramUniformMatrix2x3fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix2x3fv);
    fFunctions.fProgramUniformMatrix3x2fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix3x2fv);
    fFunctions.fProgramUniformMatrix2x4fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix2x4fv);
    fFunctions.fProgramUniformMatrix4x2fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix4x2fv);
    fFunctions.fProgramUniformMatrix3x4fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix3x4fv);
    fFunctions.fProgramUniformMatrix4x3fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix4x3fv);
    fFunctions.fNamedRenderbufferStorage = bind_to_member(this, &GrGLTestInterface::namedRenderbufferStorage);
    fFunctions.fGetNamedRenderbufferParameteriv = bind_to_member(this, &GrGLTestInterface::getNamedRenderbufferParameteriv);
    fFunctions.fNamedRenderbufferStorageMultisample = bind_to_member(this, &GrGLTestInterface::namedRenderbufferStorageMultisample);
    fFunctions.fCheckNamedFramebufferStatus = bind_to_member(this, &GrGLTestInterface::checkNamedFramebufferStatus);
    fFunctions.fNamedFramebufferTexture1D = bind_to_member(this, &GrGLTestInterface::namedFramebufferTexture1D);
    fFunctions.fNamedFramebufferTexture2D = bind_to_member(this, &GrGLTestInterface::namedFramebufferTexture2D);
    fFunctions.fNamedFramebufferTexture3D = bind_to_member(this, &GrGLTestInterface::namedFramebufferTexture3D);
    fFunctions.fNamedFramebufferRenderbuffer = bind_to_member(this, &GrGLTestInterface::namedFramebufferRenderbuffer);
    fFunctions.fGetNamedFramebufferAttachmentParameteriv = bind_to_member(this, &GrGLTestInterface::getNamedFramebufferAttachmentParameteriv);
    fFunctions.fGenerateTextureMipmap = bind_to_member(this, &GrGLTestInterface::generateTextureMipmap);
    fFunctions.fFramebufferDrawBuffer = bind_to_member(this, &GrGLTestInterface::framebufferDrawBuffer);
    fFunctions.fFramebufferDrawBuffers = bind_to_member(this, &GrGLTestInterface::framebufferDrawBuffers);
    fFunctions.fFramebufferReadBuffer = bind_to_member(this, &GrGLTestInterface::framebufferReadBuffer);
    fFunctions.fGetFramebufferParameteriv = bind_to_member(this, &GrGLTestInterface::getFramebufferParameteriv);
    fFunctions.fNamedCopyBufferSubData = bind_to_member(this, &GrGLTestInterface::namedCopyBufferSubData);
    fFunctions.fVertexArrayVertexOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayVertexOffset);
    fFunctions.fVertexArrayColorOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayColorOffset);
    fFunctions.fVertexArrayEdgeFlagOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayEdgeFlagOffset);
    fFunctions.fVertexArrayIndexOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayIndexOffset);
    fFunctions.fVertexArrayNormalOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayNormalOffset);
    fFunctions.fVertexArrayTexCoordOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayTexCoordOffset);
    fFunctions.fVertexArrayMultiTexCoordOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayMultiTexCoordOffset);
    fFunctions.fVertexArrayFogCoordOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayFogCoordOffset);
    fFunctions.fVertexArraySecondaryColorOffset = bind_to_member(this, &GrGLTestInterface::vertexArraySecondaryColorOffset);
    fFunctions.fVertexArrayVertexAttribOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayVertexAttribOffset);
    fFunctions.fVertexArrayVertexAttribIOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayVertexAttribIOffset);
    fFunctions.fEnableVertexArray = bind_to_member(this, &GrGLTestInterface::enableVertexArray);
    fFunctions.fDisableVertexArray = bind_to_member(this, &GrGLTestInterface::disableVertexArray);
    fFunctions.fEnableVertexArrayAttrib = bind_to_member(this, &GrGLTestInterface::enableVertexArrayAttrib);
    fFunctions.fDisableVertexArrayAttrib = bind_to_member(this, &GrGLTestInterface::disableVertexArrayAttrib);
    fFunctions.fGetVertexArrayIntegerv = bind_to_member(this, &GrGLTestInterface::getVertexArrayIntegerv);
    fFunctions.fGetVertexArrayPointerv = bind_to_member(this, &GrGLTestInterface::getVertexArrayPointerv);
    fFunctions.fGetVertexArrayIntegeri_v = bind_to_member(this, &GrGLTestInterface::getVertexArrayIntegeri_v);
    fFunctions.fGetVertexArrayPointeri_v = bind_to_member(this, &GrGLTestInterface::getVertexArrayPointeri_v);
    fFunctions.fMapNamedBufferRange = bind_to_member(this, &GrGLTestInterface::mapNamedBufferRange);
    fFunctions.fFlushMappedNamedBufferRange = bind_to_member(this, &GrGLTestInterface::flushMappedNamedBufferRange);
    fFunctions.fTextureBuffer = bind_to_member(this, &GrGLTestInterface::textureBuffer);
    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);
}
