10b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor/*
20b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor * Copyright 2013 Google Inc.
30b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor *
40b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor * Use of this source code is governed by a BSD-style license that can be
50b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor * found in the LICENSE file.
60b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor */
70b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
80b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor#include "GrGLNoOpInterface.h"
90b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor#include "SkString.h"
100b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor#include "SkThread.h"
110b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
120b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor// the OpenGLES 2.0 spec says this must be >= 128
130b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregorstatic const GrGLint kDefaultMaxVertexUniformVectors = 128;
140b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
150b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor// the OpenGLES 2.0 spec says this must be >=16
160b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregorstatic const GrGLint kDefaultMaxFragmentUniformVectors = 16;
170b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
180b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor// the OpenGLES 2.0 spec says this must be >= 8
190b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregorstatic const GrGLint kDefaultMaxVertexAttribs = 8;
200b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
218a51491d936d8c50480f3c3ca6647be12a7ad51fDouglas Gregor// the OpenGLES 2.0 spec says this must be >= 8
22508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregorstatic const GrGLint kDefaultMaxVaryingVectors = 8;
23508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor
24508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregorstatic const char* kExtensions[] = {
25508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    "GL_ARB_framebuffer_object",
26508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    "GL_ARB_blend_func_extended",
27508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    "GL_ARB_timer_query",
28508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    "GL_ARB_draw_buffers",
29508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    "GL_ARB_occlusion_query",
30508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    "GL_EXT_blend_color",
31508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    "GL_EXT_stencil_wrap"
32508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor};
33508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor
34508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregornamespace {
35508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregorconst GrGLubyte* combined_extensions_string() {
36508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    static SkString gExtString;
37508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    static SkMutex gMutex;
38508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    gMutex.acquire();
39508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    if (0 == gExtString.size()) {
40508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor        for (size_t i = 0; i < GR_ARRAY_COUNT(kExtensions) - 1; ++i) {
414112877d1043d0b937f5abcf043bc7fa48138f05Douglas Gregor            gExtString.append(kExtensions[i]);
421282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor            gExtString.append(" ");
431282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor        }
441282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor        gExtString.append(kExtensions[GR_ARRAY_COUNT(kExtensions) - 1]);
451282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor    }
461282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor    gMutex.release();
47508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    return (const GrGLubyte*) gExtString.c_str();
48508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor}
49508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor}
500b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
510b9247f129401b4849682b2e2bcdea8fc977068aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendColor(GrGLclampf red,
52f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                              GrGLclampf green,
531eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLclampf blue,
54f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                              GrGLclampf alpha) {
55f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
56d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor
57f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocation(GrGLuint program,
58d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor                                                        GrGLuint colorNumber,
59d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor                                                        const GrGLchar* name) {
60199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
61199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
62199d99192fbcca9f043596c40ead4afab4999dbaDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendFunc(GrGLenum sfactor,
63199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                              GrGLenum dfactor) {
64199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
65199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
661eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLBufferSubData(GrGLenum target,
67199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                 GrGLintptr offset,
68199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                 GrGLsizeiptr size,
691eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                 const GrGLvoid* data) {
70199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
71199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
72199d99192fbcca9f043596c40ead4afab4999dbaDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLClear(GrGLbitfield mask) {
731eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
74199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
75f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearColor(GrGLclampf red,
761eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLclampf green,
771eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLclampf blue,
78335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson                                              GrGLclampf alpha) {
79f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
80f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
811eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearStencil(GrGLint s) {
82199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
831eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
84199d99192fbcca9f043596c40ead4afab4999dbaDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLColorMask(GrGLboolean red,
8525af1ed6ffa46a333886264299be98a838097b34Anders Carlsson                                             GrGLboolean green,
861eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                             GrGLboolean blue,
8725af1ed6ffa46a333886264299be98a838097b34Anders Carlsson                                             GrGLboolean alpha) {
8825af1ed6ffa46a333886264299be98a838097b34Anders Carlsson}
8925af1ed6ffa46a333886264299be98a838097b34Anders Carlsson
9025af1ed6ffa46a333886264299be98a838097b34Anders CarlssonGrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompileShader(GrGLuint shader) {
9125af1ed6ffa46a333886264299be98a838097b34Anders Carlsson}
9225af1ed6ffa46a333886264299be98a838097b34Anders Carlsson
9325af1ed6ffa46a333886264299be98a838097b34Anders CarlssonGrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompressedTexImage2D(GrGLenum target,
94f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                        GrGLint level,
95199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                        GrGLenum internalformat,
961eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                        GrGLsizei width,
97f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                        GrGLsizei height,
981eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                        GrGLint border,
991eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                        GrGLsizei imageSize,
100199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                        const GrGLvoid* data) {
101199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
102335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson
103f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLCopyTexSubImage2D(GrGLenum target,
104f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                     GrGLint level,
105335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson                                                     GrGLint xoffset,
106f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                     GrGLint yoffset,
107f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                     GrGLint x,
108f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                     GrGLint y,
109335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson                                                     GrGLsizei width,
110199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                     GrGLsizei height) {
111199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
112199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
113199d99192fbcca9f043596c40ead4afab4999dbaDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLCullFace(GrGLenum mode) {
114f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
115f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
116f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDepthMask(GrGLboolean flag) {
117f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
118335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson
119f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisable(GrGLenum cap) {
120f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
121f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
122f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableClientState(GrGLenum) {
123199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
124199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
1251eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableVertexAttribArray(GrGLuint index) {
126199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
127199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
128199d99192fbcca9f043596c40ead4afab4999dbaDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawArrays(GrGLenum mode,
129199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                              GrGLint first,
130f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                              GrGLsizei count) {
1311eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
132f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
133f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffer(GrGLenum mode) {
134f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
135f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
1361eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffers(GrGLsizei n,
137199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                               const GrGLenum* bufs) {
138199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
139199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
1401eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawElements(GrGLenum mode,
141199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                GrGLsizei count,
142199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                GrGLenum type,
143199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                const GrGLvoid* indices) {
144f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
145199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
1461eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnable(GrGLenum cap) {
147199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
1481eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
1491eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableClientState(GrGLenum cap) {
150199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
151f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
152199d99192fbcca9f043596c40ead4afab4999dbaDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableVertexAttribArray(GrGLuint index) {
1531eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
1549eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas Gregor
1559eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLEndQuery(GrGLenum target) {
1569eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas Gregor}
1579eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas Gregor
1589eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLFinish() {
1599eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas Gregor}
1609eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas Gregor
1619eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLFlush() {
1629eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas Gregor}
1639eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas Gregor
1649eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLFrontFace(GrGLenum mode) {
1659eea08ba72f8b1e7faf38e43376b9157fc4a2af2Douglas Gregor}
166f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
167199d99192fbcca9f043596c40ead4afab4999dbaDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLLineWidth(GrGLfloat width) {
168199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
169f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
170f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLLinkProgram(GrGLuint program) {
171f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
172f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
173f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLLoadIdentity() {
174f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
175d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor
176d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLLoadMatrixf(const GrGLfloat*) {
177d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor}
178f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
179f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLMatrixMode(GrGLenum) {
180f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
181d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor
182d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLQueryCounter(GrGLuint id, GrGLenum target) {
1831eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
184f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
185f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLReadBuffer(GrGLenum src) {
186f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
187f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
188d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLScissor(GrGLint x,
18997fbaa2a38804268a024f1a104b43fcf8b4411b0Argyrios Kyrtzidis                                           GrGLint y,
19097fbaa2a38804268a024f1a104b43fcf8b4411b0Argyrios Kyrtzidis                                           GrGLsizei width,
191f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                           GrGLsizei height) {
192f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
193f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
194f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLShaderSource(GrGLuint shader,
195f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                GrGLsizei count,
196f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor#if GR_GL_USE_NEW_SHADER_SOURCE_SIGNATURE
197d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor                                                const char* const * str,
198d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor#else
1991eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                const char** str,
200de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor#endif
201de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                const GrGLint* length) {
202de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
203de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
204de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFunc(GrGLenum func, GrGLint ref, GrGLuint mask) {
205de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
206de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
207de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFuncSeparate(GrGLenum face,
208de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                       GrGLenum func,
209de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                       GrGLint ref,
210de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                       GrGLuint mask) {
211de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
212de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
213de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMask(GrGLuint mask) {
214de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
215de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
216de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMaskSeparate(GrGLenum face, GrGLuint mask) {
217de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
218de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
219de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOp(GrGLenum fail, GrGLenum zfail, GrGLenum zpass) {
220de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
221de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
222de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOpSeparate(GrGLenum face,
223de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                     GrGLenum fail,
224de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                     GrGLenum zfail,
2251eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                     GrGLenum zpass) {
226de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
227de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
228de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGenf(GrGLenum, GrGLenum, float) {
2291eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
230de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
231de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGenfv(GrGLenum, GrGLenum, const float*) {
232de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
233de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
234de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGeni(GrGLenum, GrGLenum, GrGLint) {
235de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
236de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
237de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexImage2D(GrGLenum target,
2381eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLint level,
239de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              GrGLint internalformat,
2401eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLsizei width,
241de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              GrGLsizei height,
242de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              GrGLint border,
243de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              GrGLenum format,
244de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              GrGLenum type,
245de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              const GrGLvoid* pixels) {
246de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
247de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
248de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteri(GrGLenum target,
249de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                 GrGLenum pname,
2501eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                 GrGLint param) {
251de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
252de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
253de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteriv(GrGLenum target,
254de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                  GrGLenum pname,
255de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                  const GrGLint* params) {
256de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
257de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
258de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexStorage2D(GrGLenum target,
259de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                GrGLsizei levels,
2601eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                GrGLenum internalformat,
261de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                GrGLsizei width,
262de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                GrGLsizei height) {
2631eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
264de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
265de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDiscardFramebuffer(GrGLenum target,
266de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                      GrGLsizei numAttachments,
267de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                      const GrGLenum* attachments) {
268de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
269de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
2701eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexSubImage2D(GrGLenum target,
2711eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                 GrGLint level,
272de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                 GrGLint xoffset,
273de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                 GrGLint yoffset,
274de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                 GrGLsizei width,
2751eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                 GrGLsizei height,
276de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                 GrGLenum format,
277de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                 GrGLenum type,
2781eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                 const GrGLvoid* pixels) {
279de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
280de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
281de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1f(GrGLint location, GrGLfloat v0) {
282de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
2831eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
284de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1i(GrGLint location, GrGLint v0) {
285de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
286de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
287de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1fv(GrGLint location,
288de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              GrGLsizei count,
289de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              const GrGLfloat* v) {
2901eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
291de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
2921eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1iv(GrGLint location,
293de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              GrGLsizei count,
294de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                              const GrGLint* v) {
295de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
296de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
297de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2f(GrGLint location, GrGLfloat v0, GrGLfloat v1) {
2981eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
299de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor
300de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2i(GrGLint location, GrGLint v0, GrGLint v1) {
301de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor}
3021eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
3030953e767ff7817f97b3ab20896b229891eeff45bJohn McCallGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2fv(GrGLint location,
304f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLsizei count,
305f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              const GrGLfloat* v) {
306f290e0db835a619014538c41ed552696efc0e977Douglas Gregor}
307f290e0db835a619014538c41ed552696efc0e977Douglas Gregor
308f290e0db835a619014538c41ed552696efc0e977Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2iv(GrGLint location,
3090953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                              GrGLsizei count,
3100953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                              const GrGLint* v) {
311f290e0db835a619014538c41ed552696efc0e977Douglas Gregor}
312f290e0db835a619014538c41ed552696efc0e977Douglas Gregor
313f290e0db835a619014538c41ed552696efc0e977Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3f(GrGLint location,
314f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLfloat v0,
3150953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                              GrGLfloat v1,
316f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLfloat v2) {
317f290e0db835a619014538c41ed552696efc0e977Douglas Gregor}
3180953e767ff7817f97b3ab20896b229891eeff45bJohn McCall
319f290e0db835a619014538c41ed552696efc0e977Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3i(GrGLint location,
320f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLint v0,
3211eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLint v1,
3220953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                              GrGLint v2) {
3230953e767ff7817f97b3ab20896b229891eeff45bJohn McCall}
324f290e0db835a619014538c41ed552696efc0e977Douglas Gregor
325f290e0db835a619014538c41ed552696efc0e977Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3fv(GrGLint location,
3260953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                              GrGLsizei count,
327f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              const GrGLfloat* v) {
328f290e0db835a619014538c41ed552696efc0e977Douglas Gregor}
329f290e0db835a619014538c41ed552696efc0e977Douglas Gregor
3301eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3iv(GrGLint location,
331f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLsizei count,
332f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              const GrGLint* v) {
3331eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
334f290e0db835a619014538c41ed552696efc0e977Douglas Gregor
335f290e0db835a619014538c41ed552696efc0e977Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4f(GrGLint location,
3360953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                              GrGLfloat v0,
337f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLfloat v1,
338f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLfloat v2,
3391eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLfloat v3) {
340f290e0db835a619014538c41ed552696efc0e977Douglas Gregor}
341f290e0db835a619014538c41ed552696efc0e977Douglas Gregor
3421eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4i(GrGLint location,
343f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLint v0,
344f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLint v1,
3450953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                              GrGLint v2,
346f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLint v3) {
347f290e0db835a619014538c41ed552696efc0e977Douglas Gregor}
3481eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
349d497206844a894a0557e927adf29b34fe960dffdAnders CarlssonGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4fv(GrGLint location,
350f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              GrGLsizei count,
351f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                              const GrGLfloat* v) {
352f290e0db835a619014538c41ed552696efc0e977Douglas Gregor}
353f290e0db835a619014538c41ed552696efc0e977Douglas Gregor
354500d331eade2f5070b66ba51d777224f9fda6e1dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4iv(GrGLint location,
355500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                              GrGLsizei count,
356500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                              const GrGLint* v) {
357500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor}
358500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor
359500d331eade2f5070b66ba51d777224f9fda6e1dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix2fv(GrGLint location,
360500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    GrGLsizei count,
361500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    GrGLboolean transpose,
362500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    const GrGLfloat* value) {
363500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor}
364500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor
365500d331eade2f5070b66ba51d777224f9fda6e1dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix3fv(GrGLint location,
366500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    GrGLsizei count,
367500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    GrGLboolean transpose,
368500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    const GrGLfloat* value) {
369508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor}
3701eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
371500d331eade2f5070b66ba51d777224f9fda6e1dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix4fv(GrGLint location,
372500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    GrGLsizei count,
373500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    GrGLboolean transpose,
374500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor                                                    const GrGLfloat* value) {
375f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
3761eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
377f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib4fv(GrGLuint indx, const GrGLfloat* values) {
378f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
379f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
380500d331eade2f5070b66ba51d777224f9fda6e1dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttribPointer(GrGLuint indx,
381508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor                                                       GrGLint size,
3820b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor                                                       GrGLenum type,
3830b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor                                                       GrGLboolean normalized,
384f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                       GrGLsizei stride,
385f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                       const GrGLvoid* ptr) {
3860b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor}
387500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor
388500d331eade2f5070b66ba51d777224f9fda6e1dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexPointer(GrGLint, GrGLenum, GrGLsizei, const GrGLvoid*) {
3891eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
390500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor
391508f1c889b9833903ea394034fe0246d3a57a32dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLViewport(GrGLint x,
3920953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                            GrGLint y,
3930953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                            GrGLsizei width,
3940953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                            GrGLsizei height) {
395500d331eade2f5070b66ba51d777224f9fda6e1dDouglas Gregor}
3961eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
397f670c8cfa58b4c224eb8fb566130dc47844dd3deDouglas Gregor  GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetFramebufferAttachmentParameteriv(GrGLenum target,
3981282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor                                                                         GrGLenum attachment,
3991282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor                                                                         GrGLenum pname,
4001282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor                                                                         GrGLint* params) {
4011282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor}
4021282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor
4031282029f3d37f482bbba3c38ea9da17a78d11d40Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetRenderbufferParameteriv(GrGLenum target,
404f670c8cfa58b4c224eb8fb566130dc47844dd3deDouglas Gregor                                                              GrGLenum pname,
4051282029f3d37f482bbba3c38ea9da17a78d11d40Douglas Gregor                                                              GrGLint* params) {
4060b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor}
407199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
4081eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorage(GrGLenum target,
4091eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                       GrGLenum internalformat,
410199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                       GrGLsizei width,
411199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor                                                       GrGLsizei height) {
412199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
413199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
4141eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorageMultisample(GrGLenum target,
415183700f494ec9b6701b6efe82bcb25f4c79ba561John McCall                                                                  GrGLsizei samples,
416f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                                  GrGLenum internalformat,
417f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                                                  GrGLsizei width,
4181eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                                  GrGLsizei height) {
4199e9fae4b8af47c15696da4ea3c30102e3a035179Douglas Gregor}
4209e9fae4b8af47c15696da4ea3c30102e3a035179Douglas Gregor
4219e9fae4b8af47c15696da4ea3c30102e3a035179Douglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlitFramebuffer(GrGLint srcX0,
422f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                                   GrGLint srcY0,
4230953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                                   GrGLint srcX1,
4240953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                                   GrGLint srcY1,
4250953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                                   GrGLint dstX0,
4260953e767ff7817f97b3ab20896b229891eeff45bJohn McCall                                                   GrGLint dstY0,
427f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                                   GrGLint dstX1,
428f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                                   GrGLint dstY1,
429f290e0db835a619014538c41ed552696efc0e977Douglas Gregor                                                   GrGLbitfield mask,
4301eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                   GrGLenum filter) {
4310b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor}
4320b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
433508f1c889b9833903ea394034fe0246d3a57a32dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLResolveMultisampleFramebuffer() {
434f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
435f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
436f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocationIndexed(GrGLuint program,
437f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                               GrGLuint colorNumber,
438f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                               GrGLuint index,
4390b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor                                                               const GrGLchar * name) {
4400b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor}
4411eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
4420953e767ff7817f97b3ab20896b229891eeff45bJohn McCallGrGLenum GR_GL_FUNCTION_TYPE noOpGLCheckFramebufferStatus(GrGLenum target) {
4430953e767ff7817f97b3ab20896b229891eeff45bJohn McCall
444f290e0db835a619014538c41ed552696efc0e977Douglas Gregor    GrAlwaysAssert(GR_GL_FRAMEBUFFER == target);
445f290e0db835a619014538c41ed552696efc0e977Douglas Gregor
4461eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    return GR_GL_FRAMEBUFFER_COMPLETE;
4470b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor}
4480b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
4490b9247f129401b4849682b2e2bcdea8fc977068aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGenIds(GrGLsizei n, GrGLuint* ids) {
4501eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    static int gCurrID = 1;
4510b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor    for (int i = 0; i < n; ++i) {
4521eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        ids[i] = ++gCurrID;
4531eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump   }
4541eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
4550b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor
456f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLDeleteIds(GrGLsizei n, const GrGLuint* ids) {
4571eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
458f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
459f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLenum GR_GL_FUNCTION_TYPE noOpGLGetError() {
460f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor    return GR_GL_NO_ERROR;
461f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
462f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
4630b9247f129401b4849682b2e2bcdea8fc977068aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetIntegerv(GrGLenum pname, GrGLint* params) {
464f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor    // TODO: remove from Ganesh the #defines for gets we don't use.
4650b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor    // We would like to minimize gets overall due to performance issues
4660b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor    switch (pname) {
467f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_CONTEXT_PROFILE_MASK:
468f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            *params = GR_GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
469f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            break;
470f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_STENCIL_BITS:
471508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor            *params = 8;
472508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor            break;
473508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor        case GR_GL_SAMPLES:
474508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor            *params = 1;
475508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor            break;
476508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor        case GR_GL_FRAMEBUFFER_BINDING:
477508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor            *params = 0;
4781eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump            break;
479508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor        case GR_GL_VIEWPORT:
480508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor            params[0] = 0;
4810b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor            params[1] = 0;
482d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            params[2] = 800;
483199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor            params[3] = 600;
484199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor            break;
485f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_MAX_TEXTURE_IMAGE_UNITS:
4861eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump            *params = 8;
487199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor            break;
488d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor        case GR_GL_MAX_TEXTURE_COORDS:
4896217b80b7a1379b74cced1c076338262c3c980b3Ted Kremenek            *params = 8;
490d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            break;
491f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_MAX_VERTEX_UNIFORM_VECTORS:
4921eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump            *params = kDefaultMaxVertexUniformVectors;
4934112877d1043d0b937f5abcf043bc7fa48138f05Douglas Gregor            break;
494f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_MAX_FRAGMENT_UNIFORM_VECTORS:
495d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            *params = kDefaultMaxFragmentUniformVectors;
496d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            break;
4974112877d1043d0b937f5abcf043bc7fa48138f05Douglas Gregor        case GR_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
498d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            *params = 16 * 4;
4991eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump            break;
500199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor        case GR_GL_NUM_COMPRESSED_TEXTURE_FORMATS:
501d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            *params = 0;
5026217b80b7a1379b74cced1c076338262c3c980b3Ted Kremenek            break;
503d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor        case GR_GL_COMPRESSED_TEXTURE_FORMATS:
504f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            break;
5051eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        case GR_GL_MAX_TEXTURE_SIZE:
506f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            *params = 8192;
507d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            break;
508d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor        case GR_GL_MAX_RENDERBUFFER_SIZE:
509508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor            *params = 8192;
510d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            break;
5110b9247f129401b4849682b2e2bcdea8fc977068aDouglas Gregor        case GR_GL_MAX_SAMPLES:
512199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor            *params = 32;
513d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            break;
5146217b80b7a1379b74cced1c076338262c3c980b3Ted Kremenek        case GR_GL_MAX_VERTEX_ATTRIBS:
515d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            *params = kDefaultMaxVertexAttribs;
516f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            break;
5171eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        case GR_GL_MAX_VARYING_VECTORS:
518f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            *params = kDefaultMaxVaryingVectors;
519d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            break;
520d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor        case GR_GL_NUM_EXTENSIONS:
521508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor            *params = GR_ARRAY_COUNT(kExtensions);
522d560d5025a0e5b1942d99d5f39005337b03a64c2Douglas Gregor            break;
5231eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        default:
524199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor            GrCrash("Unexpected pname to GetIntegerv");
5254d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson   }
5261eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
5274d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson
5284d6fb501ffc0568ca5ca7266005e96a6f1273845Anders CarlssonGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetInfoLog(GrGLuint program,
529f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                              GrGLsizei bufsize,
5301eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLsizei* length,
531f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                              char* infolog) {
5324d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson    if (length) {
5334d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson        *length = 0;
534508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor   }
5354d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson    if (bufsize > 0) {
536199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor        *infolog = 0;
537199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor   }
5384d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson}
5391eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
5404d6fb501ffc0568ca5ca7266005e96a6f1273845Anders CarlssonGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetShaderOrProgramiv(GrGLuint program,
5414d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson                                                        GrGLenum pname,
542f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                        GrGLint* params) {
5431eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    switch (pname) {
5441eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        case GR_GL_LINK_STATUS:  // fallthru
5454d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson        case GR_GL_COMPILE_STATUS:
5464d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson            *params = GR_GL_TRUE;
547f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            break;
5481eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        case GR_GL_INFO_LOG_LENGTH:
549f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            *params = 0;
5504d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson            break;
5514d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson        // we don't expect any other pnames
552508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor        default:
5534d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson            GrCrash("Unexpected pname to GetProgramiv");
5544d6fb501ffc0568ca5ca7266005e96a6f1273845Anders Carlsson            break;
555199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor   }
556199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
557199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
558199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregornamespace {
559f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregortemplate <typename T>
5601eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpvoid query_result(GrGLenum GLtarget, GrGLenum pname, T *params) {
561199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor    switch (pname) {
562199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor        case GR_GL_QUERY_RESULT_AVAILABLE:
563199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor            *params = GR_GL_TRUE;
564f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            break;
565f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_QUERY_RESULT:
566f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            *params = 0;
567f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            break;
568508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor        default:
569f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            GrCrash("Unexpected pname passed to GetQueryObject.");
5701eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump            break;
571199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor   }
5721eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
573199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
574199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
575f67875d5addf36b951ad37fb04509ab2b572c88aDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryiv(GrGLenum GLtarget,
5761eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLenum pname,
5771eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                              GrGLint *params) {
578199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor    switch (pname) {
5791eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        case GR_GL_CURRENT_QUERY:
580199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor            *params = 0;
5811eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump            break;
582335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson        case GR_GL_QUERY_COUNTER_BITS:
583335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson            *params = 32;
584335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson            break;
585f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        default:
586335e24a194f2000086d298b800d6169ebc5a7ee6Anders Carlsson            GrCrash("Unexpected pname passed GetQueryiv.");
587199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor   }
588199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor}
589199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
590199d99192fbcca9f043596c40ead4afab4999dbaDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjecti64v(GrGLuint id,
591f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                      GrGLenum pname,
5921eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                      GrGLint64 *params) {
593199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor    query_result(id, pname, params);
594f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
595199d99192fbcca9f043596c40ead4afab4999dbaDouglas Gregor
5961eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectiv(GrGLuint id,
5971eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                    GrGLenum pname,
5981eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                    GrGLint *params) {
5991eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    query_result(id, pname, params);
600a27fad59dc760252af025ef6a86d31bb7d11a44aAnders Carlsson}
6011eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
602a27fad59dc760252af025ef6a86d31bb7d11a44aAnders CarlssonGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectui64v(GrGLuint id,
603a27fad59dc760252af025ef6a86d31bb7d11a44aAnders Carlsson                                                       GrGLenum pname,
604f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor                                                       GrGLuint64 *params) {
6051eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    query_result(id, pname, params);
6061eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
607a27fad59dc760252af025ef6a86d31bb7d11a44aAnders Carlsson
608994b6cb65c9daba2128366bc4c64be6dbf953528Anders CarlssonGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectuiv(GrGLuint id,
6091eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                     GrGLenum pname,
610994b6cb65c9daba2128366bc4c64be6dbf953528Anders Carlsson                                                     GrGLuint *params) {
611f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor    query_result(id, pname, params);
6121eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
613994b6cb65c9daba2128366bc4c64be6dbf953528Anders Carlsson
614f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregorconst GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetString(GrGLenum name) {
6151eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    switch (name) {
616994b6cb65c9daba2128366bc4c64be6dbf953528Anders Carlsson        case GR_GL_EXTENSIONS:
617f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            return combined_extensions_string();
618994b6cb65c9daba2128366bc4c64be6dbf953528Anders Carlsson        case GR_GL_VERSION:
619a27fad59dc760252af025ef6a86d31bb7d11a44aAnders Carlsson            return (const GrGLubyte*)"4.0 Debug GL";
620f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_SHADING_LANGUAGE_VERSION:
621f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            return (const GrGLubyte*)"4.20.8 Debug GLSL";
622f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_VENDOR:
623f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            return (const GrGLubyte*)"Debug Vendor";
624508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor        case GR_GL_RENDERER:
625f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            return (const GrGLubyte*)"The Debug (Non-)Renderer";
6261eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump        default:
627a27fad59dc760252af025ef6a86d31bb7d11a44aAnders Carlsson            GrCrash("Unexpected name passed to GetString");
628a27fad59dc760252af025ef6a86d31bb7d11a44aAnders Carlsson            return NULL;
629f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor   }
630f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor}
631f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor
632f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregorconst GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetStringi(GrGLenum name, GrGLuint i) {
633508f1c889b9833903ea394034fe0246d3a57a32dDouglas Gregor    switch (name) {
634f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor        case GR_GL_EXTENSIONS:
635a27fad59dc760252af025ef6a86d31bb7d11a44aAnders Carlsson            if (static_cast<size_t>(i) <= GR_ARRAY_COUNT(kExtensions)) {
6361eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                return (const GrGLubyte*) kExtensions[i];
637f67875d5addf36b951ad37fb04509ab2b572c88aDouglas Gregor            } else {
638a27fad59dc760252af025ef6a86d31bb7d11a44aAnders Carlsson                return NULL;
6391eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump            }
640f670c8cfa58b4c224eb8fb566130dc47844dd3deDouglas Gregor        default:
641d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor            GrCrash("Unexpected name passed to GetStringi");
642d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor            return NULL;
643d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor    }
644d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor}
645d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor
646d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas GregorGrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetTexLevelParameteriv(GrGLenum target,
647d708c72e3e5186662fb0045d2bd666bfd93a013dDouglas Gregor                                                          GrGLint level,
6481eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                                          GrGLenum pname,
649de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor                                                          GrGLint* params) {
650de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor    // we used to use this to query stuff about externally created textures,
6511eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    // now we just require clients to tell us everything about the texture.
652de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor    GrCrash("Should never query texture parameters.");
6531eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
6544a5c15f75f76b95e1c2ceb6fa2737dcadd5f4be1Douglas Gregor
655de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas GregorGrGLint GR_GL_FUNCTION_TYPE noOpGLGetUniformLocation(GrGLuint program, const char* name) {
656de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor    static int gUniLocation = 0;
657de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor    return ++gUniLocation;
6581eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump}
659de0cb8b6c15c756e14b0716bebd40f4ce48ee717Douglas Gregor