blob: 0641af85d7361d81f42fb932853b11639f7c3257 [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"
bsalomon@google.com1744f972013-02-26 21:46:32 +00009#include "SkString.h"
10#include "SkThread.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",
30 "GL_EXT_blend_color",
31 "GL_EXT_stencil_wrap"
32};
33
34namespace {
35const 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
bsalomon@google.com9c58f462013-02-26 14:45:41 +000051GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendColor(GrGLclampf red,
52 GrGLclampf green,
53 GrGLclampf blue,
54 GrGLclampf alpha) {
55}
56
57GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocation(GrGLuint program,
58 GrGLuint colorNumber,
59 const GrGLchar* name) {
60}
61
62GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendFunc(GrGLenum sfactor,
63 GrGLenum dfactor) {
64}
65
66GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBufferSubData(GrGLenum target,
67 GrGLintptr offset,
68 GrGLsizeiptr size,
69 const GrGLvoid* data) {
70}
71
72GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClear(GrGLbitfield mask) {
73}
74
75GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearColor(GrGLclampf red,
76 GrGLclampf green,
77 GrGLclampf blue,
78 GrGLclampf alpha) {
79}
80
81GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearStencil(GrGLint s) {
82}
83
84GrGLvoid GR_GL_FUNCTION_TYPE noOpGLColorMask(GrGLboolean red,
bsalomon@google.com1744f972013-02-26 21:46:32 +000085 GrGLboolean green,
86 GrGLboolean blue,
87 GrGLboolean alpha) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +000088}
89
90GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompileShader(GrGLuint shader) {
91}
92
93GrGLvoid 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
commit-bot@chromium.org98168bb2013-04-11 22:00:34 +0000103GrGLvoid 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
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000113GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCullFace(GrGLenum mode) {
114}
115
116GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDepthMask(GrGLboolean flag) {
117}
118
119GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisable(GrGLenum cap) {
120}
121
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000122GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableClientState(GrGLenum) {
123}
124
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000125GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableVertexAttribArray(GrGLuint index) {
126}
127
128GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawArrays(GrGLenum mode,
129 GrGLint first,
130 GrGLsizei count) {
131}
132
133GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffer(GrGLenum mode) {
134}
135
136GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffers(GrGLsizei n,
137 const GrGLenum* bufs) {
138}
139
140GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawElements(GrGLenum mode,
141 GrGLsizei count,
142 GrGLenum type,
143 const GrGLvoid* indices) {
144}
145
146GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnable(GrGLenum cap) {
147}
148
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000149GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableClientState(GrGLenum cap) {
150}
151
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000152GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableVertexAttribArray(GrGLuint index) {
153}
154
155GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEndQuery(GrGLenum target) {
156}
157
158GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFinish() {
159}
160
161GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFlush() {
162}
163
164GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFrontFace(GrGLenum mode) {
165}
166
167GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLineWidth(GrGLfloat width) {
168}
169
170GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLinkProgram(GrGLuint program) {
171}
172
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000173GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLoadIdentity() {
174}
175
176GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLoadMatrixf(const GrGLfloat*) {
177}
178
179GrGLvoid GR_GL_FUNCTION_TYPE noOpGLMatrixMode(GrGLenum) {
180}
181
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000182GrGLvoid GR_GL_FUNCTION_TYPE noOpGLQueryCounter(GrGLuint id, GrGLenum target) {
183}
184
185GrGLvoid GR_GL_FUNCTION_TYPE noOpGLReadBuffer(GrGLenum src) {
186}
187
188GrGLvoid GR_GL_FUNCTION_TYPE noOpGLScissor(GrGLint x,
bsalomon@google.com1744f972013-02-26 21:46:32 +0000189 GrGLint y,
190 GrGLsizei width,
191 GrGLsizei height) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000192}
193
194GrGLvoid GR_GL_FUNCTION_TYPE noOpGLShaderSource(GrGLuint shader,
195 GrGLsizei count,
bsalomon@google.com26fb61a2013-02-28 19:26:04 +0000196#if GR_GL_USE_NEW_SHADER_SOURCE_SIGNATURE
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000197 const char* const * str,
198#else
199 const char** str,
200#endif
201 const GrGLint* length) {
202}
203
204GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFunc(GrGLenum func, GrGLint ref, GrGLuint mask) {
205}
206
207GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFuncSeparate(GrGLenum face,
208 GrGLenum func,
209 GrGLint ref,
210 GrGLuint mask) {
211}
212
213GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMask(GrGLuint mask) {
214}
215
216GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMaskSeparate(GrGLenum face, GrGLuint mask) {
217}
218
219GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOp(GrGLenum fail, GrGLenum zfail, GrGLenum zpass) {
220}
221
222GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOpSeparate(GrGLenum face,
223 GrGLenum fail,
224 GrGLenum zfail,
225 GrGLenum zpass) {
226}
227
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000228GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGenf(GrGLenum, GrGLenum, float) {
229}
230
231GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGenfv(GrGLenum, GrGLenum, const float*) {
232}
233
234GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGeni(GrGLenum, GrGLenum, GrGLint) {
235}
236
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000237GrGLvoid 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
248GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteri(GrGLenum target,
249 GrGLenum pname,
250 GrGLint param) {
251}
252
253GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteriv(GrGLenum target,
254 GrGLenum pname,
255 const GrGLint* params) {
256}
257
258GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexStorage2D(GrGLenum target,
259 GrGLsizei levels,
260 GrGLenum internalformat,
261 GrGLsizei width,
262 GrGLsizei height) {
263}
264
skia.committer@gmail.com81521132013-04-30 07:01:03 +0000265GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDiscardFramebuffer(GrGLenum target,
266 GrGLsizei numAttachments,
robertphillips@google.coma6ffb582013-04-29 16:50:17 +0000267 const GrGLenum* attachments) {
268}
269
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000270GrGLvoid 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
281GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1f(GrGLint location, GrGLfloat v0) {
282}
283
284GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1i(GrGLint location, GrGLint v0) {
285}
286
287GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1fv(GrGLint location,
288 GrGLsizei count,
289 const GrGLfloat* v) {
290}
291
292GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1iv(GrGLint location,
293 GrGLsizei count,
294 const GrGLint* v) {
295}
296
297GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2f(GrGLint location, GrGLfloat v0, GrGLfloat v1) {
298}
299
300GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2i(GrGLint location, GrGLint v0, GrGLint v1) {
301}
302
303GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2fv(GrGLint location,
304 GrGLsizei count,
305 const GrGLfloat* v) {
306}
307
308GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2iv(GrGLint location,
309 GrGLsizei count,
310 const GrGLint* v) {
311}
312
313GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3f(GrGLint location,
314 GrGLfloat v0,
315 GrGLfloat v1,
316 GrGLfloat v2) {
317}
318
319GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3i(GrGLint location,
320 GrGLint v0,
321 GrGLint v1,
322 GrGLint v2) {
323}
324
325GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3fv(GrGLint location,
326 GrGLsizei count,
327 const GrGLfloat* v) {
328}
329
330GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3iv(GrGLint location,
331 GrGLsizei count,
332 const GrGLint* v) {
333}
334
335GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4f(GrGLint location,
336 GrGLfloat v0,
337 GrGLfloat v1,
338 GrGLfloat v2,
339 GrGLfloat v3) {
340}
341
342GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4i(GrGLint location,
343 GrGLint v0,
344 GrGLint v1,
345 GrGLint v2,
346 GrGLint v3) {
347}
348
349GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4fv(GrGLint location,
350 GrGLsizei count,
351 const GrGLfloat* v) {
352}
353
354GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4iv(GrGLint location,
355 GrGLsizei count,
356 const GrGLint* v) {
357}
358
359GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix2fv(GrGLint location,
360 GrGLsizei count,
361 GrGLboolean transpose,
362 const GrGLfloat* value) {
363}
364
365GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix3fv(GrGLint location,
366 GrGLsizei count,
367 GrGLboolean transpose,
368 const GrGLfloat* value) {
369}
370
371GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix4fv(GrGLint location,
372 GrGLsizei count,
373 GrGLboolean transpose,
374 const GrGLfloat* value) {
375}
376
377 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib4fv(GrGLuint indx, const GrGLfloat* values) {
378}
379
380GrGLvoid 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
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000388GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexPointer(GrGLint, GrGLenum, GrGLsizei, const GrGLvoid*) {
389}
390
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000391GrGLvoid GR_GL_FUNCTION_TYPE noOpGLViewport(GrGLint x,
bsalomon@google.com1744f972013-02-26 21:46:32 +0000392 GrGLint y,
393 GrGLsizei width,
394 GrGLsizei height) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000395}
396
397 GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetFramebufferAttachmentParameteriv(GrGLenum target,
bsalomon@google.com1744f972013-02-26 21:46:32 +0000398 GrGLenum attachment,
399 GrGLenum pname,
400 GrGLint* params) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000401}
402
403GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetRenderbufferParameteriv(GrGLenum target,
404 GrGLenum pname,
405 GrGLint* params) {
406}
407
408GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorage(GrGLenum target,
409 GrGLenum internalformat,
410 GrGLsizei width,
411 GrGLsizei height) {
412}
413
414GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorageMultisample(GrGLenum target,
415 GrGLsizei samples,
416 GrGLenum internalformat,
417 GrGLsizei width,
418 GrGLsizei height) {
419}
420
421GrGLvoid 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
433GrGLvoid GR_GL_FUNCTION_TYPE noOpGLResolveMultisampleFramebuffer() {
434}
435
436GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocationIndexed(GrGLuint program,
437 GrGLuint colorNumber,
438 GrGLuint index,
439 const GrGLchar * name) {
440}
441
442GrGLenum GR_GL_FUNCTION_TYPE noOpGLCheckFramebufferStatus(GrGLenum target) {
443
444 GrAlwaysAssert(GR_GL_FRAMEBUFFER == target);
445
446 return GR_GL_FRAMEBUFFER_COMPLETE;
447}
448
449GrGLvoid 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
456GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDeleteIds(GrGLsizei n, const GrGLuint* ids) {
457}
458
459GrGLenum GR_GL_FUNCTION_TYPE noOpGLGetError() {
460 return GR_GL_NO_ERROR;
461}
462
463GrGLvoid 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) {
bsalomon@google.com1744f972013-02-26 21:46:32 +0000467 case GR_GL_CONTEXT_PROFILE_MASK:
468 *params = GR_GL_CONTEXT_COMPATIBILITY_PROFILE_BIT;
469 break;
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000470 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;
commit-bot@chromium.org46fbfe02013-08-30 15:52:12 +0000488 case GR_GL_MAX_TEXTURE_COORDS:
489 *params = 8;
490 break;
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000491 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;
bsalomon@google.com1744f972013-02-26 21:46:32 +0000520 case GR_GL_NUM_EXTENSIONS:
521 *params = GR_ARRAY_COUNT(kExtensions);
522 break;
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000523 default:
524 GrCrash("Unexpected pname to GetIntegerv");
525 }
526}
527
528GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetInfoLog(GrGLuint program,
529 GrGLsizei bufsize,
530 GrGLsizei* length,
bsalomon@google.com1744f972013-02-26 21:46:32 +0000531 char* infolog) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000532 if (length) {
533 *length = 0;
534 }
535 if (bufsize > 0) {
536 *infolog = 0;
537 }
538}
539
540GrGLvoid 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
558namespace {
559template <typename T>
560void 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
575GrGLvoid 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
590GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjecti64v(GrGLuint id,
591 GrGLenum pname,
592 GrGLint64 *params) {
593 query_result(id, pname, params);
594}
595
596GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectiv(GrGLuint id,
597 GrGLenum pname,
598 GrGLint *params) {
599 query_result(id, pname, params);
600}
601
602GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectui64v(GrGLuint id,
603 GrGLenum pname,
604 GrGLuint64 *params) {
605 query_result(id, pname, params);
606}
607
608GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectuiv(GrGLuint id,
609 GrGLenum pname,
610 GrGLuint *params) {
611 query_result(id, pname, params);
612}
613
614const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetString(GrGLenum name) {
615 switch (name) {
616 case GR_GL_EXTENSIONS:
bsalomon@google.com1744f972013-02-26 21:46:32 +0000617 return combined_extensions_string();
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000618 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:
bsalomon@google.com1744f972013-02-26 21:46:32 +0000627 GrCrash("Unexpected name passed to GetString");
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000628 return NULL;
629 }
630}
631
bsalomon@google.com1744f972013-02-26 21:46:32 +0000632const 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
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000646GrGLvoid 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
bsalomon@google.com1744f972013-02-26 21:46:32 +0000655GrGLint GR_GL_FUNCTION_TYPE noOpGLGetUniformLocation(GrGLuint program, const char* name) {
bsalomon@google.com9c58f462013-02-26 14:45:41 +0000656 static int gUniLocation = 0;
657 return ++gUniLocation;
658}