1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_GL_GL_STUB_API_H_ 6 #define UI_GL_GL_STUB_API_H_ 7 8 #include <string> 9 10 #include "ui/gl/gl_export.h" 11 #include "ui/gl/gl_stub_api_base.h" 12 13 namespace gl { 14 15 class GL_EXPORT GLStubApi: public GLStubApiBase { 16 public: 17 GLStubApi(); 18 ~GLStubApi() override; 19 set_version(std::string version)20 void set_version(std::string version) { version_ = std::move(version); } 21 set_extensions(std::string extensions)22 void set_extensions(std::string extensions) { 23 extensions_ = std::move(extensions); 24 } 25 26 GLenum glCheckFramebufferStatusEXTFn(GLenum target) override; 27 GLuint glCreateProgramFn(void) override; 28 GLuint glCreateShaderFn(GLenum type) override; 29 GLsync glFenceSyncFn(GLenum condition, GLbitfield flags) override; 30 void glGenBuffersARBFn(GLsizei n, GLuint* buffers) override; 31 void glGenerateMipmapEXTFn(GLenum target) override; 32 void glGenFencesAPPLEFn(GLsizei n, GLuint* fences) override; 33 void glGenFencesNVFn(GLsizei n, GLuint* fences) override; 34 void glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) override; 35 GLuint glGenPathsNVFn(GLsizei range) override; 36 void glGenQueriesFn(GLsizei n, GLuint* ids) override; 37 void glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) override; 38 void glGenSamplersFn(GLsizei n, GLuint* samplers) override; 39 void glGenTexturesFn(GLsizei n, GLuint* textures) override; 40 void glGenTransformFeedbacksFn(GLsizei n, GLuint* ids) override; 41 void glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) override; 42 void glGetIntegervFn(GLenum pname, GLint* params) override; 43 void glGetProgramivFn(GLuint program, GLenum pname, GLint* params) override; 44 void glGetShaderivFn(GLuint shader, GLenum pname, GLint* params) override; 45 void glGetQueryObjecti64vFn(GLuint id, 46 GLenum pname, 47 GLint64* params) override; 48 void glGetQueryObjectivFn(GLuint id, GLenum pname, GLint* params) override; 49 void glGetQueryObjectui64vFn(GLuint id, 50 GLenum pname, 51 GLuint64* params) override; 52 void glGetQueryObjectuivFn(GLuint id, GLenum pname, GLuint* params) override; 53 const GLubyte* glGetStringFn(GLenum name) override; 54 const GLubyte* glGetStringiFn(GLenum name, GLuint index) override; 55 GLboolean glIsBufferFn(GLuint buffer) override; 56 GLboolean glIsEnabledFn(GLenum cap) override; 57 GLboolean glIsFenceAPPLEFn(GLuint fence) override; 58 GLboolean glIsFenceNVFn(GLuint fence) override; 59 GLboolean glIsFramebufferEXTFn(GLuint framebuffer) override; 60 GLboolean glIsPathNVFn(GLuint path) override; 61 GLboolean glIsProgramFn(GLuint program) override; 62 GLboolean glIsQueryFn(GLuint query) override; 63 GLboolean glIsRenderbufferEXTFn(GLuint renderbuffer) override; 64 GLboolean glIsSamplerFn(GLuint sampler) override; 65 GLboolean glIsShaderFn(GLuint shader) override; 66 GLboolean glIsSyncFn(GLsync sync) override; 67 GLboolean glIsTextureFn(GLuint texture) override; 68 GLboolean glIsTransformFeedbackFn(GLuint id) override; 69 GLboolean glIsVertexArrayOESFn(GLuint array) override; 70 GLboolean glTestFenceAPPLEFn(GLuint fence) override; 71 GLboolean glTestFenceNVFn(GLuint fence) override; 72 GLboolean glUnmapBufferFn(GLenum target) override; 73 74 private: 75 // The only consumers of GLStubApi are GpuChannelTestCommon (gpu_unittests) 76 // and GPU fuzzers. We get a new GLStubApi for every case executed by 77 // fuzzers, so we don't have to worry about ID exhaustion. GenHelper(GLsizei count,GLuint * objects)78 void GenHelper(GLsizei count, GLuint* objects) { 79 for (GLsizei i = 0; i < count; ++i) 80 objects[i] = next_id_++; 81 } 82 83 std::string version_; 84 std::string extensions_; 85 GLuint next_id_ = 1; 86 87 DISALLOW_COPY_AND_ASSIGN(GLStubApi); 88 }; 89 90 } // namespace gl 91 92 #endif // UI_GL_GL_STUB_API_H_ 93