• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2013 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "GrGLNoOpInterface.h"
9 #include "SkString.h"
10 #include "SkThread.h"
11 
12 // the OpenGLES 2.0 spec says this must be >= 128
13 static const GrGLint kDefaultMaxVertexUniformVectors = 128;
14 
15 // the OpenGLES 2.0 spec says this must be >=16
16 static const GrGLint kDefaultMaxFragmentUniformVectors = 16;
17 
18 // the OpenGLES 2.0 spec says this must be >= 8
19 static const GrGLint kDefaultMaxVertexAttribs = 8;
20 
21 // the OpenGLES 2.0 spec says this must be >= 8
22 static const GrGLint kDefaultMaxVaryingVectors = 8;
23 
24 static const char* kExtensions[] = {
25     "GL_ARB_framebuffer_object",
26     "GL_ARB_blend_func_extended",
27     "GL_ARB_timer_query",
28     "GL_ARB_draw_buffers",
29     "GL_ARB_occlusion_query",
30     "GL_EXT_blend_color",
31     "GL_EXT_stencil_wrap"
32 };
33 
34 namespace {
combined_extensions_string()35 const GrGLubyte* combined_extensions_string() {
36     static SkString gExtString;
37     static SkMutex gMutex;
38     gMutex.acquire();
39     if (0 == gExtString.size()) {
40         for (size_t i = 0; i < GR_ARRAY_COUNT(kExtensions) - 1; ++i) {
41             gExtString.append(kExtensions[i]);
42             gExtString.append(" ");
43         }
44         gExtString.append(kExtensions[GR_ARRAY_COUNT(kExtensions) - 1]);
45     }
46     gMutex.release();
47     return (const GrGLubyte*) gExtString.c_str();
48 }
49 }
50 
noOpGLBlendColor(GrGLclampf red,GrGLclampf green,GrGLclampf blue,GrGLclampf alpha)51 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendColor(GrGLclampf red,
52                                               GrGLclampf green,
53                                               GrGLclampf blue,
54                                               GrGLclampf alpha) {
55 }
56 
noOpGLBindFragDataLocation(GrGLuint program,GrGLuint colorNumber,const GrGLchar * name)57 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocation(GrGLuint program,
58                                                         GrGLuint colorNumber,
59                                                         const GrGLchar* name) {
60 }
61 
noOpGLBlendFunc(GrGLenum sfactor,GrGLenum dfactor)62 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendFunc(GrGLenum sfactor,
63                                               GrGLenum dfactor) {
64 }
65 
noOpGLBufferSubData(GrGLenum target,GrGLintptr offset,GrGLsizeiptr size,const GrGLvoid * data)66 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBufferSubData(GrGLenum target,
67                                                  GrGLintptr offset,
68                                                  GrGLsizeiptr size,
69                                                  const GrGLvoid* data) {
70 }
71 
noOpGLClear(GrGLbitfield mask)72 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClear(GrGLbitfield mask) {
73 }
74 
noOpGLClearColor(GrGLclampf red,GrGLclampf green,GrGLclampf blue,GrGLclampf alpha)75 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearColor(GrGLclampf red,
76                                               GrGLclampf green,
77                                               GrGLclampf blue,
78                                               GrGLclampf alpha) {
79 }
80 
noOpGLClearStencil(GrGLint s)81 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearStencil(GrGLint s) {
82 }
83 
noOpGLColorMask(GrGLboolean red,GrGLboolean green,GrGLboolean blue,GrGLboolean alpha)84 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLColorMask(GrGLboolean red,
85                                              GrGLboolean green,
86                                              GrGLboolean blue,
87                                              GrGLboolean alpha) {
88 }
89 
noOpGLCompileShader(GrGLuint shader)90 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompileShader(GrGLuint shader) {
91 }
92 
noOpGLCompressedTexImage2D(GrGLenum target,GrGLint level,GrGLenum internalformat,GrGLsizei width,GrGLsizei height,GrGLint border,GrGLsizei imageSize,const GrGLvoid * data)93 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompressedTexImage2D(GrGLenum target,
94                                                         GrGLint level,
95                                                         GrGLenum internalformat,
96                                                         GrGLsizei width,
97                                                         GrGLsizei height,
98                                                         GrGLint border,
99                                                         GrGLsizei imageSize,
100                                                         const GrGLvoid* data) {
101 }
102 
noOpGLCopyTexSubImage2D(GrGLenum target,GrGLint level,GrGLint xoffset,GrGLint yoffset,GrGLint x,GrGLint y,GrGLsizei width,GrGLsizei height)103 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCopyTexSubImage2D(GrGLenum target,
104                                                      GrGLint level,
105                                                      GrGLint xoffset,
106                                                      GrGLint yoffset,
107                                                      GrGLint x,
108                                                      GrGLint y,
109                                                      GrGLsizei width,
110                                                      GrGLsizei height) {
111 }
112 
noOpGLCullFace(GrGLenum mode)113 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCullFace(GrGLenum mode) {
114 }
115 
noOpGLDepthMask(GrGLboolean flag)116 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDepthMask(GrGLboolean flag) {
117 }
118 
noOpGLDisable(GrGLenum cap)119 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisable(GrGLenum cap) {
120 }
121 
noOpGLDisableClientState(GrGLenum)122 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableClientState(GrGLenum) {
123 }
124 
noOpGLDisableVertexAttribArray(GrGLuint index)125 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableVertexAttribArray(GrGLuint index) {
126 }
127 
noOpGLDrawArrays(GrGLenum mode,GrGLint first,GrGLsizei count)128 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawArrays(GrGLenum mode,
129                                               GrGLint first,
130                                               GrGLsizei count) {
131 }
132 
noOpGLDrawBuffer(GrGLenum mode)133 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffer(GrGLenum mode) {
134 }
135 
noOpGLDrawBuffers(GrGLsizei n,const GrGLenum * bufs)136 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffers(GrGLsizei n,
137                                                const GrGLenum* bufs) {
138 }
139 
noOpGLDrawElements(GrGLenum mode,GrGLsizei count,GrGLenum type,const GrGLvoid * indices)140 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawElements(GrGLenum mode,
141                                                 GrGLsizei count,
142                                                 GrGLenum type,
143                                                 const GrGLvoid* indices) {
144 }
145 
noOpGLEnable(GrGLenum cap)146 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnable(GrGLenum cap) {
147 }
148 
noOpGLEnableClientState(GrGLenum cap)149 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableClientState(GrGLenum cap) {
150 }
151 
noOpGLEnableVertexAttribArray(GrGLuint index)152 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableVertexAttribArray(GrGLuint index) {
153 }
154 
noOpGLEndQuery(GrGLenum target)155 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEndQuery(GrGLenum target) {
156 }
157 
noOpGLFinish()158 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFinish() {
159 }
160 
noOpGLFlush()161 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFlush() {
162 }
163 
noOpGLFrontFace(GrGLenum mode)164 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFrontFace(GrGLenum mode) {
165 }
166 
noOpGLLineWidth(GrGLfloat width)167 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLineWidth(GrGLfloat width) {
168 }
169 
noOpGLLinkProgram(GrGLuint program)170 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLinkProgram(GrGLuint program) {
171 }
172 
noOpGLLoadIdentity()173 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLoadIdentity() {
174 }
175 
noOpGLLoadMatrixf(const GrGLfloat *)176 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLoadMatrixf(const GrGLfloat*) {
177 }
178 
noOpGLMatrixMode(GrGLenum)179 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLMatrixMode(GrGLenum) {
180 }
181 
noOpGLQueryCounter(GrGLuint id,GrGLenum target)182 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLQueryCounter(GrGLuint id, GrGLenum target) {
183 }
184 
noOpGLReadBuffer(GrGLenum src)185 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLReadBuffer(GrGLenum src) {
186 }
187 
noOpGLScissor(GrGLint x,GrGLint y,GrGLsizei width,GrGLsizei height)188 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLScissor(GrGLint x,
189                                            GrGLint y,
190                                            GrGLsizei width,
191                                            GrGLsizei height) {
192 }
193 
noOpGLShaderSource(GrGLuint shader,GrGLsizei count,const char * const * str,const GrGLint * length)194 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLShaderSource(GrGLuint shader,
195                                                 GrGLsizei count,
196 #if GR_GL_USE_NEW_SHADER_SOURCE_SIGNATURE
197                                                 const char* const * str,
198 #else
199                                                 const char** str,
200 #endif
201                                                 const GrGLint* length) {
202 }
203 
noOpGLStencilFunc(GrGLenum func,GrGLint ref,GrGLuint mask)204 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFunc(GrGLenum func, GrGLint ref, GrGLuint mask) {
205 }
206 
noOpGLStencilFuncSeparate(GrGLenum face,GrGLenum func,GrGLint ref,GrGLuint mask)207 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFuncSeparate(GrGLenum face,
208                                                        GrGLenum func,
209                                                        GrGLint ref,
210                                                        GrGLuint mask) {
211 }
212 
noOpGLStencilMask(GrGLuint mask)213 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMask(GrGLuint mask) {
214 }
215 
noOpGLStencilMaskSeparate(GrGLenum face,GrGLuint mask)216 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMaskSeparate(GrGLenum face, GrGLuint mask) {
217 }
218 
noOpGLStencilOp(GrGLenum fail,GrGLenum zfail,GrGLenum zpass)219 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOp(GrGLenum fail, GrGLenum zfail, GrGLenum zpass) {
220 }
221 
noOpGLStencilOpSeparate(GrGLenum face,GrGLenum fail,GrGLenum zfail,GrGLenum zpass)222 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOpSeparate(GrGLenum face,
223                                                      GrGLenum fail,
224                                                      GrGLenum zfail,
225                                                      GrGLenum zpass) {
226 }
227 
noOpGLTexGenf(GrGLenum,GrGLenum,float)228 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGenf(GrGLenum, GrGLenum, float) {
229 }
230 
noOpGLTexGenfv(GrGLenum,GrGLenum,const float *)231 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGenfv(GrGLenum, GrGLenum, const float*) {
232 }
233 
noOpGLTexGeni(GrGLenum,GrGLenum,GrGLint)234 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGeni(GrGLenum, GrGLenum, GrGLint) {
235 }
236 
noOpGLTexImage2D(GrGLenum target,GrGLint level,GrGLint internalformat,GrGLsizei width,GrGLsizei height,GrGLint border,GrGLenum format,GrGLenum type,const GrGLvoid * pixels)237 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexImage2D(GrGLenum target,
238                                               GrGLint level,
239                                               GrGLint internalformat,
240                                               GrGLsizei width,
241                                               GrGLsizei height,
242                                               GrGLint border,
243                                               GrGLenum format,
244                                               GrGLenum type,
245                                               const GrGLvoid* pixels) {
246 }
247 
noOpGLTexParameteri(GrGLenum target,GrGLenum pname,GrGLint param)248 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteri(GrGLenum target,
249                                                  GrGLenum pname,
250                                                  GrGLint param) {
251 }
252 
noOpGLTexParameteriv(GrGLenum target,GrGLenum pname,const GrGLint * params)253 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteriv(GrGLenum target,
254                                                   GrGLenum pname,
255                                                   const GrGLint* params) {
256 }
257 
noOpGLTexStorage2D(GrGLenum target,GrGLsizei levels,GrGLenum internalformat,GrGLsizei width,GrGLsizei height)258 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexStorage2D(GrGLenum target,
259                                                 GrGLsizei levels,
260                                                 GrGLenum internalformat,
261                                                 GrGLsizei width,
262                                                 GrGLsizei height) {
263 }
264 
noOpGLDiscardFramebuffer(GrGLenum target,GrGLsizei numAttachments,const GrGLenum * attachments)265 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDiscardFramebuffer(GrGLenum target,
266                                                       GrGLsizei numAttachments,
267                                                       const GrGLenum* attachments) {
268 }
269 
noOpGLTexSubImage2D(GrGLenum target,GrGLint level,GrGLint xoffset,GrGLint yoffset,GrGLsizei width,GrGLsizei height,GrGLenum format,GrGLenum type,const GrGLvoid * pixels)270 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexSubImage2D(GrGLenum target,
271                                                  GrGLint level,
272                                                  GrGLint xoffset,
273                                                  GrGLint yoffset,
274                                                  GrGLsizei width,
275                                                  GrGLsizei height,
276                                                  GrGLenum format,
277                                                  GrGLenum type,
278                                                  const GrGLvoid* pixels) {
279 }
280 
noOpGLUniform1f(GrGLint location,GrGLfloat v0)281 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1f(GrGLint location, GrGLfloat v0) {
282 }
283 
noOpGLUniform1i(GrGLint location,GrGLint v0)284 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1i(GrGLint location, GrGLint v0) {
285 }
286 
noOpGLUniform1fv(GrGLint location,GrGLsizei count,const GrGLfloat * v)287 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1fv(GrGLint location,
288                                               GrGLsizei count,
289                                               const GrGLfloat* v) {
290 }
291 
noOpGLUniform1iv(GrGLint location,GrGLsizei count,const GrGLint * v)292 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1iv(GrGLint location,
293                                               GrGLsizei count,
294                                               const GrGLint* v) {
295 }
296 
noOpGLUniform2f(GrGLint location,GrGLfloat v0,GrGLfloat v1)297 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2f(GrGLint location, GrGLfloat v0, GrGLfloat v1) {
298 }
299 
noOpGLUniform2i(GrGLint location,GrGLint v0,GrGLint v1)300 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2i(GrGLint location, GrGLint v0, GrGLint v1) {
301 }
302 
noOpGLUniform2fv(GrGLint location,GrGLsizei count,const GrGLfloat * v)303 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2fv(GrGLint location,
304                                               GrGLsizei count,
305                                               const GrGLfloat* v) {
306 }
307 
noOpGLUniform2iv(GrGLint location,GrGLsizei count,const GrGLint * v)308 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2iv(GrGLint location,
309                                               GrGLsizei count,
310                                               const GrGLint* v) {
311 }
312 
noOpGLUniform3f(GrGLint location,GrGLfloat v0,GrGLfloat v1,GrGLfloat v2)313 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3f(GrGLint location,
314                                               GrGLfloat v0,
315                                               GrGLfloat v1,
316                                               GrGLfloat v2) {
317 }
318 
noOpGLUniform3i(GrGLint location,GrGLint v0,GrGLint v1,GrGLint v2)319 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3i(GrGLint location,
320                                               GrGLint v0,
321                                               GrGLint v1,
322                                               GrGLint v2) {
323 }
324 
noOpGLUniform3fv(GrGLint location,GrGLsizei count,const GrGLfloat * v)325 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3fv(GrGLint location,
326                                               GrGLsizei count,
327                                               const GrGLfloat* v) {
328 }
329 
noOpGLUniform3iv(GrGLint location,GrGLsizei count,const GrGLint * v)330 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3iv(GrGLint location,
331                                               GrGLsizei count,
332                                               const GrGLint* v) {
333 }
334 
noOpGLUniform4f(GrGLint location,GrGLfloat v0,GrGLfloat v1,GrGLfloat v2,GrGLfloat v3)335 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4f(GrGLint location,
336                                               GrGLfloat v0,
337                                               GrGLfloat v1,
338                                               GrGLfloat v2,
339                                               GrGLfloat v3) {
340 }
341 
noOpGLUniform4i(GrGLint location,GrGLint v0,GrGLint v1,GrGLint v2,GrGLint v3)342 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4i(GrGLint location,
343                                               GrGLint v0,
344                                               GrGLint v1,
345                                               GrGLint v2,
346                                               GrGLint v3) {
347 }
348 
noOpGLUniform4fv(GrGLint location,GrGLsizei count,const GrGLfloat * v)349 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4fv(GrGLint location,
350                                               GrGLsizei count,
351                                               const GrGLfloat* v) {
352 }
353 
noOpGLUniform4iv(GrGLint location,GrGLsizei count,const GrGLint * v)354 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4iv(GrGLint location,
355                                               GrGLsizei count,
356                                               const GrGLint* v) {
357 }
358 
noOpGLUniformMatrix2fv(GrGLint location,GrGLsizei count,GrGLboolean transpose,const GrGLfloat * value)359 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix2fv(GrGLint location,
360                                                     GrGLsizei count,
361                                                     GrGLboolean transpose,
362                                                     const GrGLfloat* value) {
363 }
364 
noOpGLUniformMatrix3fv(GrGLint location,GrGLsizei count,GrGLboolean transpose,const GrGLfloat * value)365 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix3fv(GrGLint location,
366                                                     GrGLsizei count,
367                                                     GrGLboolean transpose,
368                                                     const GrGLfloat* value) {
369 }
370 
noOpGLUniformMatrix4fv(GrGLint location,GrGLsizei count,GrGLboolean transpose,const GrGLfloat * value)371 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix4fv(GrGLint location,
372                                                     GrGLsizei count,
373                                                     GrGLboolean transpose,
374                                                     const GrGLfloat* value) {
375 }
376 
noOpGLVertexAttrib4fv(GrGLuint indx,const GrGLfloat * values)377  GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib4fv(GrGLuint indx, const GrGLfloat* values) {
378 }
379 
noOpGLVertexAttribPointer(GrGLuint indx,GrGLint size,GrGLenum type,GrGLboolean normalized,GrGLsizei stride,const GrGLvoid * ptr)380 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttribPointer(GrGLuint indx,
381                                                        GrGLint size,
382                                                        GrGLenum type,
383                                                        GrGLboolean normalized,
384                                                        GrGLsizei stride,
385                                                        const GrGLvoid* ptr) {
386 }
387 
noOpGLVertexPointer(GrGLint,GrGLenum,GrGLsizei,const GrGLvoid *)388 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexPointer(GrGLint, GrGLenum, GrGLsizei, const GrGLvoid*) {
389 }
390 
noOpGLViewport(GrGLint x,GrGLint y,GrGLsizei width,GrGLsizei height)391 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLViewport(GrGLint x,
392                                             GrGLint y,
393                                             GrGLsizei width,
394                                             GrGLsizei height) {
395 }
396 
noOpGLGetFramebufferAttachmentParameteriv(GrGLenum target,GrGLenum attachment,GrGLenum pname,GrGLint * params)397   GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetFramebufferAttachmentParameteriv(GrGLenum target,
398                                                                          GrGLenum attachment,
399                                                                          GrGLenum pname,
400                                                                          GrGLint* params) {
401 }
402 
noOpGLGetRenderbufferParameteriv(GrGLenum target,GrGLenum pname,GrGLint * params)403 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetRenderbufferParameteriv(GrGLenum target,
404                                                               GrGLenum pname,
405                                                               GrGLint* params) {
406 }
407 
noOpGLRenderbufferStorage(GrGLenum target,GrGLenum internalformat,GrGLsizei width,GrGLsizei height)408 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorage(GrGLenum target,
409                                                        GrGLenum internalformat,
410                                                        GrGLsizei width,
411                                                        GrGLsizei height) {
412 }
413 
noOpGLRenderbufferStorageMultisample(GrGLenum target,GrGLsizei samples,GrGLenum internalformat,GrGLsizei width,GrGLsizei height)414 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorageMultisample(GrGLenum target,
415                                                                   GrGLsizei samples,
416                                                                   GrGLenum internalformat,
417                                                                   GrGLsizei width,
418                                                                   GrGLsizei height) {
419 }
420 
noOpGLBlitFramebuffer(GrGLint srcX0,GrGLint srcY0,GrGLint srcX1,GrGLint srcY1,GrGLint dstX0,GrGLint dstY0,GrGLint dstX1,GrGLint dstY1,GrGLbitfield mask,GrGLenum filter)421 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlitFramebuffer(GrGLint srcX0,
422                                                    GrGLint srcY0,
423                                                    GrGLint srcX1,
424                                                    GrGLint srcY1,
425                                                    GrGLint dstX0,
426                                                    GrGLint dstY0,
427                                                    GrGLint dstX1,
428                                                    GrGLint dstY1,
429                                                    GrGLbitfield mask,
430                                                    GrGLenum filter) {
431 }
432 
noOpGLResolveMultisampleFramebuffer()433 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLResolveMultisampleFramebuffer() {
434 }
435 
noOpGLBindFragDataLocationIndexed(GrGLuint program,GrGLuint colorNumber,GrGLuint index,const GrGLchar * name)436 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocationIndexed(GrGLuint program,
437                                                                GrGLuint colorNumber,
438                                                                GrGLuint index,
439                                                                const GrGLchar * name) {
440 }
441 
noOpGLCheckFramebufferStatus(GrGLenum target)442 GrGLenum GR_GL_FUNCTION_TYPE noOpGLCheckFramebufferStatus(GrGLenum target) {
443 
444     GrAlwaysAssert(GR_GL_FRAMEBUFFER == target);
445 
446     return GR_GL_FRAMEBUFFER_COMPLETE;
447 }
448 
noOpGLGenIds(GrGLsizei n,GrGLuint * ids)449 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGenIds(GrGLsizei n, GrGLuint* ids) {
450     static int gCurrID = 1;
451     for (int i = 0; i < n; ++i) {
452         ids[i] = ++gCurrID;
453    }
454 }
455 
noOpGLDeleteIds(GrGLsizei n,const GrGLuint * ids)456 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDeleteIds(GrGLsizei n, const GrGLuint* ids) {
457 }
458 
noOpGLGetError()459 GrGLenum GR_GL_FUNCTION_TYPE noOpGLGetError() {
460     return GR_GL_NO_ERROR;
461 }
462 
noOpGLGetIntegerv(GrGLenum pname,GrGLint * params)463 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetIntegerv(GrGLenum pname, GrGLint* params) {
464     // TODO: remove from Ganesh the #defines for gets we don't use.
465     // We would like to minimize gets overall due to performance issues
466     switch (pname) {
467         case GR_GL_CONTEXT_PROFILE_MASK:
468             *params = GR_GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
469             break;
470         case GR_GL_STENCIL_BITS:
471             *params = 8;
472             break;
473         case GR_GL_SAMPLES:
474             *params = 1;
475             break;
476         case GR_GL_FRAMEBUFFER_BINDING:
477             *params = 0;
478             break;
479         case GR_GL_VIEWPORT:
480             params[0] = 0;
481             params[1] = 0;
482             params[2] = 800;
483             params[3] = 600;
484             break;
485         case GR_GL_MAX_TEXTURE_IMAGE_UNITS:
486             *params = 8;
487             break;
488         case GR_GL_MAX_TEXTURE_COORDS:
489             *params = 8;
490             break;
491         case GR_GL_MAX_VERTEX_UNIFORM_VECTORS:
492             *params = kDefaultMaxVertexUniformVectors;
493             break;
494         case GR_GL_MAX_FRAGMENT_UNIFORM_VECTORS:
495             *params = kDefaultMaxFragmentUniformVectors;
496             break;
497         case GR_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
498             *params = 16 * 4;
499             break;
500         case GR_GL_NUM_COMPRESSED_TEXTURE_FORMATS:
501             *params = 0;
502             break;
503         case GR_GL_COMPRESSED_TEXTURE_FORMATS:
504             break;
505         case GR_GL_MAX_TEXTURE_SIZE:
506             *params = 8192;
507             break;
508         case GR_GL_MAX_RENDERBUFFER_SIZE:
509             *params = 8192;
510             break;
511         case GR_GL_MAX_SAMPLES:
512             *params = 32;
513             break;
514         case GR_GL_MAX_VERTEX_ATTRIBS:
515             *params = kDefaultMaxVertexAttribs;
516             break;
517         case GR_GL_MAX_VARYING_VECTORS:
518             *params = kDefaultMaxVaryingVectors;
519             break;
520         case GR_GL_NUM_EXTENSIONS:
521             *params = GR_ARRAY_COUNT(kExtensions);
522             break;
523         default:
524             GrCrash("Unexpected pname to GetIntegerv");
525    }
526 }
527 
noOpGLGetInfoLog(GrGLuint program,GrGLsizei bufsize,GrGLsizei * length,char * infolog)528 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetInfoLog(GrGLuint program,
529                                               GrGLsizei bufsize,
530                                               GrGLsizei* length,
531                                               char* infolog) {
532     if (length) {
533         *length = 0;
534    }
535     if (bufsize > 0) {
536         *infolog = 0;
537    }
538 }
539 
noOpGLGetShaderOrProgramiv(GrGLuint program,GrGLenum pname,GrGLint * params)540 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetShaderOrProgramiv(GrGLuint program,
541                                                         GrGLenum pname,
542                                                         GrGLint* params) {
543     switch (pname) {
544         case GR_GL_LINK_STATUS:  // fallthru
545         case GR_GL_COMPILE_STATUS:
546             *params = GR_GL_TRUE;
547             break;
548         case GR_GL_INFO_LOG_LENGTH:
549             *params = 0;
550             break;
551         // we don't expect any other pnames
552         default:
553             GrCrash("Unexpected pname to GetProgramiv");
554             break;
555    }
556 }
557 
558 namespace {
559 template <typename T>
query_result(GrGLenum GLtarget,GrGLenum pname,T * params)560 void query_result(GrGLenum GLtarget, GrGLenum pname, T *params) {
561     switch (pname) {
562         case GR_GL_QUERY_RESULT_AVAILABLE:
563             *params = GR_GL_TRUE;
564             break;
565         case GR_GL_QUERY_RESULT:
566             *params = 0;
567             break;
568         default:
569             GrCrash("Unexpected pname passed to GetQueryObject.");
570             break;
571    }
572 }
573 }
574 
noOpGLGetQueryiv(GrGLenum GLtarget,GrGLenum pname,GrGLint * params)575 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryiv(GrGLenum GLtarget,
576                                               GrGLenum pname,
577                                               GrGLint *params) {
578     switch (pname) {
579         case GR_GL_CURRENT_QUERY:
580             *params = 0;
581             break;
582         case GR_GL_QUERY_COUNTER_BITS:
583             *params = 32;
584             break;
585         default:
586             GrCrash("Unexpected pname passed GetQueryiv.");
587    }
588 }
589 
noOpGLGetQueryObjecti64v(GrGLuint id,GrGLenum pname,GrGLint64 * params)590 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjecti64v(GrGLuint id,
591                                                       GrGLenum pname,
592                                                       GrGLint64 *params) {
593     query_result(id, pname, params);
594 }
595 
noOpGLGetQueryObjectiv(GrGLuint id,GrGLenum pname,GrGLint * params)596 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectiv(GrGLuint id,
597                                                     GrGLenum pname,
598                                                     GrGLint *params) {
599     query_result(id, pname, params);
600 }
601 
noOpGLGetQueryObjectui64v(GrGLuint id,GrGLenum pname,GrGLuint64 * params)602 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectui64v(GrGLuint id,
603                                                        GrGLenum pname,
604                                                        GrGLuint64 *params) {
605     query_result(id, pname, params);
606 }
607 
noOpGLGetQueryObjectuiv(GrGLuint id,GrGLenum pname,GrGLuint * params)608 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectuiv(GrGLuint id,
609                                                      GrGLenum pname,
610                                                      GrGLuint *params) {
611     query_result(id, pname, params);
612 }
613 
noOpGLGetString(GrGLenum name)614 const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetString(GrGLenum name) {
615     switch (name) {
616         case GR_GL_EXTENSIONS:
617             return combined_extensions_string();
618         case GR_GL_VERSION:
619             return (const GrGLubyte*)"4.0 Debug GL";
620         case GR_GL_SHADING_LANGUAGE_VERSION:
621             return (const GrGLubyte*)"4.20.8 Debug GLSL";
622         case GR_GL_VENDOR:
623             return (const GrGLubyte*)"Debug Vendor";
624         case GR_GL_RENDERER:
625             return (const GrGLubyte*)"The Debug (Non-)Renderer";
626         default:
627             GrCrash("Unexpected name passed to GetString");
628             return NULL;
629    }
630 }
631 
noOpGLGetStringi(GrGLenum name,GrGLuint i)632 const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetStringi(GrGLenum name, GrGLuint i) {
633     switch (name) {
634         case GR_GL_EXTENSIONS:
635             if (static_cast<size_t>(i) <= GR_ARRAY_COUNT(kExtensions)) {
636                 return (const GrGLubyte*) kExtensions[i];
637             } else {
638                 return NULL;
639             }
640         default:
641             GrCrash("Unexpected name passed to GetStringi");
642             return NULL;
643     }
644 }
645 
noOpGLGetTexLevelParameteriv(GrGLenum target,GrGLint level,GrGLenum pname,GrGLint * params)646 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetTexLevelParameteriv(GrGLenum target,
647                                                           GrGLint level,
648                                                           GrGLenum pname,
649                                                           GrGLint* params) {
650     // we used to use this to query stuff about externally created textures,
651     // now we just require clients to tell us everything about the texture.
652     GrCrash("Should never query texture parameters.");
653 }
654 
noOpGLGetUniformLocation(GrGLuint program,const char * name)655 GrGLint GR_GL_FUNCTION_TYPE noOpGLGetUniformLocation(GrGLuint program, const char* name) {
656     static int gUniLocation = 0;
657     return ++gUniLocation;
658 }
659