blob: 113c47d05428dfc4684936b0e6f65605d0c7a821 [file] [log] [blame]
bsalomon@google.com9c58f462013-02-26 14:45:41 +00001/*
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"
mtklein1b249332015-07-07 12:21:21 -07009#include "SkMutex.h"
bsalomon@google.com1744f972013-02-26 21:46:32 +000010#include "SkString.h"
bsalomon@google.com9c58f462013-02-26 14:45:41 +000011
12// the OpenGLES 2.0 spec says this must be >= 128
13static const GrGLint kDefaultMaxVertexUniformVectors = 128;
14
15// the OpenGLES 2.0 spec says this must be >=16
16static const GrGLint kDefaultMaxFragmentUniformVectors = 16;
17
18// the OpenGLES 2.0 spec says this must be >= 8
19static const GrGLint kDefaultMaxVertexAttribs = 8;
20
21// the OpenGLES 2.0 spec says this must be >= 8
22static const GrGLint kDefaultMaxVaryingVectors = 8;
23
bsalomon@google.com1744f972013-02-26 21:46:32 +000024static 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",
bsalomon@google.com1744f972013-02-26 21:46:32 +000030 "GL_EXT_stencil_wrap"
31};
32
33namespace {
34const GrGLubyte* combined_extensions_string() {
35 static SkString gExtString;
36 static SkMutex gMutex;
37 gMutex.acquire();
38 if (0 == gExtString.size()) {
commit-bot@chromium.org972f9cd2014-03-28 17:58:28 +000039 for (size_t i = 0; i < SK_ARRAY_COUNT(kExtensions) - 1; ++i) {
bsalomon@google.com1744f972013-02-26 21:46:32 +000040 gExtString.append(kExtensions[i]);
41 gExtString.append(" ");
42 }
commit-bot@chromium.org972f9cd2014-03-28 17:58:28 +000043 gExtString.append(kExtensions[SK_ARRAY_COUNT(kExtensions) - 1]);
bsalomon@google.com1744f972013-02-26 21:46:32 +000044 }
45 gMutex.release();
46 return (const GrGLubyte*) gExtString.c_str();
47}
48}
49
cdaltonbae6f6c2015-04-22 10:39:03 -070050GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocation(GrGLuint program,
51 GrGLuint colorNumber,
52 const GrGLchar* name) {
53}
54
bsalomon@google.com9c58f462013-02-26 14:45:41 +000055GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendColor(GrGLclampf red,
56 GrGLclampf green,
57 GrGLclampf blue,
58 GrGLclampf alpha) {
59}
60
cdaltonbae6f6c2015-04-22 10:39:03 -070061GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendEquation(GrGLenum mode) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +000062}
63
64GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendFunc(GrGLenum sfactor,
65 GrGLenum dfactor) {
66}
67
68GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBufferSubData(GrGLenum target,
69 GrGLintptr offset,
70 GrGLsizeiptr size,
71 const GrGLvoid* data) {
72}
73
74GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClear(GrGLbitfield mask) {
75}
76
77GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearColor(GrGLclampf red,
78 GrGLclampf green,
79 GrGLclampf blue,
80 GrGLclampf alpha) {
81}
82
83GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearStencil(GrGLint s) {
84}
85
86GrGLvoid GR_GL_FUNCTION_TYPE noOpGLColorMask(GrGLboolean red,
bsalomon@google.com1744f972013-02-26 21:46:32 +000087 GrGLboolean green,
88 GrGLboolean blue,
89 GrGLboolean alpha) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +000090}
91
92GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompileShader(GrGLuint shader) {
93}
94
95GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompressedTexImage2D(GrGLenum target,
96 GrGLint level,
97 GrGLenum internalformat,
98 GrGLsizei width,
99 GrGLsizei height,
100 GrGLint border,
101 GrGLsizei imageSize,
102 const GrGLvoid* data) {
103}
104
krajcevski37d20f72014-06-11 10:38:47 -0700105GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompressedTexSubImage2D(GrGLenum target,
106 GrGLint level,
107 GrGLint xoffset,
108 GrGLint yoffset,
109 GrGLsizei width,
110 GrGLsizei height,
111 GrGLenum format,
112 GrGLsizei imageSize,
113 const GrGLvoid* data) {
114}
115
commit-bot@chromium.org98168bb2013-04-11 22:00:34 +0000116GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCopyTexSubImage2D(GrGLenum target,
117 GrGLint level,
118 GrGLint xoffset,
119 GrGLint yoffset,
120 GrGLint x,
121 GrGLint y,
122 GrGLsizei width,
123 GrGLsizei height) {
124}
125
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000126GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCullFace(GrGLenum mode) {
127}
128
129GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDepthMask(GrGLboolean flag) {
130}
131
132GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisable(GrGLenum cap) {
133}
134
135GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableVertexAttribArray(GrGLuint index) {
136}
137
138GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawArrays(GrGLenum mode,
139 GrGLint first,
140 GrGLsizei count) {
141}
142
cdalton626e1ff2015-06-12 13:56:46 -0700143GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawArraysInstanced(GrGLenum mode,
144 GrGLint first,
145 GrGLsizei count,
146 GrGLsizei primcount) {
147}
148
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000149GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffer(GrGLenum mode) {
150}
151
152GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffers(GrGLsizei n,
153 const GrGLenum* bufs) {
154}
155
156GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawElements(GrGLenum mode,
157 GrGLsizei count,
158 GrGLenum type,
159 const GrGLvoid* indices) {
160}
161
cdalton626e1ff2015-06-12 13:56:46 -0700162GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawElementsInstanced(GrGLenum mode,
163 GrGLsizei count,
164 GrGLenum type,
165 const GrGLvoid* indices,
166 GrGLsizei primcount) {
167}
168
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000169GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnable(GrGLenum cap) {
170}
171
172GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableVertexAttribArray(GrGLuint index) {
173}
174
175GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEndQuery(GrGLenum target) {
176}
177
178GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFinish() {
179}
180
181GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFlush() {
182}
183
184GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFrontFace(GrGLenum mode) {
185}
186
187GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLineWidth(GrGLfloat width) {
188}
189
190GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLinkProgram(GrGLuint program) {
191}
192
commit-bot@chromium.orgf6696722014-04-25 06:21:30 +0000193GrGLvoid GR_GL_FUNCTION_TYPE noOpGLMatrixLoadf(GrGLenum, const GrGLfloat*) {
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000194}
195
commit-bot@chromium.orgf6696722014-04-25 06:21:30 +0000196GrGLvoid GR_GL_FUNCTION_TYPE noOpGLMatrixLoadIdentity(GrGLenum) {
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000197}
198
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000199GrGLvoid GR_GL_FUNCTION_TYPE noOpGLQueryCounter(GrGLuint id, GrGLenum target) {
200}
201
202GrGLvoid GR_GL_FUNCTION_TYPE noOpGLReadBuffer(GrGLenum src) {
203}
204
205GrGLvoid GR_GL_FUNCTION_TYPE noOpGLScissor(GrGLint x,
bsalomon@google.com1744f972013-02-26 21:46:32 +0000206 GrGLint y,
207 GrGLsizei width,
208 GrGLsizei height) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000209}
210
211GrGLvoid GR_GL_FUNCTION_TYPE noOpGLShaderSource(GrGLuint shader,
212 GrGLsizei count,
bsalomon@google.com26fb61a2013-02-28 19:26:04 +0000213#if GR_GL_USE_NEW_SHADER_SOURCE_SIGNATURE
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000214 const char* const * str,
215#else
216 const char** str,
217#endif
218 const GrGLint* length) {
219}
220
221GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFunc(GrGLenum func, GrGLint ref, GrGLuint mask) {
222}
223
224GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFuncSeparate(GrGLenum face,
225 GrGLenum func,
226 GrGLint ref,
227 GrGLuint mask) {
228}
229
230GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMask(GrGLuint mask) {
231}
232
233GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMaskSeparate(GrGLenum face, GrGLuint mask) {
234}
235
236GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOp(GrGLenum fail, GrGLenum zfail, GrGLenum zpass) {
237}
238
239GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOpSeparate(GrGLenum face,
240 GrGLenum fail,
241 GrGLenum zfail,
242 GrGLenum zpass) {
243}
244
245GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexImage2D(GrGLenum target,
246 GrGLint level,
247 GrGLint internalformat,
248 GrGLsizei width,
249 GrGLsizei height,
250 GrGLint border,
251 GrGLenum format,
252 GrGLenum type,
253 const GrGLvoid* pixels) {
254}
255
256GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteri(GrGLenum target,
257 GrGLenum pname,
258 GrGLint param) {
259}
260
261GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteriv(GrGLenum target,
262 GrGLenum pname,
263 const GrGLint* params) {
264}
265
266GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexStorage2D(GrGLenum target,
267 GrGLsizei levels,
268 GrGLenum internalformat,
269 GrGLsizei width,
270 GrGLsizei height) {
271}
272
skia.committer@gmail.com81521132013-04-30 07:01:03 +0000273GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDiscardFramebuffer(GrGLenum target,
274 GrGLsizei numAttachments,
robertphillips@google.coma6ffb582013-04-29 16:50:17 +0000275 const GrGLenum* attachments) {
276}
277
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000278GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexSubImage2D(GrGLenum target,
279 GrGLint level,
280 GrGLint xoffset,
281 GrGLint yoffset,
282 GrGLsizei width,
283 GrGLsizei height,
284 GrGLenum format,
285 GrGLenum type,
286 const GrGLvoid* pixels) {
287}
288
289GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1f(GrGLint location, GrGLfloat v0) {
290}
291
292GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1i(GrGLint location, GrGLint v0) {
293}
294
295GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1fv(GrGLint location,
296 GrGLsizei count,
297 const GrGLfloat* v) {
298}
299
300GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1iv(GrGLint location,
301 GrGLsizei count,
302 const GrGLint* v) {
303}
304
305GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2f(GrGLint location, GrGLfloat v0, GrGLfloat v1) {
306}
307
308GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2i(GrGLint location, GrGLint v0, GrGLint v1) {
309}
310
311GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2fv(GrGLint location,
312 GrGLsizei count,
313 const GrGLfloat* v) {
314}
315
316GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2iv(GrGLint location,
317 GrGLsizei count,
318 const GrGLint* v) {
319}
320
321GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3f(GrGLint location,
322 GrGLfloat v0,
323 GrGLfloat v1,
324 GrGLfloat v2) {
325}
326
327GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3i(GrGLint location,
328 GrGLint v0,
329 GrGLint v1,
330 GrGLint v2) {
331}
332
333GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3fv(GrGLint location,
334 GrGLsizei count,
335 const GrGLfloat* v) {
336}
337
338GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3iv(GrGLint location,
339 GrGLsizei count,
340 const GrGLint* v) {
341}
342
343GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4f(GrGLint location,
344 GrGLfloat v0,
345 GrGLfloat v1,
346 GrGLfloat v2,
347 GrGLfloat v3) {
348}
349
350GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4i(GrGLint location,
351 GrGLint v0,
352 GrGLint v1,
353 GrGLint v2,
354 GrGLint v3) {
355}
356
357GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4fv(GrGLint location,
358 GrGLsizei count,
359 const GrGLfloat* v) {
360}
361
362GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4iv(GrGLint location,
363 GrGLsizei count,
364 const GrGLint* v) {
365}
366
367GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix2fv(GrGLint location,
368 GrGLsizei count,
369 GrGLboolean transpose,
370 const GrGLfloat* value) {
371}
372
373GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix3fv(GrGLint location,
374 GrGLsizei count,
375 GrGLboolean transpose,
376 const GrGLfloat* value) {
377}
378
379GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix4fv(GrGLint location,
380 GrGLsizei count,
381 GrGLboolean transpose,
382 const GrGLfloat* value) {
383}
384
egdaniel27c15212014-10-24 15:00:50 -0700385 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib1f(GrGLuint indx, const GrGLfloat value) {
386}
387
388 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib2fv(GrGLuint indx, const GrGLfloat* values) {
389}
390
391 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib3fv(GrGLuint indx, const GrGLfloat* values) {
392}
393
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000394 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib4fv(GrGLuint indx, const GrGLfloat* values) {
395}
396
397GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttribPointer(GrGLuint indx,
398 GrGLint size,
399 GrGLenum type,
400 GrGLboolean normalized,
401 GrGLsizei stride,
402 const GrGLvoid* ptr) {
403}
404
cdalton626e1ff2015-06-12 13:56:46 -0700405GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttribDivisor(GrGLuint index, GrGLuint divisor) {
406}
407
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000408GrGLvoid GR_GL_FUNCTION_TYPE noOpGLViewport(GrGLint x,
bsalomon@google.com1744f972013-02-26 21:46:32 +0000409 GrGLint y,
410 GrGLsizei width,
411 GrGLsizei height) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000412}
413
414 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetFramebufferAttachmentParameteriv(GrGLenum target,
bsalomon@google.com1744f972013-02-26 21:46:32 +0000415 GrGLenum attachment,
416 GrGLenum pname,
417 GrGLint* params) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000418}
419
420GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetRenderbufferParameteriv(GrGLenum target,
421 GrGLenum pname,
422 GrGLint* params) {
423}
424
425GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorage(GrGLenum target,
426 GrGLenum internalformat,
427 GrGLsizei width,
428 GrGLsizei height) {
429}
430
431GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorageMultisample(GrGLenum target,
432 GrGLsizei samples,
433 GrGLenum internalformat,
434 GrGLsizei width,
435 GrGLsizei height) {
436}
437
438GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlitFramebuffer(GrGLint srcX0,
439 GrGLint srcY0,
440 GrGLint srcX1,
441 GrGLint srcY1,
442 GrGLint dstX0,
443 GrGLint dstY0,
444 GrGLint dstX1,
445 GrGLint dstY1,
446 GrGLbitfield mask,
447 GrGLenum filter) {
448}
449
450GrGLvoid GR_GL_FUNCTION_TYPE noOpGLResolveMultisampleFramebuffer() {
451}
452
453GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocationIndexed(GrGLuint program,
454 GrGLuint colorNumber,
455 GrGLuint index,
456 const GrGLchar * name) {
457}
458
459GrGLenum GR_GL_FUNCTION_TYPE noOpGLCheckFramebufferStatus(GrGLenum target) {
460
egdanield803f272015-03-18 13:01:52 -0700461 GrAlwaysAssert(GR_GL_FRAMEBUFFER == target);
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000462
463 return GR_GL_FRAMEBUFFER_COMPLETE;
464}
465
466GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGenIds(GrGLsizei n, GrGLuint* ids) {
467 static int gCurrID = 1;
468 for (int i = 0; i < n; ++i) {
469 ids[i] = ++gCurrID;
470 }
471}
472
473GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDeleteIds(GrGLsizei n, const GrGLuint* ids) {
474}
475
476GrGLenum GR_GL_FUNCTION_TYPE noOpGLGetError() {
477 return GR_GL_NO_ERROR;
478}
479
480GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetIntegerv(GrGLenum pname, GrGLint* params) {
481 // TODO: remove from Ganesh the #defines for gets we don't use.
482 // We would like to minimize gets overall due to performance issues
483 switch (pname) {
bsalomon@google.com1744f972013-02-26 21:46:32 +0000484 case GR_GL_CONTEXT_PROFILE_MASK:
485 *params = GR_GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
486 break;
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000487 case GR_GL_STENCIL_BITS:
488 *params = 8;
489 break;
490 case GR_GL_SAMPLES:
491 *params = 1;
492 break;
493 case GR_GL_FRAMEBUFFER_BINDING:
494 *params = 0;
495 break;
496 case GR_GL_VIEWPORT:
497 params[0] = 0;
498 params[1] = 0;
499 params[2] = 800;
500 params[3] = 600;
501 break;
502 case GR_GL_MAX_TEXTURE_IMAGE_UNITS:
503 *params = 8;
504 break;
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000505 case GR_GL_MAX_TEXTURE_COORDS:
506 *params = 8;
507 break;
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000508 case GR_GL_MAX_VERTEX_UNIFORM_VECTORS:
509 *params = kDefaultMaxVertexUniformVectors;
510 break;
511 case GR_GL_MAX_FRAGMENT_UNIFORM_VECTORS:
512 *params = kDefaultMaxFragmentUniformVectors;
513 break;
514 case GR_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
515 *params = 16 * 4;
516 break;
517 case GR_GL_NUM_COMPRESSED_TEXTURE_FORMATS:
518 *params = 0;
519 break;
520 case GR_GL_COMPRESSED_TEXTURE_FORMATS:
521 break;
522 case GR_GL_MAX_TEXTURE_SIZE:
523 *params = 8192;
524 break;
525 case GR_GL_MAX_RENDERBUFFER_SIZE:
526 *params = 8192;
527 break;
528 case GR_GL_MAX_SAMPLES:
529 *params = 32;
530 break;
531 case GR_GL_MAX_VERTEX_ATTRIBS:
532 *params = kDefaultMaxVertexAttribs;
533 break;
534 case GR_GL_MAX_VARYING_VECTORS:
535 *params = kDefaultMaxVaryingVectors;
536 break;
bsalomon@google.com1744f972013-02-26 21:46:32 +0000537 case GR_GL_NUM_EXTENSIONS:
commit-bot@chromium.org972f9cd2014-03-28 17:58:28 +0000538 *params = SK_ARRAY_COUNT(kExtensions);
bsalomon@google.com1744f972013-02-26 21:46:32 +0000539 break;
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000540 default:
commit-bot@chromium.org88cb22b2014-04-30 14:17:00 +0000541 SkFAIL("Unexpected pname to GetIntegerv");
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000542 }
543}
544
545GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetInfoLog(GrGLuint program,
546 GrGLsizei bufsize,
547 GrGLsizei* length,
bsalomon@google.com1744f972013-02-26 21:46:32 +0000548 char* infolog) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000549 if (length) {
550 *length = 0;
551 }
552 if (bufsize > 0) {
553 *infolog = 0;
554 }
555}
556
557GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetShaderOrProgramiv(GrGLuint program,
558 GrGLenum pname,
559 GrGLint* params) {
560 switch (pname) {
561 case GR_GL_LINK_STATUS: // fallthru
562 case GR_GL_COMPILE_STATUS:
563 *params = GR_GL_TRUE;
564 break;
565 case GR_GL_INFO_LOG_LENGTH:
566 *params = 0;
567 break;
568 // we don't expect any other pnames
569 default:
commit-bot@chromium.org88cb22b2014-04-30 14:17:00 +0000570 SkFAIL("Unexpected pname to GetProgramiv");
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000571 break;
572 }
573}
574
575namespace {
576template <typename T>
577void query_result(GrGLenum GLtarget, GrGLenum pname, T *params) {
578 switch (pname) {
579 case GR_GL_QUERY_RESULT_AVAILABLE:
580 *params = GR_GL_TRUE;
581 break;
582 case GR_GL_QUERY_RESULT:
583 *params = 0;
584 break;
585 default:
commit-bot@chromium.org88cb22b2014-04-30 14:17:00 +0000586 SkFAIL("Unexpected pname passed to GetQueryObject.");
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000587 break;
588 }
589}
590}
591
592GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryiv(GrGLenum GLtarget,
593 GrGLenum pname,
594 GrGLint *params) {
595 switch (pname) {
596 case GR_GL_CURRENT_QUERY:
597 *params = 0;
598 break;
599 case GR_GL_QUERY_COUNTER_BITS:
600 *params = 32;
601 break;
602 default:
commit-bot@chromium.org88cb22b2014-04-30 14:17:00 +0000603 SkFAIL("Unexpected pname passed GetQueryiv.");
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000604 }
605}
606
607GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjecti64v(GrGLuint id,
608 GrGLenum pname,
609 GrGLint64 *params) {
610 query_result(id, pname, params);
611}
612
613GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectiv(GrGLuint id,
614 GrGLenum pname,
615 GrGLint *params) {
616 query_result(id, pname, params);
617}
618
619GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectui64v(GrGLuint id,
620 GrGLenum pname,
621 GrGLuint64 *params) {
622 query_result(id, pname, params);
623}
624
625GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectuiv(GrGLuint id,
626 GrGLenum pname,
627 GrGLuint *params) {
628 query_result(id, pname, params);
629}
630
631const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetString(GrGLenum name) {
632 switch (name) {
633 case GR_GL_EXTENSIONS:
bsalomon@google.com1744f972013-02-26 21:46:32 +0000634 return combined_extensions_string();
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000635 case GR_GL_VERSION:
636 return (const GrGLubyte*)"4.0 Debug GL";
637 case GR_GL_SHADING_LANGUAGE_VERSION:
638 return (const GrGLubyte*)"4.20.8 Debug GLSL";
639 case GR_GL_VENDOR:
640 return (const GrGLubyte*)"Debug Vendor";
641 case GR_GL_RENDERER:
642 return (const GrGLubyte*)"The Debug (Non-)Renderer";
643 default:
commit-bot@chromium.org88cb22b2014-04-30 14:17:00 +0000644 SkFAIL("Unexpected name passed to GetString");
halcanary96fcdcc2015-08-27 07:41:13 -0700645 return nullptr;
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000646 }
647}
648
bsalomon@google.com1744f972013-02-26 21:46:32 +0000649const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetStringi(GrGLenum name, GrGLuint i) {
650 switch (name) {
651 case GR_GL_EXTENSIONS:
commit-bot@chromium.org972f9cd2014-03-28 17:58:28 +0000652 if (static_cast<size_t>(i) <= SK_ARRAY_COUNT(kExtensions)) {
bsalomon@google.com1744f972013-02-26 21:46:32 +0000653 return (const GrGLubyte*) kExtensions[i];
654 } else {
halcanary96fcdcc2015-08-27 07:41:13 -0700655 return nullptr;
bsalomon@google.com1744f972013-02-26 21:46:32 +0000656 }
657 default:
commit-bot@chromium.org88cb22b2014-04-30 14:17:00 +0000658 SkFAIL("Unexpected name passed to GetStringi");
halcanary96fcdcc2015-08-27 07:41:13 -0700659 return nullptr;
bsalomon@google.com1744f972013-02-26 21:46:32 +0000660 }
661}
662
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000663GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetTexLevelParameteriv(GrGLenum target,
664 GrGLint level,
665 GrGLenum pname,
666 GrGLint* params) {
667 // we used to use this to query stuff about externally created textures,
668 // now we just require clients to tell us everything about the texture.
commit-bot@chromium.org88cb22b2014-04-30 14:17:00 +0000669 SkFAIL("Should never query texture parameters.");
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000670}
671
bsalomon@google.com1744f972013-02-26 21:46:32 +0000672GrGLint GR_GL_FUNCTION_TYPE noOpGLGetUniformLocation(GrGLuint program, const char* name) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000673 static int gUniLocation = 0;
674 return ++gUniLocation;
675}
commit-bot@chromium.orga3baf3b2014-02-21 18:45:30 +0000676
677GrGLvoid GR_GL_FUNCTION_TYPE noOpGLInsertEventMarker(GrGLsizei length, const char* marker) {
678}
679GrGLvoid GR_GL_FUNCTION_TYPE noOpGLPushGroupMarker(GrGLsizei length , const char* marker) {
680}
681GrGLvoid GR_GL_FUNCTION_TYPE noOpGLPopGroupMarker() {
682}