Home | History | Annotate | Download | only in gl
      1 /*
      2  * Copyright 2016 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #include "GrGLTestInterface.h"
      9 
     10 namespace {
     11     template<typename R, typename... A>
     12     GrGLFunction<R(*)(A...)> bind_to_member(GrGLTestInterface* interface,
     13                                             R (GrGLTestInterface::*member)(A...)) {
     14         return [interface, member] (A... a) -> R { return (interface->*member)(a...); };
     15     }
     16 }  // anonymous namespace
     17 
     18 GrGLTestInterface::GrGLTestInterface() {
     19     fFunctions.fActiveTexture = bind_to_member(this, &GrGLTestInterface::activeTexture);
     20     fFunctions.fAttachShader = bind_to_member(this, &GrGLTestInterface::attachShader);
     21     fFunctions.fBeginQuery = bind_to_member(this, &GrGLTestInterface::beginQuery);
     22     fFunctions.fBindAttribLocation = bind_to_member(this, &GrGLTestInterface::bindAttribLocation);
     23     fFunctions.fBindBuffer = bind_to_member(this, &GrGLTestInterface::bindBuffer);
     24     fFunctions.fBindFramebuffer = bind_to_member(this, &GrGLTestInterface::bindFramebuffer);
     25     fFunctions.fBindRenderbuffer = bind_to_member(this, &GrGLTestInterface::bindRenderbuffer);
     26     fFunctions.fBindTexture = bind_to_member(this, &GrGLTestInterface::bindTexture);
     27     fFunctions.fBindFragDataLocation = bind_to_member(this, &GrGLTestInterface::bindFragDataLocation);
     28     fFunctions.fBindFragDataLocationIndexed = bind_to_member(this, &GrGLTestInterface::bindFragDataLocationIndexed);
     29     fFunctions.fBindVertexArray = bind_to_member(this, &GrGLTestInterface::bindVertexArray);
     30     fFunctions.fBlendBarrier = bind_to_member(this, &GrGLTestInterface::blendBarrier);
     31     fFunctions.fBlendColor = bind_to_member(this, &GrGLTestInterface::blendColor);
     32     fFunctions.fBlendEquation = bind_to_member(this, &GrGLTestInterface::blendEquation);
     33     fFunctions.fBlendFunc = bind_to_member(this, &GrGLTestInterface::blendFunc);
     34     fFunctions.fBlitFramebuffer = bind_to_member(this, &GrGLTestInterface::blitFramebuffer);
     35     fFunctions.fBufferData = bind_to_member(this, &GrGLTestInterface::bufferData);
     36     fFunctions.fBufferSubData = bind_to_member(this, &GrGLTestInterface::bufferSubData);
     37     fFunctions.fCheckFramebufferStatus = bind_to_member(this, &GrGLTestInterface::checkFramebufferStatus);
     38     fFunctions.fClear = bind_to_member(this, &GrGLTestInterface::clear);
     39     fFunctions.fClearColor = bind_to_member(this, &GrGLTestInterface::clearColor);
     40     fFunctions.fClearStencil = bind_to_member(this, &GrGLTestInterface::clearStencil);
     41     fFunctions.fColorMask = bind_to_member(this, &GrGLTestInterface::colorMask);
     42     fFunctions.fCompileShader = bind_to_member(this, &GrGLTestInterface::compileShader);
     43     fFunctions.fCompressedTexImage2D = bind_to_member(this, &GrGLTestInterface::compressedTexImage2D);
     44     fFunctions.fCompressedTexSubImage2D = bind_to_member(this, &GrGLTestInterface::compressedTexSubImage2D);
     45     fFunctions.fCopyTexSubImage2D = bind_to_member(this, &GrGLTestInterface::copyTexSubImage2D);
     46     fFunctions.fCreateProgram = bind_to_member(this, &GrGLTestInterface::createProgram);
     47     fFunctions.fCreateShader = bind_to_member(this, &GrGLTestInterface::createShader);
     48     fFunctions.fCullFace = bind_to_member(this, &GrGLTestInterface::cullFace);
     49     fFunctions.fDeleteBuffers = bind_to_member(this, &GrGLTestInterface::deleteBuffers);
     50     fFunctions.fDeleteFramebuffers = bind_to_member(this, &GrGLTestInterface::deleteFramebuffers);
     51     fFunctions.fDeleteProgram = bind_to_member(this, &GrGLTestInterface::deleteProgram);
     52     fFunctions.fDeleteQueries = bind_to_member(this, &GrGLTestInterface::deleteQueries);
     53     fFunctions.fDeleteRenderbuffers = bind_to_member(this, &GrGLTestInterface::deleteRenderbuffers);
     54     fFunctions.fDeleteShader = bind_to_member(this, &GrGLTestInterface::deleteShader);
     55     fFunctions.fDeleteTextures = bind_to_member(this, &GrGLTestInterface::deleteTextures);
     56     fFunctions.fDeleteVertexArrays = bind_to_member(this, &GrGLTestInterface::deleteVertexArrays);
     57     fFunctions.fDepthMask = bind_to_member(this, &GrGLTestInterface::depthMask);
     58     fFunctions.fDisable = bind_to_member(this, &GrGLTestInterface::disable);
     59     fFunctions.fDisableVertexAttribArray = bind_to_member(this, &GrGLTestInterface::disableVertexAttribArray);
     60     fFunctions.fDrawArrays = bind_to_member(this, &GrGLTestInterface::drawArrays);
     61     fFunctions.fDrawArraysInstanced = bind_to_member(this, &GrGLTestInterface::drawArraysInstanced);
     62     fFunctions.fDrawArraysIndirect = bind_to_member(this, &GrGLTestInterface::drawArraysIndirect);
     63     fFunctions.fDrawBuffer = bind_to_member(this, &GrGLTestInterface::drawBuffer);
     64     fFunctions.fDrawBuffers = bind_to_member(this, &GrGLTestInterface::drawBuffers);
     65     fFunctions.fDrawElements = bind_to_member(this, &GrGLTestInterface::drawElements);
     66     fFunctions.fDrawElementsInstanced = bind_to_member(this, &GrGLTestInterface::drawElementsInstanced);
     67     fFunctions.fDrawElementsIndirect = bind_to_member(this, &GrGLTestInterface::drawElementsIndirect);
     68     fFunctions.fDrawRangeElements = bind_to_member(this, &GrGLTestInterface::drawRangeElements);
     69     fFunctions.fEnable = bind_to_member(this, &GrGLTestInterface::enable);
     70     fFunctions.fEnableVertexAttribArray = bind_to_member(this, &GrGLTestInterface::enableVertexAttribArray);
     71     fFunctions.fEndQuery = bind_to_member(this, &GrGLTestInterface::endQuery);
     72     fFunctions.fFinish = bind_to_member(this, &GrGLTestInterface::finish);
     73     fFunctions.fFlush = bind_to_member(this, &GrGLTestInterface::flush);
     74     fFunctions.fFlushMappedBufferRange = bind_to_member(this, &GrGLTestInterface::flushMappedBufferRange);
     75     fFunctions.fFramebufferRenderbuffer = bind_to_member(this, &GrGLTestInterface::framebufferRenderbuffer);
     76     fFunctions.fFramebufferTexture2D = bind_to_member(this, &GrGLTestInterface::framebufferTexture2D);
     77     fFunctions.fFramebufferTexture2DMultisample = bind_to_member(this, &GrGLTestInterface::framebufferTexture2DMultisample);
     78     fFunctions.fFrontFace = bind_to_member(this, &GrGLTestInterface::frontFace);
     79     fFunctions.fGenBuffers = bind_to_member(this, &GrGLTestInterface::genBuffers);
     80     fFunctions.fGenFramebuffers = bind_to_member(this, &GrGLTestInterface::genFramebuffers);
     81     fFunctions.fGenerateMipmap = bind_to_member(this, &GrGLTestInterface::generateMipmap);
     82     fFunctions.fGenQueries = bind_to_member(this, &GrGLTestInterface::genQueries);
     83     fFunctions.fGenRenderbuffers = bind_to_member(this, &GrGLTestInterface::genRenderbuffers);
     84     fFunctions.fGenTextures = bind_to_member(this, &GrGLTestInterface::genTextures);
     85     fFunctions.fGenVertexArrays = bind_to_member(this, &GrGLTestInterface::genVertexArrays);
     86     fFunctions.fGetBufferParameteriv = bind_to_member(this, &GrGLTestInterface::getBufferParameteriv);
     87     fFunctions.fGetError = bind_to_member(this, &GrGLTestInterface::getError);
     88     fFunctions.fGetFramebufferAttachmentParameteriv = bind_to_member(this, &GrGLTestInterface::getFramebufferAttachmentParameteriv);
     89     fFunctions.fGetIntegerv = bind_to_member(this, &GrGLTestInterface::getIntegerv);
     90     fFunctions.fGetMultisamplefv = bind_to_member(this, &GrGLTestInterface::getMultisamplefv);
     91     fFunctions.fGetProgramInfoLog = bind_to_member(this, &GrGLTestInterface::getProgramInfoLog);
     92     fFunctions.fGetProgramiv = bind_to_member(this, &GrGLTestInterface::getProgramiv);
     93     fFunctions.fGetQueryiv = bind_to_member(this, &GrGLTestInterface::getQueryiv);
     94     fFunctions.fGetQueryObjecti64v = bind_to_member(this, &GrGLTestInterface::getQueryObjecti64v);
     95     fFunctions.fGetQueryObjectiv = bind_to_member(this, &GrGLTestInterface::getQueryObjectiv);
     96     fFunctions.fGetQueryObjectui64v = bind_to_member(this, &GrGLTestInterface::getQueryObjectui64v);
     97     fFunctions.fGetQueryObjectuiv = bind_to_member(this, &GrGLTestInterface::getQueryObjectuiv);
     98     fFunctions.fGetRenderbufferParameteriv = bind_to_member(this, &GrGLTestInterface::getRenderbufferParameteriv);
     99     fFunctions.fGetShaderInfoLog = bind_to_member(this, &GrGLTestInterface::getShaderInfoLog);
    100     fFunctions.fGetShaderiv = bind_to_member(this, &GrGLTestInterface::getShaderiv);
    101     fFunctions.fGetShaderPrecisionFormat = bind_to_member(this, &GrGLTestInterface::getShaderPrecisionFormat);
    102     fFunctions.fGetString = bind_to_member(this, &GrGLTestInterface::getString);
    103     fFunctions.fGetStringi = bind_to_member(this, &GrGLTestInterface::getStringi);
    104     fFunctions.fGetTexLevelParameteriv = bind_to_member(this, &GrGLTestInterface::getTexLevelParameteriv);
    105     fFunctions.fGetUniformLocation = bind_to_member(this, &GrGLTestInterface::getUniformLocation);
    106     fFunctions.fInsertEventMarker = bind_to_member(this, &GrGLTestInterface::insertEventMarker);
    107     fFunctions.fInvalidateBufferData = bind_to_member(this, &GrGLTestInterface::invalidateBufferData);
    108     fFunctions.fInvalidateBufferSubData = bind_to_member(this, &GrGLTestInterface::invalidateBufferSubData);
    109     fFunctions.fInvalidateFramebuffer = bind_to_member(this, &GrGLTestInterface::invalidateFramebuffer);
    110     fFunctions.fInvalidateSubFramebuffer = bind_to_member(this, &GrGLTestInterface::invalidateSubFramebuffer);
    111     fFunctions.fInvalidateTexImage = bind_to_member(this, &GrGLTestInterface::invalidateTexImage);
    112     fFunctions.fInvalidateTexSubImage = bind_to_member(this, &GrGLTestInterface::invalidateTexSubImage);
    113     fFunctions.fIsTexture = bind_to_member(this, &GrGLTestInterface::isTexture);
    114     fFunctions.fLineWidth = bind_to_member(this, &GrGLTestInterface::lineWidth);
    115     fFunctions.fLinkProgram = bind_to_member(this, &GrGLTestInterface::linkProgram);
    116     fFunctions.fMapBuffer = bind_to_member(this, &GrGLTestInterface::mapBuffer);
    117     fFunctions.fMapBufferRange = bind_to_member(this, &GrGLTestInterface::mapBufferRange);
    118     fFunctions.fMapBufferSubData = bind_to_member(this, &GrGLTestInterface::mapBufferSubData);
    119     fFunctions.fMapTexSubImage2D = bind_to_member(this, &GrGLTestInterface::mapTexSubImage2D);
    120     fFunctions.fMinSampleShading = bind_to_member(this, &GrGLTestInterface::minSampleShading);
    121     fFunctions.fPixelStorei = bind_to_member(this, &GrGLTestInterface::pixelStorei);
    122     fFunctions.fPolygonMode = bind_to_member(this, &GrGLTestInterface::polygonMode);
    123     fFunctions.fPopGroupMarker = bind_to_member(this, &GrGLTestInterface::popGroupMarker);
    124     fFunctions.fPushGroupMarker = bind_to_member(this, &GrGLTestInterface::pushGroupMarker);
    125     fFunctions.fQueryCounter = bind_to_member(this, &GrGLTestInterface::queryCounter);
    126     fFunctions.fRasterSamples = bind_to_member(this, &GrGLTestInterface::rasterSamples);
    127     fFunctions.fReadBuffer = bind_to_member(this, &GrGLTestInterface::readBuffer);
    128     fFunctions.fReadPixels = bind_to_member(this, &GrGLTestInterface::readPixels);
    129     fFunctions.fRenderbufferStorage = bind_to_member(this, &GrGLTestInterface::renderbufferStorage);
    130     fFunctions.fRenderbufferStorageMultisample = bind_to_member(this, &GrGLTestInterface::renderbufferStorageMultisample);
    131     fFunctions.fResolveMultisampleFramebuffer = bind_to_member(this, &GrGLTestInterface::resolveMultisampleFramebuffer);
    132     fFunctions.fScissor = bind_to_member(this, &GrGLTestInterface::scissor);
    133     fFunctions.fBindUniformLocation = bind_to_member(this, &GrGLTestInterface::bindUniformLocation);
    134     fFunctions.fShaderSource = bind_to_member(this, &GrGLTestInterface::shaderSource);
    135     fFunctions.fStencilFunc = bind_to_member(this, &GrGLTestInterface::stencilFunc);
    136     fFunctions.fStencilFuncSeparate = bind_to_member(this, &GrGLTestInterface::stencilFuncSeparate);
    137     fFunctions.fStencilMask = bind_to_member(this, &GrGLTestInterface::stencilMask);
    138     fFunctions.fStencilMaskSeparate = bind_to_member(this, &GrGLTestInterface::stencilMaskSeparate);
    139     fFunctions.fStencilOp = bind_to_member(this, &GrGLTestInterface::stencilOp);
    140     fFunctions.fStencilOpSeparate = bind_to_member(this, &GrGLTestInterface::stencilOpSeparate);
    141     fFunctions.fTexBuffer = bind_to_member(this, &GrGLTestInterface::texBuffer);
    142     fFunctions.fTexImage2D = bind_to_member(this, &GrGLTestInterface::texImage2D);
    143     fFunctions.fTexParameteri = bind_to_member(this, &GrGLTestInterface::texParameteri);
    144     fFunctions.fTexParameteriv = bind_to_member(this, &GrGLTestInterface::texParameteriv);
    145     fFunctions.fTexStorage2D = bind_to_member(this, &GrGLTestInterface::texStorage2D);
    146     fFunctions.fDiscardFramebuffer = bind_to_member(this, &GrGLTestInterface::discardFramebuffer);
    147     fFunctions.fTexSubImage2D = bind_to_member(this, &GrGLTestInterface::texSubImage2D);
    148     fFunctions.fTextureBarrier = bind_to_member(this, &GrGLTestInterface::textureBarrier);
    149     fFunctions.fUniform1f = bind_to_member(this, &GrGLTestInterface::uniform1f);
    150     fFunctions.fUniform1i = bind_to_member(this, &GrGLTestInterface::uniform1i);
    151     fFunctions.fUniform1fv = bind_to_member(this, &GrGLTestInterface::uniform1fv);
    152     fFunctions.fUniform1iv = bind_to_member(this, &GrGLTestInterface::uniform1iv);
    153     fFunctions.fUniform2f = bind_to_member(this, &GrGLTestInterface::uniform2f);
    154     fFunctions.fUniform2i = bind_to_member(this, &GrGLTestInterface::uniform2i);
    155     fFunctions.fUniform2fv = bind_to_member(this, &GrGLTestInterface::uniform2fv);
    156     fFunctions.fUniform2iv = bind_to_member(this, &GrGLTestInterface::uniform2iv);
    157     fFunctions.fUniform3f = bind_to_member(this, &GrGLTestInterface::uniform3f);
    158     fFunctions.fUniform3i = bind_to_member(this, &GrGLTestInterface::uniform3i);
    159     fFunctions.fUniform3fv = bind_to_member(this, &GrGLTestInterface::uniform3fv);
    160     fFunctions.fUniform3iv = bind_to_member(this, &GrGLTestInterface::uniform3iv);
    161     fFunctions.fUniform4f = bind_to_member(this, &GrGLTestInterface::uniform4f);
    162     fFunctions.fUniform4i = bind_to_member(this, &GrGLTestInterface::uniform4i);
    163     fFunctions.fUniform4fv = bind_to_member(this, &GrGLTestInterface::uniform4fv);
    164     fFunctions.fUniform4iv = bind_to_member(this, &GrGLTestInterface::uniform4iv);
    165     fFunctions.fUniformMatrix2fv = bind_to_member(this, &GrGLTestInterface::uniformMatrix2fv);
    166     fFunctions.fUniformMatrix3fv = bind_to_member(this, &GrGLTestInterface::uniformMatrix3fv);
    167     fFunctions.fUniformMatrix4fv = bind_to_member(this, &GrGLTestInterface::uniformMatrix4fv);
    168     fFunctions.fUnmapBuffer = bind_to_member(this, &GrGLTestInterface::unmapBuffer);
    169     fFunctions.fUnmapBufferSubData = bind_to_member(this, &GrGLTestInterface::unmapBufferSubData);
    170     fFunctions.fUnmapTexSubImage2D = bind_to_member(this, &GrGLTestInterface::unmapTexSubImage2D);
    171     fFunctions.fUseProgram = bind_to_member(this, &GrGLTestInterface::useProgram);
    172     fFunctions.fVertexAttrib1f = bind_to_member(this, &GrGLTestInterface::vertexAttrib1f);
    173     fFunctions.fVertexAttrib2fv = bind_to_member(this, &GrGLTestInterface::vertexAttrib2fv);
    174     fFunctions.fVertexAttrib3fv = bind_to_member(this, &GrGLTestInterface::vertexAttrib3fv);
    175     fFunctions.fVertexAttrib4fv = bind_to_member(this, &GrGLTestInterface::vertexAttrib4fv);
    176     fFunctions.fVertexAttribDivisor = bind_to_member(this, &GrGLTestInterface::vertexAttribDivisor);
    177     fFunctions.fVertexAttribIPointer = bind_to_member(this, &GrGLTestInterface::vertexAttribIPointer);
    178     fFunctions.fVertexAttribPointer = bind_to_member(this, &GrGLTestInterface::vertexAttribPointer);
    179     fFunctions.fViewport = bind_to_member(this, &GrGLTestInterface::viewport);
    180     fFunctions.fMatrixLoadf = bind_to_member(this, &GrGLTestInterface::matrixLoadf);
    181     fFunctions.fMatrixLoadIdentity = bind_to_member(this, &GrGLTestInterface::matrixLoadIdentity);
    182     fFunctions.fPathCommands = bind_to_member(this, &GrGLTestInterface::pathCommands);
    183     fFunctions.fPathParameteri = bind_to_member(this, &GrGLTestInterface::pathParameteri);
    184     fFunctions.fPathParameterf = bind_to_member(this, &GrGLTestInterface::pathParameterf);
    185     fFunctions.fGenPaths = bind_to_member(this, &GrGLTestInterface::genPaths);
    186     fFunctions.fDeletePaths = bind_to_member(this, &GrGLTestInterface::deletePaths);
    187     fFunctions.fIsPath = bind_to_member(this, &GrGLTestInterface::isPath);
    188     fFunctions.fPathStencilFunc = bind_to_member(this, &GrGLTestInterface::pathStencilFunc);
    189     fFunctions.fStencilFillPath = bind_to_member(this, &GrGLTestInterface::stencilFillPath);
    190     fFunctions.fStencilStrokePath = bind_to_member(this, &GrGLTestInterface::stencilStrokePath);
    191     fFunctions.fStencilFillPathInstanced = bind_to_member(this, &GrGLTestInterface::stencilFillPathInstanced);
    192     fFunctions.fStencilStrokePathInstanced = bind_to_member(this, &GrGLTestInterface::stencilStrokePathInstanced);
    193     fFunctions.fCoverFillPath = bind_to_member(this, &GrGLTestInterface::coverFillPath);
    194     fFunctions.fCoverStrokePath = bind_to_member(this, &GrGLTestInterface::coverStrokePath);
    195     fFunctions.fCoverFillPathInstanced = bind_to_member(this, &GrGLTestInterface::coverFillPathInstanced);
    196     fFunctions.fCoverStrokePathInstanced = bind_to_member(this, &GrGLTestInterface::coverStrokePathInstanced);
    197     fFunctions.fStencilThenCoverFillPath = bind_to_member(this, &GrGLTestInterface::stencilThenCoverFillPath);
    198     fFunctions.fStencilThenCoverStrokePath = bind_to_member(this, &GrGLTestInterface::stencilThenCoverStrokePath);
    199     fFunctions.fStencilThenCoverFillPathInstanced = bind_to_member(this, &GrGLTestInterface::stencilThenCoverFillPathInstanced);
    200     fFunctions.fStencilThenCoverStrokePathInstanced = bind_to_member(this, &GrGLTestInterface::stencilThenCoverStrokePathInstanced);
    201     fFunctions.fProgramPathFragmentInputGen = bind_to_member(this, &GrGLTestInterface::programPathFragmentInputGen);
    202     fFunctions.fBindFragmentInputLocation = bind_to_member(this, &GrGLTestInterface::bindFragmentInputLocation);
    203     fFunctions.fGetProgramResourceLocation = bind_to_member(this, &GrGLTestInterface::getProgramResourceLocation);
    204     fFunctions.fCoverageModulation = bind_to_member(this, &GrGLTestInterface::coverageModulation);
    205     fFunctions.fMultiDrawArraysIndirect = bind_to_member(this, &GrGLTestInterface::multiDrawArraysIndirect);
    206     fFunctions.fMultiDrawElementsIndirect = bind_to_member(this, &GrGLTestInterface::multiDrawElementsIndirect);
    207     fFunctions.fGetTextureHandle = bind_to_member(this, &GrGLTestInterface::getTextureHandle);
    208     fFunctions.fGetTextureSamplerHandle = bind_to_member(this, &GrGLTestInterface::getTextureSamplerHandle);
    209     fFunctions.fMakeTextureHandleResident = bind_to_member(this, &GrGLTestInterface::makeTextureHandleResident);
    210     fFunctions.fMakeTextureHandleNonResident = bind_to_member(this, &GrGLTestInterface::makeTextureHandleNonResident);
    211     fFunctions.fGetImageHandle = bind_to_member(this, &GrGLTestInterface::getImageHandle);
    212     fFunctions.fMakeImageHandleResident = bind_to_member(this, &GrGLTestInterface::makeImageHandleResident);
    213     fFunctions.fMakeImageHandleNonResident = bind_to_member(this, &GrGLTestInterface::makeImageHandleNonResident);
    214     fFunctions.fIsTextureHandleResident = bind_to_member(this, &GrGLTestInterface::isTextureHandleResident);
    215     fFunctions.fIsImageHandleResident = bind_to_member(this, &GrGLTestInterface::isImageHandleResident);
    216     fFunctions.fUniformHandleui64 = bind_to_member(this, &GrGLTestInterface::uniformHandleui64);
    217     fFunctions.fUniformHandleui64v = bind_to_member(this, &GrGLTestInterface::uniformHandleui64v);
    218     fFunctions.fProgramUniformHandleui64 = bind_to_member(this, &GrGLTestInterface::programUniformHandleui64);
    219     fFunctions.fProgramUniformHandleui64v = bind_to_member(this, &GrGLTestInterface::programUniformHandleui64v);
    220     fFunctions.fTextureParameteri = bind_to_member(this, &GrGLTestInterface::textureParameteri);
    221     fFunctions.fTextureParameteriv = bind_to_member(this, &GrGLTestInterface::textureParameteriv);
    222     fFunctions.fTextureParameterf = bind_to_member(this, &GrGLTestInterface::textureParameterf);
    223     fFunctions.fTextureParameterfv = bind_to_member(this, &GrGLTestInterface::textureParameterfv);
    224     fFunctions.fTextureImage1D = bind_to_member(this, &GrGLTestInterface::textureImage1D);
    225     fFunctions.fTextureImage2D = bind_to_member(this, &GrGLTestInterface::textureImage2D);
    226     fFunctions.fTextureSubImage1D = bind_to_member(this, &GrGLTestInterface::textureSubImage1D);
    227     fFunctions.fTextureSubImage2D = bind_to_member(this, &GrGLTestInterface::textureSubImage2D);
    228     fFunctions.fCopyTextureImage1D = bind_to_member(this, &GrGLTestInterface::copyTextureImage1D);
    229     fFunctions.fCopyTextureImage2D = bind_to_member(this, &GrGLTestInterface::copyTextureImage2D);
    230     fFunctions.fCopyTextureSubImage1D = bind_to_member(this, &GrGLTestInterface::copyTextureSubImage1D);
    231     fFunctions.fCopyTextureSubImage2D = bind_to_member(this, &GrGLTestInterface::copyTextureSubImage2D);
    232     fFunctions.fGetTextureImage = bind_to_member(this, &GrGLTestInterface::getTextureImage);
    233     fFunctions.fGetTextureParameterfv = bind_to_member(this, &GrGLTestInterface::getTextureParameterfv);
    234     fFunctions.fGetTextureParameteriv = bind_to_member(this, &GrGLTestInterface::getTextureParameteriv);
    235     fFunctions.fGetTextureLevelParameterfv = bind_to_member(this, &GrGLTestInterface::getTextureLevelParameterfv);
    236     fFunctions.fGetTextureLevelParameteriv = bind_to_member(this, &GrGLTestInterface::getTextureLevelParameteriv);
    237     fFunctions.fTextureImage3D = bind_to_member(this, &GrGLTestInterface::textureImage3D);
    238     fFunctions.fTextureSubImage3D = bind_to_member(this, &GrGLTestInterface::textureSubImage3D);
    239     fFunctions.fCopyTextureSubImage3D = bind_to_member(this, &GrGLTestInterface::copyTextureSubImage3D);
    240     fFunctions.fCompressedTextureImage3D = bind_to_member(this, &GrGLTestInterface::compressedTextureImage3D);
    241     fFunctions.fCompressedTextureImage2D = bind_to_member(this, &GrGLTestInterface::compressedTextureImage2D);
    242     fFunctions.fCompressedTextureImage1D = bind_to_member(this, &GrGLTestInterface::compressedTextureImage1D);
    243     fFunctions.fCompressedTextureSubImage3D = bind_to_member(this, &GrGLTestInterface::compressedTextureSubImage3D);
    244     fFunctions.fCompressedTextureSubImage2D = bind_to_member(this, &GrGLTestInterface::compressedTextureSubImage2D);
    245     fFunctions.fCompressedTextureSubImage1D = bind_to_member(this, &GrGLTestInterface::compressedTextureSubImage1D);
    246     fFunctions.fGetCompressedTextureImage = bind_to_member(this, &GrGLTestInterface::getCompressedTextureImage);
    247     fFunctions.fNamedBufferData = bind_to_member(this, &GrGLTestInterface::namedBufferData);
    248     fFunctions.fNamedBufferSubData = bind_to_member(this, &GrGLTestInterface::namedBufferSubData);
    249     fFunctions.fMapNamedBuffer = bind_to_member(this, &GrGLTestInterface::mapNamedBuffer);
    250     fFunctions.fUnmapNamedBuffer = bind_to_member(this, &GrGLTestInterface::unmapNamedBuffer);
    251     fFunctions.fGetNamedBufferParameteriv = bind_to_member(this, &GrGLTestInterface::getNamedBufferParameteriv);
    252     fFunctions.fGetNamedBufferPointerv = bind_to_member(this, &GrGLTestInterface::getNamedBufferPointerv);
    253     fFunctions.fGetNamedBufferSubData = bind_to_member(this, &GrGLTestInterface::getNamedBufferSubData);
    254     fFunctions.fProgramUniform1f = bind_to_member(this, &GrGLTestInterface::programUniform1f);
    255     fFunctions.fProgramUniform2f = bind_to_member(this, &GrGLTestInterface::programUniform2f);
    256     fFunctions.fProgramUniform3f = bind_to_member(this, &GrGLTestInterface::programUniform3f);
    257     fFunctions.fProgramUniform4f = bind_to_member(this, &GrGLTestInterface::programUniform4f);
    258     fFunctions.fProgramUniform1i = bind_to_member(this, &GrGLTestInterface::programUniform1i);
    259     fFunctions.fProgramUniform2i = bind_to_member(this, &GrGLTestInterface::programUniform2i);
    260     fFunctions.fProgramUniform3i = bind_to_member(this, &GrGLTestInterface::programUniform3i);
    261     fFunctions.fProgramUniform4i = bind_to_member(this, &GrGLTestInterface::programUniform4i);
    262     fFunctions.fProgramUniform1fv = bind_to_member(this, &GrGLTestInterface::programUniform1fv);
    263     fFunctions.fProgramUniform2fv = bind_to_member(this, &GrGLTestInterface::programUniform2fv);
    264     fFunctions.fProgramUniform3fv = bind_to_member(this, &GrGLTestInterface::programUniform3fv);
    265     fFunctions.fProgramUniform4fv = bind_to_member(this, &GrGLTestInterface::programUniform4fv);
    266     fFunctions.fProgramUniform1iv = bind_to_member(this, &GrGLTestInterface::programUniform1iv);
    267     fFunctions.fProgramUniform2iv = bind_to_member(this, &GrGLTestInterface::programUniform2iv);
    268     fFunctions.fProgramUniform3iv = bind_to_member(this, &GrGLTestInterface::programUniform3iv);
    269     fFunctions.fProgramUniform4iv = bind_to_member(this, &GrGLTestInterface::programUniform4iv);
    270     fFunctions.fProgramUniformMatrix2fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix2fv);
    271     fFunctions.fProgramUniformMatrix3fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix3fv);
    272     fFunctions.fProgramUniformMatrix4fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix4fv);
    273     fFunctions.fProgramUniformMatrix2x3fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix2x3fv);
    274     fFunctions.fProgramUniformMatrix3x2fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix3x2fv);
    275     fFunctions.fProgramUniformMatrix2x4fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix2x4fv);
    276     fFunctions.fProgramUniformMatrix4x2fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix4x2fv);
    277     fFunctions.fProgramUniformMatrix3x4fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix3x4fv);
    278     fFunctions.fProgramUniformMatrix4x3fv = bind_to_member(this, &GrGLTestInterface::programUniformMatrix4x3fv);
    279     fFunctions.fNamedRenderbufferStorage = bind_to_member(this, &GrGLTestInterface::namedRenderbufferStorage);
    280     fFunctions.fGetNamedRenderbufferParameteriv = bind_to_member(this, &GrGLTestInterface::getNamedRenderbufferParameteriv);
    281     fFunctions.fNamedRenderbufferStorageMultisample = bind_to_member(this, &GrGLTestInterface::namedRenderbufferStorageMultisample);
    282     fFunctions.fCheckNamedFramebufferStatus = bind_to_member(this, &GrGLTestInterface::checkNamedFramebufferStatus);
    283     fFunctions.fNamedFramebufferTexture1D = bind_to_member(this, &GrGLTestInterface::namedFramebufferTexture1D);
    284     fFunctions.fNamedFramebufferTexture2D = bind_to_member(this, &GrGLTestInterface::namedFramebufferTexture2D);
    285     fFunctions.fNamedFramebufferTexture3D = bind_to_member(this, &GrGLTestInterface::namedFramebufferTexture3D);
    286     fFunctions.fNamedFramebufferRenderbuffer = bind_to_member(this, &GrGLTestInterface::namedFramebufferRenderbuffer);
    287     fFunctions.fGetNamedFramebufferAttachmentParameteriv = bind_to_member(this, &GrGLTestInterface::getNamedFramebufferAttachmentParameteriv);
    288     fFunctions.fGenerateTextureMipmap = bind_to_member(this, &GrGLTestInterface::generateTextureMipmap);
    289     fFunctions.fFramebufferDrawBuffer = bind_to_member(this, &GrGLTestInterface::framebufferDrawBuffer);
    290     fFunctions.fFramebufferDrawBuffers = bind_to_member(this, &GrGLTestInterface::framebufferDrawBuffers);
    291     fFunctions.fFramebufferReadBuffer = bind_to_member(this, &GrGLTestInterface::framebufferReadBuffer);
    292     fFunctions.fGetFramebufferParameteriv = bind_to_member(this, &GrGLTestInterface::getFramebufferParameteriv);
    293     fFunctions.fNamedCopyBufferSubData = bind_to_member(this, &GrGLTestInterface::namedCopyBufferSubData);
    294     fFunctions.fVertexArrayVertexOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayVertexOffset);
    295     fFunctions.fVertexArrayColorOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayColorOffset);
    296     fFunctions.fVertexArrayEdgeFlagOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayEdgeFlagOffset);
    297     fFunctions.fVertexArrayIndexOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayIndexOffset);
    298     fFunctions.fVertexArrayNormalOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayNormalOffset);
    299     fFunctions.fVertexArrayTexCoordOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayTexCoordOffset);
    300     fFunctions.fVertexArrayMultiTexCoordOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayMultiTexCoordOffset);
    301     fFunctions.fVertexArrayFogCoordOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayFogCoordOffset);
    302     fFunctions.fVertexArraySecondaryColorOffset = bind_to_member(this, &GrGLTestInterface::vertexArraySecondaryColorOffset);
    303     fFunctions.fVertexArrayVertexAttribOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayVertexAttribOffset);
    304     fFunctions.fVertexArrayVertexAttribIOffset = bind_to_member(this, &GrGLTestInterface::vertexArrayVertexAttribIOffset);
    305     fFunctions.fEnableVertexArray = bind_to_member(this, &GrGLTestInterface::enableVertexArray);
    306     fFunctions.fDisableVertexArray = bind_to_member(this, &GrGLTestInterface::disableVertexArray);
    307     fFunctions.fEnableVertexArrayAttrib = bind_to_member(this, &GrGLTestInterface::enableVertexArrayAttrib);
    308     fFunctions.fDisableVertexArrayAttrib = bind_to_member(this, &GrGLTestInterface::disableVertexArrayAttrib);
    309     fFunctions.fGetVertexArrayIntegerv = bind_to_member(this, &GrGLTestInterface::getVertexArrayIntegerv);
    310     fFunctions.fGetVertexArrayPointerv = bind_to_member(this, &GrGLTestInterface::getVertexArrayPointerv);
    311     fFunctions.fGetVertexArrayIntegeri_v = bind_to_member(this, &GrGLTestInterface::getVertexArrayIntegeri_v);
    312     fFunctions.fGetVertexArrayPointeri_v = bind_to_member(this, &GrGLTestInterface::getVertexArrayPointeri_v);
    313     fFunctions.fMapNamedBufferRange = bind_to_member(this, &GrGLTestInterface::mapNamedBufferRange);
    314     fFunctions.fFlushMappedNamedBufferRange = bind_to_member(this, &GrGLTestInterface::flushMappedNamedBufferRange);
    315     fFunctions.fTextureBuffer = bind_to_member(this, &GrGLTestInterface::textureBuffer);
    316     fFunctions.fFenceSync = bind_to_member(this, &GrGLTestInterface::fenceSync);
    317     fFunctions.fIsSync = bind_to_member(this, &GrGLTestInterface::isSync);
    318     fFunctions.fClientWaitSync = bind_to_member(this, &GrGLTestInterface::clientWaitSync);
    319     fFunctions.fWaitSync = bind_to_member(this, &GrGLTestInterface::waitSync);
    320     fFunctions.fDeleteSync = bind_to_member(this, &GrGLTestInterface::deleteSync);
    321     fFunctions.fDebugMessageControl = bind_to_member(this, &GrGLTestInterface::debugMessageControl);
    322     fFunctions.fDebugMessageInsert = bind_to_member(this, &GrGLTestInterface::debugMessageInsert);
    323     fFunctions.fDebugMessageCallback = bind_to_member(this, &GrGLTestInterface::debugMessageCallback);
    324     fFunctions.fGetDebugMessageLog = bind_to_member(this, &GrGLTestInterface::getDebugMessageLog);
    325     fFunctions.fPushDebugGroup = bind_to_member(this, &GrGLTestInterface::pushDebugGroup);
    326     fFunctions.fPopDebugGroup = bind_to_member(this, &GrGLTestInterface::popDebugGroup);
    327     fFunctions.fObjectLabel = bind_to_member(this, &GrGLTestInterface::objectLabel);
    328     fFunctions.fGetInternalformativ = bind_to_member(this, &GrGLTestInterface::getInternalformativ);
    329     fFunctions.fProgramBinary = bind_to_member(this, &GrGLTestInterface::programBinary);
    330     fFunctions.fGetProgramBinary = bind_to_member(this, &GrGLTestInterface::getProgramBinary);
    331     fFunctions.fProgramParameteri = bind_to_member(this, &GrGLTestInterface::programParameteri);
    332 }
    333