piman | aa595d83 | 2016-07-13 20:26:45 | [diff] [blame] | 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 | |
piman | 0e25755 | 2016-09-02 22:33:18 | [diff] [blame] | 8 | #include <string> |
| 9 | |
piman | aa595d83 | 2016-07-13 20:26:45 | [diff] [blame] | 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: |
piman | 0e25755 | 2016-09-02 22:33:18 | [diff] [blame] | 17 | GLStubApi(); |
| 18 | ~GLStubApi() override; |
| 19 | |
| 20 | void set_version(std::string version) { version_ = std::move(version); } |
| 21 | |
| 22 | void set_extensions(std::string extensions) { |
| 23 | extensions_ = std::move(extensions); |
| 24 | } |
| 25 | |
piman | aa595d83 | 2016-07-13 20:26:45 | [diff] [blame] | 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; |
piman | ea3d83f | 2017-03-16 23:50:01 | [diff] [blame] | 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; |
piman | aa595d83 | 2016-07-13 20:26:45 | [diff] [blame] | 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; |
piman | 0e25755 | 2016-09-02 22:33:18 | [diff] [blame] | 73 | |
| 74 | private: |
Jonathan Backer | c7933dd | 2019-03-14 19:22:00 | [diff] [blame] | 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. |
| 78 | void GenHelper(GLsizei count, GLuint* objects) { |
| 79 | for (GLsizei i = 0; i < count; ++i) |
| 80 | objects[i] = next_id_++; |
| 81 | } |
| 82 | |
piman | 0e25755 | 2016-09-02 22:33:18 | [diff] [blame] | 83 | std::string version_; |
| 84 | std::string extensions_; |
Jonathan Backer | c7933dd | 2019-03-14 19:22:00 | [diff] [blame] | 85 | GLuint next_id_ = 1; |
piman | 0e25755 | 2016-09-02 22:33:18 | [diff] [blame] | 86 | |
| 87 | DISALLOW_COPY_AND_ASSIGN(GLStubApi); |
piman | aa595d83 | 2016-07-13 20:26:45 | [diff] [blame] | 88 | }; |
| 89 | |
| 90 | } // namespace gl |
| 91 | |
| 92 | #endif // UI_GL_GL_STUB_API_H_ |