blob: c58c5bcb556b1bac36a45f1354e00805ff6afd6b [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
twiz@google.com59a190b2011-03-14 21:23:01 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
twiz@google.com59a190b2011-03-14 21:23:01 +00007 */
8
9
10#ifndef GrGLInterface_DEFINED
11#define GrGLInterface_DEFINED
12
bsalomon@google.com637d5e92012-05-07 21:33:56 +000013#include "GrGLFunctions.h"
bsalomon@google.com0b77d682011-08-19 13:28:54 +000014#include "GrRefCnt.h"
twiz@google.com59a190b2011-03-14 21:23:01 +000015
twiz@google.com59a190b2011-03-14 21:23:01 +000016////////////////////////////////////////////////////////////////////////////////
17
18/**
bsalomon@google.com89ec61e2012-02-10 20:05:18 +000019 * Classifies GL contexts (currently as Desktop vs. ES2). This is a bitfield.
20 * A GrGLInterface (defined below) may support multiple bindings.
21 */
22enum GrGLBinding {
23 kNone_GrGLBinding = 0x0,
24
25 kDesktop_GrGLBinding = 0x01,
bsalomon@google.comeb170702013-08-15 18:57:53 +000026 kES_GrGLBinding = 0x02, // ES2+ only
bsalomon@google.com89ec61e2012-02-10 20:05:18 +000027
28 // for iteration of GrGLBindings
bsalomon@google.comb447d212012-02-10 20:25:36 +000029 kFirstGrGLBinding = kDesktop_GrGLBinding,
bsalomon@google.comeb170702013-08-15 18:57:53 +000030 kLastGrGLBinding = kES_GrGLBinding
bsalomon@google.com89ec61e2012-02-10 20:05:18 +000031};
32
33////////////////////////////////////////////////////////////////////////////////
34
35/**
bsalomon@google.com0b77d682011-08-19 13:28:54 +000036 * Rather than depend on platform-specific GL headers and libraries, we require
37 * the client to provide a struct of GL function pointers. This struct can be
38 * specified per-GrContext as a parameter to GrContext::Create. If NULL is
39 * passed to Create then the "default" GL interface is used. If the default is
40 * also NULL GrContext creation will fail.
41 *
bsalomon@google.com6fb736f2011-09-16 18:51:57 +000042 * The default interface is returned by GrGLDefaultInterface. This function's
robertphillips@google.com0da37192012-03-19 14:42:13 +000043 * implementation is platform-specific. Several have been provided, along with
44 * an implementation that simply returns NULL. It is implementation-specific
bsalomon@google.com6fb736f2011-09-16 18:51:57 +000045 * whether the same GrGLInterface is returned or whether a new one is created
46 * at each call. Some platforms may not be able to use a single GrGLInterface
47 * because extension function ptrs vary across contexts. Note that GrGLInterface
rmistry@google.comfbfcd562012-08-23 18:09:54 +000048 * is ref-counted. So if the same object is returned by multiple calls to
bsalomon@google.com6fb736f2011-09-16 18:51:57 +000049 * GrGLDefaultInterface, each should bump the ref count.
bsalomon@google.com56bfc5a2011-09-01 13:28:16 +000050 *
51 * By defining GR_GL_PER_GL_CALL_IFACE_CALLBACK to 1 the client can specify a
52 * callback function that will be called prior to each GL function call. See
53 * comments in GrGLConfig.h
twiz@google.com59a190b2011-03-14 21:23:01 +000054 */
twiz@google.com59a190b2011-03-14 21:23:01 +000055
bsalomon@google.com0b77d682011-08-19 13:28:54 +000056struct GrGLInterface;
57
bsalomon@google.com6fb736f2011-09-16 18:51:57 +000058const GrGLInterface* GrGLDefaultInterface();
twiz@google.com59a190b2011-03-14 21:23:01 +000059
bsalomon@google.com57f5d982011-10-24 21:17:53 +000060/**
61 * Creates a GrGLInterface for a "native" GL context (e.g. WGL on windows,
62 * GLX on linux, AGL on Mac). On platforms that have context-specific function
rmistry@google.comfbfcd562012-08-23 18:09:54 +000063 * pointers for GL extensions (e.g. windows) the returned interface is only
bsalomon@google.com57f5d982011-10-24 21:17:53 +000064 * valid for the context that was current at creation.
65 */
bsalomon@google.com373a6632011-10-19 20:43:20 +000066const GrGLInterface* GrGLCreateNativeInterface();
67
robertphillips@google.comd3b9fbb2012-03-28 16:19:11 +000068#if SK_MESA
bsalomon@google.com57f5d982011-10-24 21:17:53 +000069/**
70 * Creates a GrGLInterface for an OSMesa context.
71 */
bsalomon@google.com373a6632011-10-19 20:43:20 +000072const GrGLInterface* GrGLCreateMesaInterface();
robertphillips@google.comd3b9fbb2012-03-28 16:19:11 +000073#endif
74
75#if SK_ANGLE
76/**
77 * Creates a GrGLInterface for an ANGLE context.
78 */
79const GrGLInterface* GrGLCreateANGLEInterface();
80#endif
bsalomon@google.com373a6632011-10-19 20:43:20 +000081
bsalomon@google.com74913722011-10-27 20:44:19 +000082/**
83 * Creates a null GrGLInterface that doesn't draw anything. Used for measuring
84 * CPU overhead.
85 */
86const GrGLInterface* GrGLCreateNullInterface();
87
robertphillips@google.com0da37192012-03-19 14:42:13 +000088/**
rmistry@google.comfbfcd562012-08-23 18:09:54 +000089 * Creates a debugging GrGLInterface that doesn't draw anything. Used for
robertphillips@google.com0da37192012-03-19 14:42:13 +000090 * finding memory leaks and invalid memory accesses.
91 */
92const GrGLInterface* GrGLCreateDebugInterface();
93
bsalomon@google.com56bfc5a2011-09-01 13:28:16 +000094#if GR_GL_PER_GL_FUNC_CALLBACK
95typedef void (*GrGLInterfaceCallbackProc)(const GrGLInterface*);
96typedef intptr_t GrGLInterfaceCallbackData;
97#endif
98
bsalomon@google.combf2a4692011-05-04 12:35:39 +000099/*
bsalomon@google.comcc61b172012-05-07 21:45:48 +0000100 * GrContext uses the following interface to make all calls into OpenGL. When a
101 * GrContext is created it is given a GrGLInterface. The interface's function
102 * pointers must be valid for the OpenGL context associated with the GrContext.
103 * On some platforms, such as Windows, function pointers for OpenGL extensions
104 * may vary between OpenGL contexts. So the caller must be careful to use a
105 * GrGLInterface initialized for the correct context. All functions that should
106 * be available based on the OpenGL's version and extension string must be
107 * non-NULL or GrContext creation will fail. This can be tested with the
108 * validate() method when the OpenGL context has been made current.
bsalomon@google.combf2a4692011-05-04 12:35:39 +0000109 */
bsalomon@google.com0b77d682011-08-19 13:28:54 +0000110struct GR_API GrGLInterface : public GrRefCnt {
bsalomon@google.comba800e22012-03-29 21:04:52 +0000111private:
bsalomon@google.com9c1f1ac2012-05-07 17:09:37 +0000112 // simple wrapper class that exists only to initialize a pointer to NULL
bsalomon@google.comba800e22012-03-29 21:04:52 +0000113 template <typename FNPTR_TYPE> class GLPtr {
114 public:
115 GLPtr() : fPtr(NULL) {}
116 GLPtr operator =(FNPTR_TYPE ptr) { fPtr = ptr; return *this; }
117 operator FNPTR_TYPE() const { return fPtr; }
118 private:
119 FNPTR_TYPE fPtr;
120 };
bsalomon@google.com0b77d682011-08-19 13:28:54 +0000121
robertphillips@google.com15e9d3e2012-06-21 20:25:03 +0000122 typedef GrRefCnt INHERITED;
123
bsalomon@google.comba800e22012-03-29 21:04:52 +0000124public:
robertphillips@google.com15e9d3e2012-06-21 20:25:03 +0000125 SK_DECLARE_INST_COUNT(GrGLInterface)
126
bsalomon@google.com0b77d682011-08-19 13:28:54 +0000127 GrGLInterface();
128
bsalomon@google.com89ec61e2012-02-10 20:05:18 +0000129 // Validates that the GrGLInterface supports a binding. This means that
130 // the GrGLinterface advertises the binding in fBindingsExported and all
bsalomon@google.comcc61b172012-05-07 21:45:48 +0000131 // the necessary function pointers have been initialized. The interface is
132 // validated for the current OpenGL context.
bsalomon@google.com89ec61e2012-02-10 20:05:18 +0000133 bool validate(GrGLBinding binding) const;
134
twiz@google.comb65e0cb2011-03-18 20:41:44 +0000135 // Indicator variable specifying the type of GL implementation
bsalomon@google.comba800e22012-03-29 21:04:52 +0000136 // exported: GLES2 and/or Desktop.
twiz@google.comb65e0cb2011-03-18 20:41:44 +0000137 GrGLBinding fBindingsExported;
138
bsalomon@google.comba800e22012-03-29 21:04:52 +0000139 GLPtr<GrGLActiveTextureProc> fActiveTexture;
140 GLPtr<GrGLAttachShaderProc> fAttachShader;
141 GLPtr<GrGLBeginQueryProc> fBeginQuery;
142 GLPtr<GrGLBindAttribLocationProc> fBindAttribLocation;
143 GLPtr<GrGLBindBufferProc> fBindBuffer;
144 GLPtr<GrGLBindFragDataLocationProc> fBindFragDataLocation;
145 GLPtr<GrGLBindFragDataLocationIndexedProc> fBindFragDataLocationIndexed;
146 GLPtr<GrGLBindFramebufferProc> fBindFramebuffer;
147 GLPtr<GrGLBindRenderbufferProc> fBindRenderbuffer;
148 GLPtr<GrGLBindTextureProc> fBindTexture;
bsalomon@google.comecd84842013-03-01 15:36:02 +0000149 GLPtr<GrGLBindVertexArrayProc> fBindVertexArray;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000150 GLPtr<GrGLBlendColorProc> fBlendColor;
151 GLPtr<GrGLBlendFuncProc> fBlendFunc;
152 GLPtr<GrGLBlitFramebufferProc> fBlitFramebuffer;
153 GLPtr<GrGLBufferDataProc> fBufferData;
154 GLPtr<GrGLBufferSubDataProc> fBufferSubData;
155 GLPtr<GrGLCheckFramebufferStatusProc> fCheckFramebufferStatus;
156 GLPtr<GrGLClearProc> fClear;
157 GLPtr<GrGLClearColorProc> fClearColor;
158 GLPtr<GrGLClearStencilProc> fClearStencil;
159 GLPtr<GrGLColorMaskProc> fColorMask;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000160 GLPtr<GrGLCompileShaderProc> fCompileShader;
161 GLPtr<GrGLCompressedTexImage2DProc> fCompressedTexImage2D;
commit-bot@chromium.org98168bb2013-04-11 22:00:34 +0000162 GLPtr<GrGLCopyTexSubImage2DProc> fCopyTexSubImage2D;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000163 GLPtr<GrGLCreateProgramProc> fCreateProgram;
164 GLPtr<GrGLCreateShaderProc> fCreateShader;
165 GLPtr<GrGLCullFaceProc> fCullFace;
166 GLPtr<GrGLDeleteBuffersProc> fDeleteBuffers;
167 GLPtr<GrGLDeleteFramebuffersProc> fDeleteFramebuffers;
168 GLPtr<GrGLDeleteProgramProc> fDeleteProgram;
169 GLPtr<GrGLDeleteQueriesProc> fDeleteQueries;
170 GLPtr<GrGLDeleteRenderbuffersProc> fDeleteRenderbuffers;
171 GLPtr<GrGLDeleteShaderProc> fDeleteShader;
172 GLPtr<GrGLDeleteTexturesProc> fDeleteTextures;
bsalomon@google.comecd84842013-03-01 15:36:02 +0000173 GLPtr<GrGLDeleteVertexArraysProc> fDeleteVertexArrays;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000174 GLPtr<GrGLDepthMaskProc> fDepthMask;
175 GLPtr<GrGLDisableProc> fDisable;
176 GLPtr<GrGLDisableVertexAttribArrayProc> fDisableVertexAttribArray;
177 GLPtr<GrGLDrawArraysProc> fDrawArrays;
178 GLPtr<GrGLDrawBufferProc> fDrawBuffer;
179 GLPtr<GrGLDrawBuffersProc> fDrawBuffers;
180 GLPtr<GrGLDrawElementsProc> fDrawElements;
181 GLPtr<GrGLEnableProc> fEnable;
182 GLPtr<GrGLEnableVertexAttribArrayProc> fEnableVertexAttribArray;
183 GLPtr<GrGLEndQueryProc> fEndQuery;
184 GLPtr<GrGLFinishProc> fFinish;
185 GLPtr<GrGLFlushProc> fFlush;
186 GLPtr<GrGLFramebufferRenderbufferProc> fFramebufferRenderbuffer;
187 GLPtr<GrGLFramebufferTexture2DProc> fFramebufferTexture2D;
bsalomon@google.comf3a60c02013-03-19 19:06:09 +0000188 GLPtr<GrGLFramebufferTexture2DMultisampleProc> fFramebufferTexture2DMultisample;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000189 GLPtr<GrGLFrontFaceProc> fFrontFace;
190 GLPtr<GrGLGenBuffersProc> fGenBuffers;
191 GLPtr<GrGLGenFramebuffersProc> fGenFramebuffers;
commit-bot@chromium.orgcffff792013-07-26 16:36:04 +0000192 GLPtr<GrGLGenerateMipmapProc> fGenerateMipmap;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000193 GLPtr<GrGLGenQueriesProc> fGenQueries;
194 GLPtr<GrGLGenRenderbuffersProc> fGenRenderbuffers;
195 GLPtr<GrGLGenTexturesProc> fGenTextures;
bsalomon@google.comecd84842013-03-01 15:36:02 +0000196 GLPtr<GrGLGenVertexArraysProc> fGenVertexArrays;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000197 GLPtr<GrGLGetBufferParameterivProc> fGetBufferParameteriv;
198 GLPtr<GrGLGetErrorProc> fGetError;
199 GLPtr<GrGLGetFramebufferAttachmentParameterivProc> fGetFramebufferAttachmentParameteriv;
200 GLPtr<GrGLGetIntegervProc> fGetIntegerv;
201 GLPtr<GrGLGetQueryObjecti64vProc> fGetQueryObjecti64v;
202 GLPtr<GrGLGetQueryObjectivProc> fGetQueryObjectiv;
203 GLPtr<GrGLGetQueryObjectui64vProc> fGetQueryObjectui64v;
204 GLPtr<GrGLGetQueryObjectuivProc> fGetQueryObjectuiv;
205 GLPtr<GrGLGetQueryivProc> fGetQueryiv;
206 GLPtr<GrGLGetProgramInfoLogProc> fGetProgramInfoLog;
207 GLPtr<GrGLGetProgramivProc> fGetProgramiv;
208 GLPtr<GrGLGetRenderbufferParameterivProc> fGetRenderbufferParameteriv;
209 GLPtr<GrGLGetShaderInfoLogProc> fGetShaderInfoLog;
210 GLPtr<GrGLGetShaderivProc> fGetShaderiv;
211 GLPtr<GrGLGetStringProc> fGetString;
bsalomon@google.com1744f972013-02-26 21:46:32 +0000212 GLPtr<GrGLGetStringiProc> fGetStringi;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000213 GLPtr<GrGLGetTexLevelParameterivProc> fGetTexLevelParameteriv;
214 GLPtr<GrGLGetUniformLocationProc> fGetUniformLocation;
215 GLPtr<GrGLLineWidthProc> fLineWidth;
216 GLPtr<GrGLLinkProgramProc> fLinkProgram;
217 GLPtr<GrGLMapBufferProc> fMapBuffer;
218 GLPtr<GrGLPixelStoreiProc> fPixelStorei;
219 GLPtr<GrGLQueryCounterProc> fQueryCounter;
220 GLPtr<GrGLReadBufferProc> fReadBuffer;
221 GLPtr<GrGLReadPixelsProc> fReadPixels;
222 GLPtr<GrGLRenderbufferStorageProc> fRenderbufferStorage;
223 GLPtr<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMultisample;
bsalomon@google.comc9668ec2012-04-11 18:16:41 +0000224 GLPtr<GrGLRenderbufferStorageMultisampleCoverageProc> fRenderbufferStorageMultisampleCoverage;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000225 GLPtr<GrGLResolveMultisampleFramebufferProc> fResolveMultisampleFramebuffer;
226 GLPtr<GrGLScissorProc> fScissor;
227 GLPtr<GrGLShaderSourceProc> fShaderSource;
228 GLPtr<GrGLStencilFuncProc> fStencilFunc;
229 GLPtr<GrGLStencilFuncSeparateProc> fStencilFuncSeparate;
230 GLPtr<GrGLStencilMaskProc> fStencilMask;
231 GLPtr<GrGLStencilMaskSeparateProc> fStencilMaskSeparate;
232 GLPtr<GrGLStencilOpProc> fStencilOp;
233 GLPtr<GrGLStencilOpSeparateProc> fStencilOpSeparate;
234 GLPtr<GrGLTexImage2DProc> fTexImage2D;
235 GLPtr<GrGLTexParameteriProc> fTexParameteri;
bsalomon@google.com4d063de2012-05-31 17:59:23 +0000236 GLPtr<GrGLTexParameterivProc> fTexParameteriv;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000237 GLPtr<GrGLTexSubImage2DProc> fTexSubImage2D;
238 GLPtr<GrGLTexStorage2DProc> fTexStorage2D;
robertphillips@google.coma6ffb582013-04-29 16:50:17 +0000239 GLPtr<GrGLDiscardFramebufferProc> fDiscardFramebuffer;
bsalomon@google.comba800e22012-03-29 21:04:52 +0000240 GLPtr<GrGLUniform1fProc> fUniform1f;
241 GLPtr<GrGLUniform1iProc> fUniform1i;
242 GLPtr<GrGLUniform1fvProc> fUniform1fv;
243 GLPtr<GrGLUniform1ivProc> fUniform1iv;
244 GLPtr<GrGLUniform2fProc> fUniform2f;
245 GLPtr<GrGLUniform2iProc> fUniform2i;
246 GLPtr<GrGLUniform2fvProc> fUniform2fv;
247 GLPtr<GrGLUniform2ivProc> fUniform2iv;
248 GLPtr<GrGLUniform3fProc> fUniform3f;
249 GLPtr<GrGLUniform3iProc> fUniform3i;
250 GLPtr<GrGLUniform3fvProc> fUniform3fv;
251 GLPtr<GrGLUniform3ivProc> fUniform3iv;
252 GLPtr<GrGLUniform4fProc> fUniform4f;
253 GLPtr<GrGLUniform4iProc> fUniform4i;
254 GLPtr<GrGLUniform4fvProc> fUniform4fv;
255 GLPtr<GrGLUniform4ivProc> fUniform4iv;
256 GLPtr<GrGLUniformMatrix2fvProc> fUniformMatrix2fv;
257 GLPtr<GrGLUniformMatrix3fvProc> fUniformMatrix3fv;
258 GLPtr<GrGLUniformMatrix4fvProc> fUniformMatrix4fv;
259 GLPtr<GrGLUnmapBufferProc> fUnmapBuffer;
260 GLPtr<GrGLUseProgramProc> fUseProgram;
261 GLPtr<GrGLVertexAttrib4fvProc> fVertexAttrib4fv;
262 GLPtr<GrGLVertexAttribPointerProc> fVertexAttribPointer;
263 GLPtr<GrGLViewportProc> fViewport;
bsalomon@google.com271cffc2011-05-20 14:13:56 +0000264
bsalomon@google.comfe11cb62012-06-06 15:17:54 +0000265 // Experimental: Functions for GL_NV_path_rendering. These will be
rmistry@google.comfbfcd562012-08-23 18:09:54 +0000266 // alphabetized with the above functions once this is fully supported
bsalomon@google.comfe11cb62012-06-06 15:17:54 +0000267 // (and functions we are unlikely to use will possibly be omitted).
268 GLPtr<GrGLMatrixModeProc> fMatrixMode;
269 GLPtr<GrGLLoadIdentityProc> fLoadIdentity;
270 GLPtr<GrGLLoadMatrixfProc> fLoadMatrixf;
271 GLPtr<GrGLPathCommandsProc> fPathCommands;
272 GLPtr<GrGLPathCoordsProc> fPathCoords;
273 GLPtr<GrGLPathSubCommandsProc> fPathSubCommands;
274 GLPtr<GrGLPathSubCoordsProc> fPathSubCoords;
275 GLPtr<GrGLPathStringProc> fPathString;
276 GLPtr<GrGLPathGlyphsProc> fPathGlyphs;
277 GLPtr<GrGLPathGlyphRangeProc> fPathGlyphRange;
278 GLPtr<GrGLWeightPathsProc> fWeightPaths;
279 GLPtr<GrGLCopyPathProc> fCopyPath;
280 GLPtr<GrGLInterpolatePathsProc> fInterpolatePaths;
281 GLPtr<GrGLTransformPathProc> fTransformPath;
282 GLPtr<GrGLPathParameterivProc> fPathParameteriv;
283 GLPtr<GrGLPathParameteriProc> fPathParameteri;
284 GLPtr<GrGLPathParameterfvProc> fPathParameterfv;
285 GLPtr<GrGLPathParameterfProc> fPathParameterf;
286 GLPtr<GrGLPathDashArrayProc> fPathDashArray;
287 GLPtr<GrGLGenPathsProc> fGenPaths;
288 GLPtr<GrGLDeletePathsProc> fDeletePaths;
289 GLPtr<GrGLIsPathProc> fIsPath;
290 GLPtr<GrGLPathStencilFuncProc> fPathStencilFunc;
291 GLPtr<GrGLPathStencilDepthOffsetProc> fPathStencilDepthOffset;
292 GLPtr<GrGLStencilFillPathProc> fStencilFillPath;
293 GLPtr<GrGLStencilStrokePathProc> fStencilStrokePath;
294 GLPtr<GrGLStencilFillPathInstancedProc> fStencilFillPathInstanced;
295 GLPtr<GrGLStencilStrokePathInstancedProc> fStencilStrokePathInstanced;
296 GLPtr<GrGLPathCoverDepthFuncProc> fPathCoverDepthFunc;
297 GLPtr<GrGLPathColorGenProc> fPathColorGen;
298 GLPtr<GrGLPathTexGenProc> fPathTexGen;
299 GLPtr<GrGLPathFogGenProc> fPathFogGen;
300 GLPtr<GrGLCoverFillPathProc> fCoverFillPath;
301 GLPtr<GrGLCoverStrokePathProc> fCoverStrokePath;
302 GLPtr<GrGLCoverFillPathInstancedProc> fCoverFillPathInstanced;
303 GLPtr<GrGLCoverStrokePathInstancedProc> fCoverStrokePathInstanced;
304 GLPtr<GrGLGetPathParameterivProc> fGetPathParameteriv;
305 GLPtr<GrGLGetPathParameterfvProc> fGetPathParameterfv;
306 GLPtr<GrGLGetPathCommandsProc> fGetPathCommands;
307 GLPtr<GrGLGetPathCoordsProc> fGetPathCoords;
308 GLPtr<GrGLGetPathDashArrayProc> fGetPathDashArray;
309 GLPtr<GrGLGetPathMetricsProc> fGetPathMetrics;
310 GLPtr<GrGLGetPathMetricRangeProc> fGetPathMetricRange;
311 GLPtr<GrGLGetPathSpacingProc> fGetPathSpacing;
312 GLPtr<GrGLGetPathColorGenivProc> fGetPathColorGeniv;
313 GLPtr<GrGLGetPathColorGenfvProc> fGetPathColorGenfv;
314 GLPtr<GrGLGetPathTexGenivProc> fGetPathTexGeniv;
315 GLPtr<GrGLGetPathTexGenfvProc> fGetPathTexGenfv;
316 GLPtr<GrGLIsPointInFillPathProc> fIsPointInFillPath;
317 GLPtr<GrGLIsPointInStrokePathProc> fIsPointInStrokePath;
318 GLPtr<GrGLGetPathLengthProc> fGetPathLength;
319 GLPtr<GrGLPointAlongPathProc> fPointAlongPath;
320
bsalomon@google.com56bfc5a2011-09-01 13:28:16 +0000321 // Per-GL func callback
322#if GR_GL_PER_GL_FUNC_CALLBACK
323 GrGLInterfaceCallbackProc fCallback;
324 GrGLInterfaceCallbackData fCallbackData;
325#endif
326
bsalomon@google.combf2a4692011-05-04 12:35:39 +0000327};
twiz@google.com59a190b2011-03-14 21:23:01 +0000328
329#endif