// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/gl/gl_stub_api.h" namespace gl { GLStubApi::GLStubApi() {} GLStubApi::~GLStubApi() = default; GLenum GLStubApi::glCheckFramebufferStatusEXTFn(GLenum target) { return GL_FRAMEBUFFER_COMPLETE; } GLuint GLStubApi::glCreateProgramFn(void) { return 1; } GLuint GLStubApi::glCreateShaderFn(GLenum type) { return 2; } GLsync GLStubApi::glFenceSyncFn(GLenum condition, GLbitfield flags) { return reinterpret_cast(1); } void GLStubApi::glGenBuffersARBFn(GLsizei n, GLuint* buffers) { GenHelper(n, buffers); } void GLStubApi::glGenerateMipmapEXTFn(GLenum target) {} void GLStubApi::glGenFencesAPPLEFn(GLsizei n, GLuint* fences) { GenHelper(n, fences); } void GLStubApi::glGenFencesNVFn(GLsizei n, GLuint* fences) { GenHelper(n, fences); } void GLStubApi::glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) { GenHelper(n, framebuffers); } GLuint GLStubApi::glGenPathsNVFn(GLsizei range) { return 1; } void GLStubApi::glGenQueriesFn(GLsizei n, GLuint* ids) { GenHelper(n, ids); } void GLStubApi::glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) { GenHelper(n, renderbuffers); } void GLStubApi::glGenSamplersFn(GLsizei n, GLuint* samplers) { GenHelper(n, samplers); } void GLStubApi::glGenTexturesFn(GLsizei n, GLuint* textures) { GenHelper(n, textures); } void GLStubApi::glGenTransformFeedbacksFn(GLsizei n, GLuint* ids) { GenHelper(n, ids); } void GLStubApi::glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) { GenHelper(n, arrays); } void GLStubApi::glGetIntegervFn(GLenum pname, GLint* params) { // We need some values to be large enough to initialize ContextGroup. switch (pname) { default: *params = 1; break; case GL_MAX_RENDERBUFFER_SIZE: *params = 512; break; case GL_MAX_SAMPLES: *params = 4; break; case GL_MAX_COLOR_ATTACHMENTS_EXT: *params = 4; break; case GL_MAX_DRAW_BUFFERS_ARB: *params = 4; break; case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: *params = 4; break; case GL_MAX_UNIFORM_BUFFER_BINDINGS: *params = 24; break; case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: *params = 256; break; case GL_MAX_VERTEX_ATTRIBS: *params = 8; break; case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: *params = 8; break; case GL_MAX_TEXTURE_IMAGE_UNITS: *params = 8; break; case GL_MAX_TEXTURE_SIZE: case GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB: *params = 2048; break; case GL_MAX_CUBE_MAP_TEXTURE_SIZE: *params = 2048; break; case GL_MAX_3D_TEXTURE_SIZE: *params = 256; break; case GL_MAX_ARRAY_TEXTURE_LAYERS: *params = 256; break; case GL_MAX_VARYING_VECTORS: *params = 8; break; case GL_MAX_VARYING_FLOATS: *params = 32; break; case GL_MAX_VERTEX_UNIFORM_VECTORS: *params = 128; break; case GL_MAX_VERTEX_UNIFORM_COMPONENTS: *params = 512; break; case GL_MAX_FRAGMENT_UNIFORM_VECTORS: *params = 16; break; case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: *params = 64; break; case GL_MAX_VERTEX_OUTPUT_COMPONENTS: *params = 64; break; case GL_MAX_FRAGMENT_INPUT_COMPONENTS: *params = 60; break; case GL_MAX_PROGRAM_TEXEL_OFFSET: *params = 7; break; case GL_MIN_PROGRAM_TEXEL_OFFSET: *params = -8; break; case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: *params = 32; break; case GL_MAX_VIEWPORT_DIMS: *params = 1024 << 8; break; case GL_ALPHA_BITS: *params = 8; break; case GL_DEPTH_BITS: *params = 24; break; case GL_STENCIL_BITS: *params = 8; break; case GL_TEXTURE_BINDING_2D: *params = 1; break; case GL_FRAMEBUFFER_BINDING: *params = 1; break; case GL_IMPLEMENTATION_COLOR_READ_TYPE: *params = GL_UNSIGNED_BYTE; break; case GL_IMPLEMENTATION_COLOR_READ_FORMAT: *params = GL_RGBA; break; } } void GLStubApi::glGetProgramivFn(GLuint program, GLenum pname, GLint* params) { switch (pname) { case GL_LINK_STATUS: *params = GL_TRUE; break; case GL_VALIDATE_STATUS: *params = GL_TRUE; break; default: break; } } void GLStubApi::glGetQueryObjecti64vFn(GLuint id, GLenum pname, GLint64* params) { switch (pname) { case GL_QUERY_RESULT_AVAILABLE: *params = GL_TRUE; break; default: break; } } void GLStubApi::glGetQueryObjectivFn(GLuint id, GLenum pname, GLint* params) { switch (pname) { case GL_QUERY_RESULT_AVAILABLE: *params = GL_TRUE; break; default: break; } } void GLStubApi::glGetQueryObjectui64vFn(GLuint id, GLenum pname, GLuint64* params) { switch (pname) { case GL_QUERY_RESULT_AVAILABLE: *params = GL_TRUE; break; default: break; } } void GLStubApi::glGetQueryObjectuivFn(GLuint id, GLenum pname, GLuint* params) { switch (pname) { case GL_QUERY_RESULT_AVAILABLE: *params = GL_TRUE; break; default: break; } } void GLStubApi::glGetShaderivFn(GLuint shader, GLenum pname, GLint* params) { switch (pname) { case GL_COMPILE_STATUS: *params = GL_TRUE; break; default: break; } } const GLubyte* GLStubApi::glGetStringFn(GLenum name) { switch (name) { case GL_RENDERER: default: return reinterpret_cast(""); case GL_VERSION: return reinterpret_cast(version_.c_str()); case GL_EXTENSIONS: return reinterpret_cast(extensions_.c_str()); } } const GLubyte* GLStubApi::glGetStringiFn(GLenum name, GLuint index) { return reinterpret_cast(""); } GLboolean GLStubApi::glIsBufferFn(GLuint buffer) { return GL_TRUE; } GLboolean GLStubApi::glIsEnabledFn(GLenum cap) { return GL_TRUE; } GLboolean GLStubApi::glIsFenceAPPLEFn(GLuint fence) { return GL_TRUE; } GLboolean GLStubApi::glIsFenceNVFn(GLuint fence) { return GL_TRUE; } GLboolean GLStubApi::glIsFramebufferEXTFn(GLuint framebuffer) { return GL_TRUE; } GLboolean GLStubApi::glIsPathNVFn(GLuint path) { return GL_TRUE; } GLboolean GLStubApi::glIsProgramFn(GLuint program) { return GL_TRUE; } GLboolean GLStubApi::glIsQueryFn(GLuint query) { return GL_TRUE; } GLboolean GLStubApi::glIsRenderbufferEXTFn(GLuint renderbuffer) { return GL_TRUE; } GLboolean GLStubApi::glIsSamplerFn(GLuint sampler) { return GL_TRUE; } GLboolean GLStubApi::glIsShaderFn(GLuint shader) { return GL_TRUE; } GLboolean GLStubApi::glIsSyncFn(GLsync sync) { return GL_TRUE; } GLboolean GLStubApi::glIsTextureFn(GLuint texture) { return GL_TRUE; } GLboolean GLStubApi::glIsTransformFeedbackFn(GLuint id) { return GL_TRUE; } GLboolean GLStubApi::glIsVertexArrayOESFn(GLuint array) { return GL_TRUE; } GLboolean GLStubApi::glTestFenceAPPLEFn(GLuint fence) { return GL_TRUE; } GLboolean GLStubApi::glTestFenceNVFn(GLuint fence) { return GL_TRUE; } GLboolean GLStubApi::glUnmapBufferFn(GLenum target) { return GL_TRUE; } } // namespace gl