From c72425ae368bfcb47de7d2532eb90d305ec0d1cf Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Tue, 21 Jan 2014 16:09:18 +0000 Subject: Move GrGLInterface function pointers into a nested struct BUG=skia:2042 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/133073009 git-svn-id: http://skia.googlecode.com/svn/trunk@13130 2bbb7eff-a529-9590-31e7-b0007b416f81 --- include/gpu/gl/GrGLExtensions.h | 1 - include/gpu/gl/GrGLInterface.h | 637 ++++++++++++++++++++++++------------- include/gpu/gl/SkGLContextHelper.h | 12 +- 3 files changed, 428 insertions(+), 222 deletions(-) (limited to 'include/gpu') diff --git a/include/gpu/gl/GrGLExtensions.h b/include/gpu/gl/GrGLExtensions.h index 26d2afb792..c9f59a2702 100644 --- a/include/gpu/gl/GrGLExtensions.h +++ b/include/gpu/gl/GrGLExtensions.h @@ -21,7 +21,6 @@ struct GrGLInterface; */ class GrGLExtensions : public SkNoncopyable { public: - GrGLExtensions() : fInitialized(false), fStrings(SkNEW(SkTArray)) {} void swap(GrGLExtensions* that) { diff --git a/include/gpu/gl/GrGLInterface.h b/include/gpu/gl/GrGLInterface.h index 2c2a6911d1..cd7c6bdf60 100644 --- a/include/gpu/gl/GrGLInterface.h +++ b/include/gpu/gl/GrGLInterface.h @@ -89,12 +89,22 @@ private: template class GLPtr { public: GLPtr() : fPtr(NULL) {} - GLPtr operator =(FNPTR_TYPE ptr) { fPtr = ptr; return *this; } + GLPtr operator=(FNPTR_TYPE ptr) { fPtr = ptr; return *this; } operator FNPTR_TYPE() const { return fPtr; } private: FNPTR_TYPE fPtr; }; + // This is a temporary workaround to keep Chromium's GrGLInterface factories compiling until + // they're updated to use the Functions struct. + template class GLPtrAlias { + public: + GLPtrAlias(GLPtr* base) : fBase(base) {} + void operator=(FNPTR_TYPE ptr) { *fBase = ptr; } + private: + GLPtr* fBase; + }; + typedef SkRefCnt INHERITED; public: @@ -120,226 +130,423 @@ public: bool hasExtension(const char ext[]) const { if (!fExtensions.isInitialized()) { GrGLExtensions* extensions = const_cast(&fExtensions); - if (!extensions->init(fStandard, fGetString, fGetStringi, fGetIntegerv)) { + if (!extensions->init(fStandard, fFunctions.fGetString, + fFunctions.fGetStringi, fFunctions.fGetIntegerv)) { return false; } } return fExtensions.has(ext); } - GLPtr fActiveTexture; - GLPtr fAttachShader; - GLPtr fBeginQuery; - GLPtr fBindAttribLocation; - GLPtr fBindBuffer; - GLPtr fBindFragDataLocation; - GLPtr fBindFragDataLocationIndexed; - GLPtr fBindFramebuffer; - GLPtr fBindRenderbuffer; - GLPtr fBindTexture; - GLPtr fBindVertexArray; - GLPtr fBlendColor; - GLPtr fBlendFunc; - GLPtr fBlitFramebuffer; - GLPtr fBufferData; - GLPtr fBufferSubData; - GLPtr fCheckFramebufferStatus; - GLPtr fClear; - GLPtr fClearColor; - GLPtr fClearStencil; - GLPtr fClientActiveTexture; - GLPtr fColorMask; - GLPtr fCompileShader; - GLPtr fCompressedTexImage2D; - GLPtr fCopyTexSubImage2D; - GLPtr fCreateProgram; - GLPtr fCreateShader; - GLPtr fCullFace; - GLPtr fDeleteBuffers; - GLPtr fDeleteFramebuffers; - GLPtr fDeleteProgram; - GLPtr fDeleteQueries; - GLPtr fDeleteRenderbuffers; - GLPtr fDeleteShader; - GLPtr fDeleteTextures; - GLPtr fDeleteVertexArrays; - GLPtr fDepthMask; - GLPtr fDisable; - GLPtr fDisableClientState; - GLPtr fDisableVertexAttribArray; - GLPtr fDrawArrays; - GLPtr fDrawBuffer; - GLPtr fDrawBuffers; - GLPtr fDrawElements; - GLPtr fEnable; - GLPtr fEnableClientState; - GLPtr fEnableVertexAttribArray; - GLPtr fEndQuery; - GLPtr fFinish; - GLPtr fFlush; - GLPtr fFramebufferRenderbuffer; - GLPtr fFramebufferTexture2D; - GLPtr fFramebufferTexture2DMultisample; - GLPtr fFrontFace; - GLPtr fGenBuffers; - GLPtr fGenFramebuffers; - GLPtr fGenerateMipmap; - GLPtr fGenQueries; - GLPtr fGenRenderbuffers; - GLPtr fGenTextures; - GLPtr fGenVertexArrays; - GLPtr fGetBufferParameteriv; - GLPtr fGetError; - GLPtr fGetFramebufferAttachmentParameteriv; - GLPtr fGetIntegerv; - GLPtr fGetQueryObjecti64v; - GLPtr fGetQueryObjectiv; - GLPtr fGetQueryObjectui64v; - GLPtr fGetQueryObjectuiv; - GLPtr fGetQueryiv; - GLPtr fGetProgramInfoLog; - GLPtr fGetProgramiv; - GLPtr fGetRenderbufferParameteriv; - GLPtr fGetShaderInfoLog; - GLPtr fGetShaderiv; - GLPtr fGetString; - GLPtr fGetStringi; - GLPtr fGetTexLevelParameteriv; - GLPtr fGetUniformLocation; - GLPtr fLineWidth; - GLPtr fLinkProgram; - GLPtr fLoadIdentity; - GLPtr fLoadMatrixf; - GLPtr fMapBuffer; - GLPtr fMatrixMode; - GLPtr fPixelStorei; - GLPtr fQueryCounter; - GLPtr fReadBuffer; - GLPtr fReadPixels; - GLPtr fRenderbufferStorage; - - // On OpenGL ES there are multiple incompatible extensions that add support for MSAA - // and ES3 adds MSAA support to the standard. On an ES3 driver we may still use the - // older extensions for performance reasons or due to ES3 driver bugs. We want the function - // that creates the GrGLInterface to provide all available functions and internally - // we will select among them. They all have a method called glRenderbufferStorageMultisample*. - // So we have separate function pointers for GL_IMG/EXT_multisampled_to_texture, - // GL_CHROMIUM/ANGLE_framebuffer_multisample/ES3, and GL_APPLE_framebuffer_multisample - // variations. - // - // If a driver supports multiple GL_ARB_framebuffer_multisample-style extensions then we will - // assume the function pointers for the standard (or equivalent GL_ARB) version have - // been preferred over GL_EXT, GL_CHROMIUM, or GL_ANGLE variations that have reduced - // functionality. - - // GL_EXT_multisampled_render_to_texture (preferred) or GL_IMG_multisampled_render_to_texture - GLPtr fRenderbufferStorageMultisampleES2EXT; - // GL_APPLE_framebuffer_multisample - GLPtr fRenderbufferStorageMultisampleES2APPLE; - - // This is used to store the pointer for GL_ARB/EXT/ANGLE/CHROMIUM_framebuffer_multisample or - // the standard function in ES3+ or GL 3.0+. - GLPtr fRenderbufferStorageMultisample; - - // Pointer to BindUniformLocationCHROMIUM from the GL_CHROMIUM_bind_uniform_location extension. - GLPtr fBindUniformLocation; - - GLPtr fResolveMultisampleFramebuffer; - GLPtr fScissor; - GLPtr fShaderSource; - GLPtr fStencilFunc; - GLPtr fStencilFuncSeparate; - GLPtr fStencilMask; - GLPtr fStencilMaskSeparate; - GLPtr fStencilOp; - GLPtr fStencilOpSeparate; - GLPtr fTexGenf; - GLPtr fTexGenfv; - GLPtr fTexGeni; - GLPtr fTexImage2D; - GLPtr fTexParameteri; - GLPtr fTexParameteriv; - GLPtr fTexSubImage2D; - GLPtr fTexStorage2D; - GLPtr fDiscardFramebuffer; - GLPtr fUniform1f; - GLPtr fUniform1i; - GLPtr fUniform1fv; - GLPtr fUniform1iv; - GLPtr fUniform2f; - GLPtr fUniform2i; - GLPtr fUniform2fv; - GLPtr fUniform2iv; - GLPtr fUniform3f; - GLPtr fUniform3i; - GLPtr fUniform3fv; - GLPtr fUniform3iv; - GLPtr fUniform4f; - GLPtr fUniform4i; - GLPtr fUniform4fv; - GLPtr fUniform4iv; - GLPtr fUniformMatrix2fv; - GLPtr fUniformMatrix3fv; - GLPtr fUniformMatrix4fv; - GLPtr fUnmapBuffer; - GLPtr fUseProgram; - GLPtr fVertexAttrib4fv; - GLPtr fVertexAttribPointer; - GLPtr fVertexPointer; - GLPtr fViewport; - - // Experimental: Functions for GL_NV_path_rendering. These will be - // alphabetized with the above functions once this is fully supported - // (and functions we are unlikely to use will possibly be omitted). - GLPtr fPathCommands; - GLPtr fPathCoords; - GLPtr fPathSubCommands; - GLPtr fPathSubCoords; - GLPtr fPathString; - GLPtr fPathGlyphs; - GLPtr fPathGlyphRange; - GLPtr fWeightPaths; - GLPtr fCopyPath; - GLPtr fInterpolatePaths; - GLPtr fTransformPath; - GLPtr fPathParameteriv; - GLPtr fPathParameteri; - GLPtr fPathParameterfv; - GLPtr fPathParameterf; - GLPtr fPathDashArray; - GLPtr fGenPaths; - GLPtr fDeletePaths; - GLPtr fIsPath; - GLPtr fPathStencilFunc; - GLPtr fPathStencilDepthOffset; - GLPtr fStencilFillPath; - GLPtr fStencilStrokePath; - GLPtr fStencilFillPathInstanced; - GLPtr fStencilStrokePathInstanced; - GLPtr fPathCoverDepthFunc; - GLPtr fPathColorGen; - GLPtr fPathTexGen; - GLPtr fPathFogGen; - GLPtr fCoverFillPath; - GLPtr fCoverStrokePath; - GLPtr fCoverFillPathInstanced; - GLPtr fCoverStrokePathInstanced; - GLPtr fGetPathParameteriv; - GLPtr fGetPathParameterfv; - GLPtr fGetPathCommands; - GLPtr fGetPathCoords; - GLPtr fGetPathDashArray; - GLPtr fGetPathMetrics; - GLPtr fGetPathMetricRange; - GLPtr fGetPathSpacing; - GLPtr fGetPathColorGeniv; - GLPtr fGetPathColorGenfv; - GLPtr fGetPathTexGeniv; - GLPtr fGetPathTexGenfv; - GLPtr fIsPointInFillPath; - GLPtr fIsPointInStrokePath; - GLPtr fGetPathLength; - GLPtr fPointAlongPath; + /** + * The function pointers are in a struct so that we can have a compiler generated assignment + * operator. + */ + struct Functions { + GLPtr fActiveTexture; + GLPtr fAttachShader; + GLPtr fBeginQuery; + GLPtr fBindAttribLocation; + GLPtr fBindBuffer; + GLPtr fBindFragDataLocation; + GLPtr fBindFragDataLocationIndexed; + GLPtr fBindFramebuffer; + GLPtr fBindRenderbuffer; + GLPtr fBindTexture; + GLPtr fBindVertexArray; + GLPtr fBlendColor; + GLPtr fBlendFunc; + GLPtr fBlitFramebuffer; + GLPtr fBufferData; + GLPtr fBufferSubData; + GLPtr fCheckFramebufferStatus; + GLPtr fClear; + GLPtr fClearColor; + GLPtr fClearStencil; + GLPtr fClientActiveTexture; + GLPtr fColorMask; + GLPtr fCompileShader; + GLPtr fCompressedTexImage2D; + GLPtr fCopyTexSubImage2D; + GLPtr fCreateProgram; + GLPtr fCreateShader; + GLPtr fCullFace; + GLPtr fDeleteBuffers; + GLPtr fDeleteFramebuffers; + GLPtr fDeleteProgram; + GLPtr fDeleteQueries; + GLPtr fDeleteRenderbuffers; + GLPtr fDeleteShader; + GLPtr fDeleteTextures; + GLPtr fDeleteVertexArrays; + GLPtr fDepthMask; + GLPtr fDisable; + GLPtr fDisableClientState; + GLPtr fDisableVertexAttribArray; + GLPtr fDrawArrays; + GLPtr fDrawBuffer; + GLPtr fDrawBuffers; + GLPtr fDrawElements; + GLPtr fEnable; + GLPtr fEnableClientState; + GLPtr fEnableVertexAttribArray; + GLPtr fEndQuery; + GLPtr fFinish; + GLPtr fFlush; + GLPtr fFramebufferRenderbuffer; + GLPtr fFramebufferTexture2D; + GLPtr fFramebufferTexture2DMultisample; + GLPtr fFrontFace; + GLPtr fGenBuffers; + GLPtr fGenFramebuffers; + GLPtr fGenerateMipmap; + GLPtr fGenQueries; + GLPtr fGenRenderbuffers; + GLPtr fGenTextures; + GLPtr fGenVertexArrays; + GLPtr fGetBufferParameteriv; + GLPtr fGetError; + GLPtr fGetFramebufferAttachmentParameteriv; + GLPtr fGetIntegerv; + GLPtr fGetQueryObjecti64v; + GLPtr fGetQueryObjectiv; + GLPtr fGetQueryObjectui64v; + GLPtr fGetQueryObjectuiv; + GLPtr fGetQueryiv; + GLPtr fGetProgramInfoLog; + GLPtr fGetProgramiv; + GLPtr fGetRenderbufferParameteriv; + GLPtr fGetShaderInfoLog; + GLPtr fGetShaderiv; + GLPtr fGetString; + GLPtr fGetStringi; + GLPtr fGetTexLevelParameteriv; + GLPtr fGetUniformLocation; + GLPtr fLineWidth; + GLPtr fLinkProgram; + GLPtr fLoadIdentity; + GLPtr fLoadMatrixf; + GLPtr fMapBuffer; + GLPtr fMatrixMode; + GLPtr fPixelStorei; + GLPtr fQueryCounter; + GLPtr fReadBuffer; + GLPtr fReadPixels; + GLPtr fRenderbufferStorage; + + // On OpenGL ES there are multiple incompatible extensions that add support for MSAA + // and ES3 adds MSAA support to the standard. On an ES3 driver we may still use the + // older extensions for performance reasons or due to ES3 driver bugs. We want the function + // that creates the GrGLInterface to provide all available functions and internally + // we will select among them. They all have a method called glRenderbufferStorageMultisample*. + // So we have separate function pointers for GL_IMG/EXT_multisampled_to_texture, + // GL_CHROMIUM/ANGLE_framebuffer_multisample/ES3, and GL_APPLE_framebuffer_multisample + // variations. + // + // If a driver supports multiple GL_ARB_framebuffer_multisample-style extensions then we will + // assume the function pointers for the standard (or equivalent GL_ARB) version have + // been preferred over GL_EXT, GL_CHROMIUM, or GL_ANGLE variations that have reduced + // functionality. + + // GL_EXT_multisampled_render_to_texture (preferred) or GL_IMG_multisampled_render_to_texture + GLPtr fRenderbufferStorageMultisampleES2EXT; + // GL_APPLE_framebuffer_multisample + GLPtr fRenderbufferStorageMultisampleES2APPLE; + + // This is used to store the pointer for GL_ARB/EXT/ANGLE/CHROMIUM_framebuffer_multisample or + // the standard function in ES3+ or GL 3.0+. + GLPtr fRenderbufferStorageMultisample; + + // Pointer to BindUniformLocationCHROMIUM from the GL_CHROMIUM_bind_uniform_location extension. + GLPtr fBindUniformLocation; + + GLPtr fResolveMultisampleFramebuffer; + GLPtr fScissor; + GLPtr fShaderSource; + GLPtr fStencilFunc; + GLPtr fStencilFuncSeparate; + GLPtr fStencilMask; + GLPtr fStencilMaskSeparate; + GLPtr fStencilOp; + GLPtr fStencilOpSeparate; + GLPtr fTexGenf; + GLPtr fTexGenfv; + GLPtr fTexGeni; + GLPtr fTexImage2D; + GLPtr fTexParameteri; + GLPtr fTexParameteriv; + GLPtr fTexSubImage2D; + GLPtr fTexStorage2D; + GLPtr fDiscardFramebuffer; + GLPtr fUniform1f; + GLPtr fUniform1i; + GLPtr fUniform1fv; + GLPtr fUniform1iv; + GLPtr fUniform2f; + GLPtr fUniform2i; + GLPtr fUniform2fv; + GLPtr fUniform2iv; + GLPtr fUniform3f; + GLPtr fUniform3i; + GLPtr fUniform3fv; + GLPtr fUniform3iv; + GLPtr fUniform4f; + GLPtr fUniform4i; + GLPtr fUniform4fv; + GLPtr fUniform4iv; + GLPtr fUniformMatrix2fv; + GLPtr fUniformMatrix3fv; + GLPtr fUniformMatrix4fv; + GLPtr fUnmapBuffer; + GLPtr fUseProgram; + GLPtr fVertexAttrib4fv; + GLPtr fVertexAttribPointer; + GLPtr fVertexPointer; + GLPtr fViewport; + + // Experimental: Functions for GL_NV_path_rendering. These will be + // alphabetized with the above functions once this is fully supported + // (and functions we are unlikely to use will possibly be omitted). + GLPtr fPathCommands; + GLPtr fPathCoords; + GLPtr fPathSubCommands; + GLPtr fPathSubCoords; + GLPtr fPathString; + GLPtr fPathGlyphs; + GLPtr fPathGlyphRange; + GLPtr fWeightPaths; + GLPtr fCopyPath; + GLPtr fInterpolatePaths; + GLPtr fTransformPath; + GLPtr fPathParameteriv; + GLPtr fPathParameteri; + GLPtr fPathParameterfv; + GLPtr fPathParameterf; + GLPtr fPathDashArray; + GLPtr fGenPaths; + GLPtr fDeletePaths; + GLPtr fIsPath; + GLPtr fPathStencilFunc; + GLPtr fPathStencilDepthOffset; + GLPtr fStencilFillPath; + GLPtr fStencilStrokePath; + GLPtr fStencilFillPathInstanced; + GLPtr fStencilStrokePathInstanced; + GLPtr fPathCoverDepthFunc; + GLPtr fPathColorGen; + GLPtr fPathTexGen; + GLPtr fPathFogGen; + GLPtr fCoverFillPath; + GLPtr fCoverStrokePath; + GLPtr fCoverFillPathInstanced; + GLPtr fCoverStrokePathInstanced; + GLPtr fGetPathParameteriv; + GLPtr fGetPathParameterfv; + GLPtr fGetPathCommands; + GLPtr fGetPathCoords; + GLPtr fGetPathDashArray; + GLPtr fGetPathMetrics; + GLPtr fGetPathMetricRange; + GLPtr fGetPathSpacing; + GLPtr fGetPathColorGeniv; + GLPtr fGetPathColorGenfv; + GLPtr fGetPathTexGeniv; + GLPtr fGetPathTexGenfv; + GLPtr fIsPointInFillPath; + GLPtr fIsPointInStrokePath; + GLPtr fGetPathLength; + GLPtr fPointAlongPath; + } fFunctions; + + + // Temporary workaround aliases to keep Chromium GrGLInterface factories compiling until they + // assign the members of fFunctions. + GLPtrAlias fActiveTexture; + GLPtrAlias fAttachShader; + GLPtrAlias fBeginQuery; + GLPtrAlias fBindAttribLocation; + GLPtrAlias fBindBuffer; + GLPtrAlias fBindFragDataLocation; + GLPtrAlias fBindFragDataLocationIndexed; + GLPtrAlias fBindFramebuffer; + GLPtrAlias fBindRenderbuffer; + GLPtrAlias fBindTexture; + GLPtrAlias fBindVertexArray; + GLPtrAlias fBlendColor; + GLPtrAlias fBlendFunc; + GLPtrAlias fBlitFramebuffer; + GLPtrAlias fBufferData; + GLPtrAlias fBufferSubData; + GLPtrAlias fCheckFramebufferStatus; + GLPtrAlias fClear; + GLPtrAlias fClearColor; + GLPtrAlias fClearStencil; + GLPtrAlias fClientActiveTexture; + GLPtrAlias fColorMask; + GLPtrAlias fCompileShader; + GLPtrAlias fCompressedTexImage2D; + GLPtrAlias fCopyTexSubImage2D; + GLPtrAlias fCreateProgram; + GLPtrAlias fCreateShader; + GLPtrAlias fCullFace; + GLPtrAlias fDeleteBuffers; + GLPtrAlias fDeleteFramebuffers; + GLPtrAlias fDeleteProgram; + GLPtrAlias fDeleteQueries; + GLPtrAlias fDeleteRenderbuffers; + GLPtrAlias fDeleteShader; + GLPtrAlias fDeleteTextures; + GLPtrAlias fDeleteVertexArrays; + GLPtrAlias fDepthMask; + GLPtrAlias fDisable; + GLPtrAlias fDisableClientState; + GLPtrAlias fDisableVertexAttribArray; + GLPtrAlias fDrawArrays; + GLPtrAlias fDrawBuffer; + GLPtrAlias fDrawBuffers; + GLPtrAlias fDrawElements; + GLPtrAlias fEnable; + GLPtrAlias fEnableClientState; + GLPtrAlias fEnableVertexAttribArray; + GLPtrAlias fEndQuery; + GLPtrAlias fFinish; + GLPtrAlias fFlush; + GLPtrAlias fFramebufferRenderbuffer; + GLPtrAlias fFramebufferTexture2D; + GLPtrAlias fFramebufferTexture2DMultisample; + GLPtrAlias fFrontFace; + GLPtrAlias fGenBuffers; + GLPtrAlias fGenFramebuffers; + GLPtrAlias fGenerateMipmap; + GLPtrAlias fGenQueries; + GLPtrAlias fGenRenderbuffers; + GLPtrAlias fGenTextures; + GLPtrAlias fGenVertexArrays; + GLPtrAlias fGetBufferParameteriv; + GLPtrAlias fGetError; + GLPtrAlias fGetFramebufferAttachmentParameteriv; + GLPtrAlias fGetIntegerv; + GLPtrAlias fGetQueryObjecti64v; + GLPtrAlias fGetQueryObjectiv; + GLPtrAlias fGetQueryObjectui64v; + GLPtrAlias fGetQueryObjectuiv; + GLPtrAlias fGetQueryiv; + GLPtrAlias fGetProgramInfoLog; + GLPtrAlias fGetProgramiv; + GLPtrAlias fGetRenderbufferParameteriv; + GLPtrAlias fGetShaderInfoLog; + GLPtrAlias fGetShaderiv; + GLPtrAlias fGetString; + GLPtrAlias fGetStringi; + GLPtrAlias fGetTexLevelParameteriv; + GLPtrAlias fGetUniformLocation; + GLPtrAlias fLineWidth; + GLPtrAlias fLinkProgram; + GLPtrAlias fLoadIdentity; + GLPtrAlias fLoadMatrixf; + GLPtrAlias fMapBuffer; + GLPtrAlias fMatrixMode; + GLPtrAlias fPixelStorei; + GLPtrAlias fQueryCounter; + GLPtrAlias fReadBuffer; + GLPtrAlias fReadPixels; + GLPtrAlias fRenderbufferStorage; + GLPtrAlias fRenderbufferStorageMultisampleES2EXT; + GLPtrAlias fRenderbufferStorageMultisampleES2APPLE; + GLPtrAlias fRenderbufferStorageMultisample; + GLPtrAlias fBindUniformLocation; + GLPtrAlias fResolveMultisampleFramebuffer; + GLPtrAlias fScissor; + GLPtrAlias fShaderSource; + GLPtrAlias fStencilFunc; + GLPtrAlias fStencilFuncSeparate; + GLPtrAlias fStencilMask; + GLPtrAlias fStencilMaskSeparate; + GLPtrAlias fStencilOp; + GLPtrAlias fStencilOpSeparate; + GLPtrAlias fTexGenf; + GLPtrAlias fTexGenfv; + GLPtrAlias fTexGeni; + GLPtrAlias fTexImage2D; + GLPtrAlias fTexParameteri; + GLPtrAlias fTexParameteriv; + GLPtrAlias fTexSubImage2D; + GLPtrAlias fTexStorage2D; + GLPtrAlias fDiscardFramebuffer; + GLPtrAlias fUniform1f; + GLPtrAlias fUniform1i; + GLPtrAlias fUniform1fv; + GLPtrAlias fUniform1iv; + GLPtrAlias fUniform2f; + GLPtrAlias fUniform2i; + GLPtrAlias fUniform2fv; + GLPtrAlias fUniform2iv; + GLPtrAlias fUniform3f; + GLPtrAlias fUniform3i; + GLPtrAlias fUniform3fv; + GLPtrAlias fUniform3iv; + GLPtrAlias fUniform4f; + GLPtrAlias fUniform4i; + GLPtrAlias fUniform4fv; + GLPtrAlias fUniform4iv; + GLPtrAlias fUniformMatrix2fv; + GLPtrAlias fUniformMatrix3fv; + GLPtrAlias fUniformMatrix4fv; + GLPtrAlias fUnmapBuffer; + GLPtrAlias fUseProgram; + GLPtrAlias fVertexAttrib4fv; + GLPtrAlias fVertexAttribPointer; + GLPtrAlias fVertexPointer; + GLPtrAlias fViewport; + GLPtrAlias fPathCommands; + GLPtrAlias fPathCoords; + GLPtrAlias fPathSubCommands; + GLPtrAlias fPathSubCoords; + GLPtrAlias fPathString; + GLPtrAlias fPathGlyphs; + GLPtrAlias fPathGlyphRange; + GLPtrAlias fWeightPaths; + GLPtrAlias fCopyPath; + GLPtrAlias fInterpolatePaths; + GLPtrAlias fTransformPath; + GLPtrAlias fPathParameteriv; + GLPtrAlias fPathParameteri; + GLPtrAlias fPathParameterfv; + GLPtrAlias fPathParameterf; + GLPtrAlias fPathDashArray; + GLPtrAlias fGenPaths; + GLPtrAlias fDeletePaths; + GLPtrAlias fIsPath; + GLPtrAlias fPathStencilFunc; + GLPtrAlias fPathStencilDepthOffset; + GLPtrAlias fStencilFillPath; + GLPtrAlias fStencilStrokePath; + GLPtrAlias fStencilFillPathInstanced; + GLPtrAlias fStencilStrokePathInstanced; + GLPtrAlias fPathCoverDepthFunc; + GLPtrAlias fPathColorGen; + GLPtrAlias fPathTexGen; + GLPtrAlias fPathFogGen; + GLPtrAlias fCoverFillPath; + GLPtrAlias fCoverStrokePath; + GLPtrAlias fCoverFillPathInstanced; + GLPtrAlias fCoverStrokePathInstanced; + GLPtrAlias fGetPathParameteriv; + GLPtrAlias fGetPathParameterfv; + GLPtrAlias fGetPathCommands; + GLPtrAlias fGetPathCoords; + GLPtrAlias fGetPathDashArray; + GLPtrAlias fGetPathMetrics; + GLPtrAlias fGetPathMetricRange; + GLPtrAlias fGetPathSpacing; + GLPtrAlias fGetPathColorGeniv; + GLPtrAlias fGetPathColorGenfv; + GLPtrAlias fGetPathTexGeniv; + GLPtrAlias fGetPathTexGenfv; + GLPtrAlias fIsPointInFillPath; + GLPtrAlias fIsPointInStrokePath; + GLPtrAlias fGetPathLength; + GLPtrAlias fPointAlongPath; // Per-GL func callback #if GR_GL_PER_GL_FUNC_CALLBACK diff --git a/include/gpu/gl/SkGLContextHelper.h b/include/gpu/gl/SkGLContextHelper.h index e83fd15904..ea940c8bc0 100644 --- a/include/gpu/gl/SkGLContextHelper.h +++ b/include/gpu/gl/SkGLContextHelper.h @@ -77,11 +77,11 @@ private: * Helper macros for using the GL context through the GrGLInterface. Example: * SK_GL(glCtx, GenTextures(1, &texID)); */ -#define SK_GL(ctx, X) (ctx).gl()->f ## X; \ - SkASSERT(GR_GL_NO_ERROR == (ctx).gl()->fGetError()) -#define SK_GL_RET(ctx, RET, X) (RET) = (ctx).gl()->f ## X; \ - SkASSERT(GR_GL_NO_ERROR == (ctx).gl()->fGetError()) -#define SK_GL_NOERRCHECK(ctx, X) (ctx).gl()->f ## X -#define SK_GL_RET_NOERRCHECK(ctx, RET, X) (RET) = (ctx).gl()->f ## X +#define SK_GL(ctx, X) (ctx).gl()->fFunctions.f ## X; \ + SkASSERT(GR_GL_NO_ERROR == (ctx).gl()->fFunctions.fGetError()) +#define SK_GL_RET(ctx, RET, X) (RET) = (ctx).gl()->fFunctions.f ## X; \ + SkASSERT(GR_GL_NO_ERROR == (ctx).gl()->fFunctions.fGetError()) +#define SK_GL_NOERRCHECK(ctx, X) (ctx).gl()->fFunctions.f ## X +#define SK_GL_RET_NOERRCHECK(ctx, RET, X) (RET) = (ctx).gl()->fFunctions.f ## X #endif -- cgit v1.2.3