gl_stub_api.h 3.8 KB

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