1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/gpu/gl/GrGLNoOpInterface.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,656 @@ 1.4 +/* 1.5 + * Copyright 2013 Google Inc. 1.6 + * 1.7 + * Use of this source code is governed by a BSD-style license that can be 1.8 + * found in the LICENSE file. 1.9 + */ 1.10 + 1.11 +#include "GrGLNoOpInterface.h" 1.12 +#include "SkString.h" 1.13 +#include "SkThread.h" 1.14 + 1.15 +// the OpenGLES 2.0 spec says this must be >= 128 1.16 +static const GrGLint kDefaultMaxVertexUniformVectors = 128; 1.17 + 1.18 +// the OpenGLES 2.0 spec says this must be >=16 1.19 +static const GrGLint kDefaultMaxFragmentUniformVectors = 16; 1.20 + 1.21 +// the OpenGLES 2.0 spec says this must be >= 8 1.22 +static const GrGLint kDefaultMaxVertexAttribs = 8; 1.23 + 1.24 +// the OpenGLES 2.0 spec says this must be >= 8 1.25 +static const GrGLint kDefaultMaxVaryingVectors = 8; 1.26 + 1.27 +static const char* kExtensions[] = { 1.28 + "GL_ARB_framebuffer_object", 1.29 + "GL_ARB_blend_func_extended", 1.30 + "GL_ARB_timer_query", 1.31 + "GL_ARB_draw_buffers", 1.32 + "GL_ARB_occlusion_query", 1.33 + "GL_EXT_blend_color", 1.34 + "GL_EXT_stencil_wrap" 1.35 +}; 1.36 + 1.37 +namespace { 1.38 +const GrGLubyte* combined_extensions_string() { 1.39 + static SkString gExtString; 1.40 + static SkMutex gMutex; 1.41 + gMutex.acquire(); 1.42 + if (0 == gExtString.size()) { 1.43 + for (size_t i = 0; i < GR_ARRAY_COUNT(kExtensions) - 1; ++i) { 1.44 + gExtString.append(kExtensions[i]); 1.45 + gExtString.append(" "); 1.46 + } 1.47 + gExtString.append(kExtensions[GR_ARRAY_COUNT(kExtensions) - 1]); 1.48 + } 1.49 + gMutex.release(); 1.50 + return (const GrGLubyte*) gExtString.c_str(); 1.51 +} 1.52 +} 1.53 + 1.54 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendColor(GrGLclampf red, 1.55 + GrGLclampf green, 1.56 + GrGLclampf blue, 1.57 + GrGLclampf alpha) { 1.58 +} 1.59 + 1.60 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocation(GrGLuint program, 1.61 + GrGLuint colorNumber, 1.62 + const GrGLchar* name) { 1.63 +} 1.64 + 1.65 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlendFunc(GrGLenum sfactor, 1.66 + GrGLenum dfactor) { 1.67 +} 1.68 + 1.69 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBufferSubData(GrGLenum target, 1.70 + GrGLintptr offset, 1.71 + GrGLsizeiptr size, 1.72 + const GrGLvoid* data) { 1.73 +} 1.74 + 1.75 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClear(GrGLbitfield mask) { 1.76 +} 1.77 + 1.78 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearColor(GrGLclampf red, 1.79 + GrGLclampf green, 1.80 + GrGLclampf blue, 1.81 + GrGLclampf alpha) { 1.82 +} 1.83 + 1.84 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLClearStencil(GrGLint s) { 1.85 +} 1.86 + 1.87 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLColorMask(GrGLboolean red, 1.88 + GrGLboolean green, 1.89 + GrGLboolean blue, 1.90 + GrGLboolean alpha) { 1.91 +} 1.92 + 1.93 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompileShader(GrGLuint shader) { 1.94 +} 1.95 + 1.96 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCompressedTexImage2D(GrGLenum target, 1.97 + GrGLint level, 1.98 + GrGLenum internalformat, 1.99 + GrGLsizei width, 1.100 + GrGLsizei height, 1.101 + GrGLint border, 1.102 + GrGLsizei imageSize, 1.103 + const GrGLvoid* data) { 1.104 +} 1.105 + 1.106 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCopyTexSubImage2D(GrGLenum target, 1.107 + GrGLint level, 1.108 + GrGLint xoffset, 1.109 + GrGLint yoffset, 1.110 + GrGLint x, 1.111 + GrGLint y, 1.112 + GrGLsizei width, 1.113 + GrGLsizei height) { 1.114 +} 1.115 + 1.116 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLCullFace(GrGLenum mode) { 1.117 +} 1.118 + 1.119 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDepthMask(GrGLboolean flag) { 1.120 +} 1.121 + 1.122 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisable(GrGLenum cap) { 1.123 +} 1.124 + 1.125 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDisableVertexAttribArray(GrGLuint index) { 1.126 +} 1.127 + 1.128 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawArrays(GrGLenum mode, 1.129 + GrGLint first, 1.130 + GrGLsizei count) { 1.131 +} 1.132 + 1.133 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffer(GrGLenum mode) { 1.134 +} 1.135 + 1.136 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawBuffers(GrGLsizei n, 1.137 + const GrGLenum* bufs) { 1.138 +} 1.139 + 1.140 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDrawElements(GrGLenum mode, 1.141 + GrGLsizei count, 1.142 + GrGLenum type, 1.143 + const GrGLvoid* indices) { 1.144 +} 1.145 + 1.146 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnable(GrGLenum cap) { 1.147 +} 1.148 + 1.149 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEnableVertexAttribArray(GrGLuint index) { 1.150 +} 1.151 + 1.152 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLEndQuery(GrGLenum target) { 1.153 +} 1.154 + 1.155 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFinish() { 1.156 +} 1.157 + 1.158 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFlush() { 1.159 +} 1.160 + 1.161 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLFrontFace(GrGLenum mode) { 1.162 +} 1.163 + 1.164 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLineWidth(GrGLfloat width) { 1.165 +} 1.166 + 1.167 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLinkProgram(GrGLuint program) { 1.168 +} 1.169 + 1.170 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLoadIdentity() { 1.171 +} 1.172 + 1.173 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLLoadMatrixf(const GrGLfloat*) { 1.174 +} 1.175 + 1.176 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLMatrixMode(GrGLenum) { 1.177 +} 1.178 + 1.179 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLQueryCounter(GrGLuint id, GrGLenum target) { 1.180 +} 1.181 + 1.182 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLReadBuffer(GrGLenum src) { 1.183 +} 1.184 + 1.185 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLScissor(GrGLint x, 1.186 + GrGLint y, 1.187 + GrGLsizei width, 1.188 + GrGLsizei height) { 1.189 +} 1.190 + 1.191 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLShaderSource(GrGLuint shader, 1.192 + GrGLsizei count, 1.193 +#if GR_GL_USE_NEW_SHADER_SOURCE_SIGNATURE 1.194 + const char* const * str, 1.195 +#else 1.196 + const char** str, 1.197 +#endif 1.198 + const GrGLint* length) { 1.199 +} 1.200 + 1.201 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFunc(GrGLenum func, GrGLint ref, GrGLuint mask) { 1.202 +} 1.203 + 1.204 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilFuncSeparate(GrGLenum face, 1.205 + GrGLenum func, 1.206 + GrGLint ref, 1.207 + GrGLuint mask) { 1.208 +} 1.209 + 1.210 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMask(GrGLuint mask) { 1.211 +} 1.212 + 1.213 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilMaskSeparate(GrGLenum face, GrGLuint mask) { 1.214 +} 1.215 + 1.216 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOp(GrGLenum fail, GrGLenum zfail, GrGLenum zpass) { 1.217 +} 1.218 + 1.219 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLStencilOpSeparate(GrGLenum face, 1.220 + GrGLenum fail, 1.221 + GrGLenum zfail, 1.222 + GrGLenum zpass) { 1.223 +} 1.224 + 1.225 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGenf(GrGLenum, GrGLenum, float) { 1.226 +} 1.227 + 1.228 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGenfv(GrGLenum, GrGLenum, const float*) { 1.229 +} 1.230 + 1.231 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexGeni(GrGLenum, GrGLenum, GrGLint) { 1.232 +} 1.233 + 1.234 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexImage2D(GrGLenum target, 1.235 + GrGLint level, 1.236 + GrGLint internalformat, 1.237 + GrGLsizei width, 1.238 + GrGLsizei height, 1.239 + GrGLint border, 1.240 + GrGLenum format, 1.241 + GrGLenum type, 1.242 + const GrGLvoid* pixels) { 1.243 +} 1.244 + 1.245 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteri(GrGLenum target, 1.246 + GrGLenum pname, 1.247 + GrGLint param) { 1.248 +} 1.249 + 1.250 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexParameteriv(GrGLenum target, 1.251 + GrGLenum pname, 1.252 + const GrGLint* params) { 1.253 +} 1.254 + 1.255 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexStorage2D(GrGLenum target, 1.256 + GrGLsizei levels, 1.257 + GrGLenum internalformat, 1.258 + GrGLsizei width, 1.259 + GrGLsizei height) { 1.260 +} 1.261 + 1.262 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDiscardFramebuffer(GrGLenum target, 1.263 + GrGLsizei numAttachments, 1.264 + const GrGLenum* attachments) { 1.265 +} 1.266 + 1.267 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLTexSubImage2D(GrGLenum target, 1.268 + GrGLint level, 1.269 + GrGLint xoffset, 1.270 + GrGLint yoffset, 1.271 + GrGLsizei width, 1.272 + GrGLsizei height, 1.273 + GrGLenum format, 1.274 + GrGLenum type, 1.275 + const GrGLvoid* pixels) { 1.276 +} 1.277 + 1.278 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1f(GrGLint location, GrGLfloat v0) { 1.279 +} 1.280 + 1.281 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1i(GrGLint location, GrGLint v0) { 1.282 +} 1.283 + 1.284 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1fv(GrGLint location, 1.285 + GrGLsizei count, 1.286 + const GrGLfloat* v) { 1.287 +} 1.288 + 1.289 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform1iv(GrGLint location, 1.290 + GrGLsizei count, 1.291 + const GrGLint* v) { 1.292 +} 1.293 + 1.294 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2f(GrGLint location, GrGLfloat v0, GrGLfloat v1) { 1.295 +} 1.296 + 1.297 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2i(GrGLint location, GrGLint v0, GrGLint v1) { 1.298 +} 1.299 + 1.300 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2fv(GrGLint location, 1.301 + GrGLsizei count, 1.302 + const GrGLfloat* v) { 1.303 +} 1.304 + 1.305 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform2iv(GrGLint location, 1.306 + GrGLsizei count, 1.307 + const GrGLint* v) { 1.308 +} 1.309 + 1.310 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3f(GrGLint location, 1.311 + GrGLfloat v0, 1.312 + GrGLfloat v1, 1.313 + GrGLfloat v2) { 1.314 +} 1.315 + 1.316 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3i(GrGLint location, 1.317 + GrGLint v0, 1.318 + GrGLint v1, 1.319 + GrGLint v2) { 1.320 +} 1.321 + 1.322 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3fv(GrGLint location, 1.323 + GrGLsizei count, 1.324 + const GrGLfloat* v) { 1.325 +} 1.326 + 1.327 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform3iv(GrGLint location, 1.328 + GrGLsizei count, 1.329 + const GrGLint* v) { 1.330 +} 1.331 + 1.332 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4f(GrGLint location, 1.333 + GrGLfloat v0, 1.334 + GrGLfloat v1, 1.335 + GrGLfloat v2, 1.336 + GrGLfloat v3) { 1.337 +} 1.338 + 1.339 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4i(GrGLint location, 1.340 + GrGLint v0, 1.341 + GrGLint v1, 1.342 + GrGLint v2, 1.343 + GrGLint v3) { 1.344 +} 1.345 + 1.346 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4fv(GrGLint location, 1.347 + GrGLsizei count, 1.348 + const GrGLfloat* v) { 1.349 +} 1.350 + 1.351 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniform4iv(GrGLint location, 1.352 + GrGLsizei count, 1.353 + const GrGLint* v) { 1.354 +} 1.355 + 1.356 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix2fv(GrGLint location, 1.357 + GrGLsizei count, 1.358 + GrGLboolean transpose, 1.359 + const GrGLfloat* value) { 1.360 +} 1.361 + 1.362 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix3fv(GrGLint location, 1.363 + GrGLsizei count, 1.364 + GrGLboolean transpose, 1.365 + const GrGLfloat* value) { 1.366 +} 1.367 + 1.368 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLUniformMatrix4fv(GrGLint location, 1.369 + GrGLsizei count, 1.370 + GrGLboolean transpose, 1.371 + const GrGLfloat* value) { 1.372 +} 1.373 + 1.374 + GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttrib4fv(GrGLuint indx, const GrGLfloat* values) { 1.375 +} 1.376 + 1.377 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLVertexAttribPointer(GrGLuint indx, 1.378 + GrGLint size, 1.379 + GrGLenum type, 1.380 + GrGLboolean normalized, 1.381 + GrGLsizei stride, 1.382 + const GrGLvoid* ptr) { 1.383 +} 1.384 + 1.385 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLViewport(GrGLint x, 1.386 + GrGLint y, 1.387 + GrGLsizei width, 1.388 + GrGLsizei height) { 1.389 +} 1.390 + 1.391 + GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetFramebufferAttachmentParameteriv(GrGLenum target, 1.392 + GrGLenum attachment, 1.393 + GrGLenum pname, 1.394 + GrGLint* params) { 1.395 +} 1.396 + 1.397 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetRenderbufferParameteriv(GrGLenum target, 1.398 + GrGLenum pname, 1.399 + GrGLint* params) { 1.400 +} 1.401 + 1.402 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorage(GrGLenum target, 1.403 + GrGLenum internalformat, 1.404 + GrGLsizei width, 1.405 + GrGLsizei height) { 1.406 +} 1.407 + 1.408 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLRenderbufferStorageMultisample(GrGLenum target, 1.409 + GrGLsizei samples, 1.410 + GrGLenum internalformat, 1.411 + GrGLsizei width, 1.412 + GrGLsizei height) { 1.413 +} 1.414 + 1.415 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBlitFramebuffer(GrGLint srcX0, 1.416 + GrGLint srcY0, 1.417 + GrGLint srcX1, 1.418 + GrGLint srcY1, 1.419 + GrGLint dstX0, 1.420 + GrGLint dstY0, 1.421 + GrGLint dstX1, 1.422 + GrGLint dstY1, 1.423 + GrGLbitfield mask, 1.424 + GrGLenum filter) { 1.425 +} 1.426 + 1.427 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLResolveMultisampleFramebuffer() { 1.428 +} 1.429 + 1.430 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLBindFragDataLocationIndexed(GrGLuint program, 1.431 + GrGLuint colorNumber, 1.432 + GrGLuint index, 1.433 + const GrGLchar * name) { 1.434 +} 1.435 + 1.436 +GrGLenum GR_GL_FUNCTION_TYPE noOpGLCheckFramebufferStatus(GrGLenum target) { 1.437 + 1.438 + GrAlwaysAssert(GR_GL_FRAMEBUFFER == target); 1.439 + 1.440 + return GR_GL_FRAMEBUFFER_COMPLETE; 1.441 +} 1.442 + 1.443 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGenIds(GrGLsizei n, GrGLuint* ids) { 1.444 + static int gCurrID = 1; 1.445 + for (int i = 0; i < n; ++i) { 1.446 + ids[i] = ++gCurrID; 1.447 + } 1.448 +} 1.449 + 1.450 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLDeleteIds(GrGLsizei n, const GrGLuint* ids) { 1.451 +} 1.452 + 1.453 +GrGLenum GR_GL_FUNCTION_TYPE noOpGLGetError() { 1.454 + return GR_GL_NO_ERROR; 1.455 +} 1.456 + 1.457 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetIntegerv(GrGLenum pname, GrGLint* params) { 1.458 + // TODO: remove from Ganesh the #defines for gets we don't use. 1.459 + // We would like to minimize gets overall due to performance issues 1.460 + switch (pname) { 1.461 + case GR_GL_CONTEXT_PROFILE_MASK: 1.462 + *params = GR_GL_CONTEXT_COMPATIBILITY_PROFILE_BIT; 1.463 + break; 1.464 + case GR_GL_STENCIL_BITS: 1.465 + *params = 8; 1.466 + break; 1.467 + case GR_GL_SAMPLES: 1.468 + *params = 1; 1.469 + break; 1.470 + case GR_GL_FRAMEBUFFER_BINDING: 1.471 + *params = 0; 1.472 + break; 1.473 + case GR_GL_VIEWPORT: 1.474 + params[0] = 0; 1.475 + params[1] = 0; 1.476 + params[2] = 800; 1.477 + params[3] = 600; 1.478 + break; 1.479 + case GR_GL_MAX_TEXTURE_IMAGE_UNITS: 1.480 + *params = 8; 1.481 + break; 1.482 + case GR_GL_MAX_TEXTURE_COORDS: 1.483 + *params = 8; 1.484 + break; 1.485 + case GR_GL_MAX_VERTEX_UNIFORM_VECTORS: 1.486 + *params = kDefaultMaxVertexUniformVectors; 1.487 + break; 1.488 + case GR_GL_MAX_FRAGMENT_UNIFORM_VECTORS: 1.489 + *params = kDefaultMaxFragmentUniformVectors; 1.490 + break; 1.491 + case GR_GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: 1.492 + *params = 16 * 4; 1.493 + break; 1.494 + case GR_GL_NUM_COMPRESSED_TEXTURE_FORMATS: 1.495 + *params = 0; 1.496 + break; 1.497 + case GR_GL_COMPRESSED_TEXTURE_FORMATS: 1.498 + break; 1.499 + case GR_GL_MAX_TEXTURE_SIZE: 1.500 + *params = 8192; 1.501 + break; 1.502 + case GR_GL_MAX_RENDERBUFFER_SIZE: 1.503 + *params = 8192; 1.504 + break; 1.505 + case GR_GL_MAX_SAMPLES: 1.506 + *params = 32; 1.507 + break; 1.508 + case GR_GL_MAX_VERTEX_ATTRIBS: 1.509 + *params = kDefaultMaxVertexAttribs; 1.510 + break; 1.511 + case GR_GL_MAX_VARYING_VECTORS: 1.512 + *params = kDefaultMaxVaryingVectors; 1.513 + break; 1.514 + case GR_GL_NUM_EXTENSIONS: 1.515 + *params = GR_ARRAY_COUNT(kExtensions); 1.516 + break; 1.517 + default: 1.518 + GrCrash("Unexpected pname to GetIntegerv"); 1.519 + } 1.520 +} 1.521 + 1.522 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetInfoLog(GrGLuint program, 1.523 + GrGLsizei bufsize, 1.524 + GrGLsizei* length, 1.525 + char* infolog) { 1.526 + if (length) { 1.527 + *length = 0; 1.528 + } 1.529 + if (bufsize > 0) { 1.530 + *infolog = 0; 1.531 + } 1.532 +} 1.533 + 1.534 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetShaderOrProgramiv(GrGLuint program, 1.535 + GrGLenum pname, 1.536 + GrGLint* params) { 1.537 + switch (pname) { 1.538 + case GR_GL_LINK_STATUS: // fallthru 1.539 + case GR_GL_COMPILE_STATUS: 1.540 + *params = GR_GL_TRUE; 1.541 + break; 1.542 + case GR_GL_INFO_LOG_LENGTH: 1.543 + *params = 0; 1.544 + break; 1.545 + // we don't expect any other pnames 1.546 + default: 1.547 + GrCrash("Unexpected pname to GetProgramiv"); 1.548 + break; 1.549 + } 1.550 +} 1.551 + 1.552 +namespace { 1.553 +template <typename T> 1.554 +void query_result(GrGLenum GLtarget, GrGLenum pname, T *params) { 1.555 + switch (pname) { 1.556 + case GR_GL_QUERY_RESULT_AVAILABLE: 1.557 + *params = GR_GL_TRUE; 1.558 + break; 1.559 + case GR_GL_QUERY_RESULT: 1.560 + *params = 0; 1.561 + break; 1.562 + default: 1.563 + GrCrash("Unexpected pname passed to GetQueryObject."); 1.564 + break; 1.565 + } 1.566 +} 1.567 +} 1.568 + 1.569 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryiv(GrGLenum GLtarget, 1.570 + GrGLenum pname, 1.571 + GrGLint *params) { 1.572 + switch (pname) { 1.573 + case GR_GL_CURRENT_QUERY: 1.574 + *params = 0; 1.575 + break; 1.576 + case GR_GL_QUERY_COUNTER_BITS: 1.577 + *params = 32; 1.578 + break; 1.579 + default: 1.580 + GrCrash("Unexpected pname passed GetQueryiv."); 1.581 + } 1.582 +} 1.583 + 1.584 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjecti64v(GrGLuint id, 1.585 + GrGLenum pname, 1.586 + GrGLint64 *params) { 1.587 + query_result(id, pname, params); 1.588 +} 1.589 + 1.590 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectiv(GrGLuint id, 1.591 + GrGLenum pname, 1.592 + GrGLint *params) { 1.593 + query_result(id, pname, params); 1.594 +} 1.595 + 1.596 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectui64v(GrGLuint id, 1.597 + GrGLenum pname, 1.598 + GrGLuint64 *params) { 1.599 + query_result(id, pname, params); 1.600 +} 1.601 + 1.602 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetQueryObjectuiv(GrGLuint id, 1.603 + GrGLenum pname, 1.604 + GrGLuint *params) { 1.605 + query_result(id, pname, params); 1.606 +} 1.607 + 1.608 +const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetString(GrGLenum name) { 1.609 + switch (name) { 1.610 + case GR_GL_EXTENSIONS: 1.611 + return combined_extensions_string(); 1.612 + case GR_GL_VERSION: 1.613 + return (const GrGLubyte*)"4.0 Debug GL"; 1.614 + case GR_GL_SHADING_LANGUAGE_VERSION: 1.615 + return (const GrGLubyte*)"4.20.8 Debug GLSL"; 1.616 + case GR_GL_VENDOR: 1.617 + return (const GrGLubyte*)"Debug Vendor"; 1.618 + case GR_GL_RENDERER: 1.619 + return (const GrGLubyte*)"The Debug (Non-)Renderer"; 1.620 + default: 1.621 + GrCrash("Unexpected name passed to GetString"); 1.622 + return NULL; 1.623 + } 1.624 +} 1.625 + 1.626 +const GrGLubyte* GR_GL_FUNCTION_TYPE noOpGLGetStringi(GrGLenum name, GrGLuint i) { 1.627 + switch (name) { 1.628 + case GR_GL_EXTENSIONS: 1.629 + if (static_cast<size_t>(i) <= GR_ARRAY_COUNT(kExtensions)) { 1.630 + return (const GrGLubyte*) kExtensions[i]; 1.631 + } else { 1.632 + return NULL; 1.633 + } 1.634 + default: 1.635 + GrCrash("Unexpected name passed to GetStringi"); 1.636 + return NULL; 1.637 + } 1.638 +} 1.639 + 1.640 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLGetTexLevelParameteriv(GrGLenum target, 1.641 + GrGLint level, 1.642 + GrGLenum pname, 1.643 + GrGLint* params) { 1.644 + // we used to use this to query stuff about externally created textures, 1.645 + // now we just require clients to tell us everything about the texture. 1.646 + GrCrash("Should never query texture parameters."); 1.647 +} 1.648 + 1.649 +GrGLint GR_GL_FUNCTION_TYPE noOpGLGetUniformLocation(GrGLuint program, const char* name) { 1.650 + static int gUniLocation = 0; 1.651 + return ++gUniLocation; 1.652 +} 1.653 + 1.654 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLInsertEventMarker(GrGLsizei length, const char* marker) { 1.655 +} 1.656 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLPushGroupMarker(GrGLsizei length , const char* marker) { 1.657 +} 1.658 +GrGLvoid GR_GL_FUNCTION_TYPE noOpGLPopGroupMarker() { 1.659 +}