gl_stub_api.cc 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  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. #include "ui/gl/gl_stub_api.h"
  5. namespace gl {
  6. GLStubApi::GLStubApi() {}
  7. GLStubApi::~GLStubApi() = default;
  8. GLenum GLStubApi::glCheckFramebufferStatusEXTFn(GLenum target) {
  9. return GL_FRAMEBUFFER_COMPLETE;
  10. }
  11. GLuint GLStubApi::glCreateProgramFn(void) {
  12. return 1;
  13. }
  14. GLuint GLStubApi::glCreateShaderFn(GLenum type) {
  15. return 2;
  16. }
  17. GLsync GLStubApi::glFenceSyncFn(GLenum condition, GLbitfield flags) {
  18. return reinterpret_cast<GLsync>(1);
  19. }
  20. void GLStubApi::glGenBuffersARBFn(GLsizei n, GLuint* buffers) {
  21. GenHelper(n, buffers);
  22. }
  23. void GLStubApi::glGenerateMipmapEXTFn(GLenum target) {}
  24. void GLStubApi::glGenFencesAPPLEFn(GLsizei n, GLuint* fences) {
  25. GenHelper(n, fences);
  26. }
  27. void GLStubApi::glGenFencesNVFn(GLsizei n, GLuint* fences) {
  28. GenHelper(n, fences);
  29. }
  30. void GLStubApi::glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) {
  31. GenHelper(n, framebuffers);
  32. }
  33. GLuint GLStubApi::glGenPathsNVFn(GLsizei range) {
  34. return 1;
  35. }
  36. void GLStubApi::glGenQueriesFn(GLsizei n, GLuint* ids) {
  37. GenHelper(n, ids);
  38. }
  39. void GLStubApi::glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) {
  40. GenHelper(n, renderbuffers);
  41. }
  42. void GLStubApi::glGenSamplersFn(GLsizei n, GLuint* samplers) {
  43. GenHelper(n, samplers);
  44. }
  45. void GLStubApi::glGenTexturesFn(GLsizei n, GLuint* textures) {
  46. GenHelper(n, textures);
  47. }
  48. void GLStubApi::glGenTransformFeedbacksFn(GLsizei n, GLuint* ids) {
  49. GenHelper(n, ids);
  50. }
  51. void GLStubApi::glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) {
  52. GenHelper(n, arrays);
  53. }
  54. void GLStubApi::glGetIntegervFn(GLenum pname, GLint* params) {
  55. // We need some values to be large enough to initialize ContextGroup.
  56. switch (pname) {
  57. default:
  58. *params = 1;
  59. break;
  60. case GL_MAX_RENDERBUFFER_SIZE:
  61. *params = 512;
  62. break;
  63. case GL_MAX_SAMPLES:
  64. *params = 4;
  65. break;
  66. case GL_MAX_COLOR_ATTACHMENTS_EXT:
  67. *params = 4;
  68. break;
  69. case GL_MAX_DRAW_BUFFERS_ARB:
  70. *params = 4;
  71. break;
  72. case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
  73. *params = 4;
  74. break;
  75. case GL_MAX_UNIFORM_BUFFER_BINDINGS:
  76. *params = 24;
  77. break;
  78. case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:
  79. *params = 256;
  80. break;
  81. case GL_MAX_VERTEX_ATTRIBS:
  82. *params = 8;
  83. break;
  84. case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
  85. *params = 8;
  86. break;
  87. case GL_MAX_TEXTURE_IMAGE_UNITS:
  88. *params = 8;
  89. break;
  90. case GL_MAX_TEXTURE_SIZE:
  91. case GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB:
  92. *params = 2048;
  93. break;
  94. case GL_MAX_CUBE_MAP_TEXTURE_SIZE:
  95. *params = 2048;
  96. break;
  97. case GL_MAX_3D_TEXTURE_SIZE:
  98. *params = 256;
  99. break;
  100. case GL_MAX_ARRAY_TEXTURE_LAYERS:
  101. *params = 256;
  102. break;
  103. case GL_MAX_VARYING_VECTORS:
  104. *params = 8;
  105. break;
  106. case GL_MAX_VARYING_FLOATS:
  107. *params = 32;
  108. break;
  109. case GL_MAX_VERTEX_UNIFORM_VECTORS:
  110. *params = 128;
  111. break;
  112. case GL_MAX_VERTEX_UNIFORM_COMPONENTS:
  113. *params = 512;
  114. break;
  115. case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
  116. *params = 16;
  117. break;
  118. case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
  119. *params = 64;
  120. break;
  121. case GL_MAX_VERTEX_OUTPUT_COMPONENTS:
  122. *params = 64;
  123. break;
  124. case GL_MAX_FRAGMENT_INPUT_COMPONENTS:
  125. *params = 60;
  126. break;
  127. case GL_MAX_PROGRAM_TEXEL_OFFSET:
  128. *params = 7;
  129. break;
  130. case GL_MIN_PROGRAM_TEXEL_OFFSET:
  131. *params = -8;
  132. break;
  133. case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
  134. *params = 32;
  135. break;
  136. case GL_MAX_VIEWPORT_DIMS:
  137. *params = 1024 << 8;
  138. break;
  139. case GL_ALPHA_BITS:
  140. *params = 8;
  141. break;
  142. case GL_DEPTH_BITS:
  143. *params = 24;
  144. break;
  145. case GL_STENCIL_BITS:
  146. *params = 8;
  147. break;
  148. case GL_TEXTURE_BINDING_2D:
  149. *params = 1;
  150. break;
  151. case GL_FRAMEBUFFER_BINDING:
  152. *params = 1;
  153. break;
  154. case GL_IMPLEMENTATION_COLOR_READ_TYPE:
  155. *params = GL_UNSIGNED_BYTE;
  156. break;
  157. case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
  158. *params = GL_RGBA;
  159. break;
  160. }
  161. }
  162. void GLStubApi::glGetProgramivFn(GLuint program, GLenum pname, GLint* params) {
  163. switch (pname) {
  164. case GL_LINK_STATUS:
  165. *params = GL_TRUE;
  166. break;
  167. case GL_VALIDATE_STATUS:
  168. *params = GL_TRUE;
  169. break;
  170. default:
  171. break;
  172. }
  173. }
  174. void GLStubApi::glGetQueryObjecti64vFn(GLuint id,
  175. GLenum pname,
  176. GLint64* params) {
  177. switch (pname) {
  178. case GL_QUERY_RESULT_AVAILABLE:
  179. *params = GL_TRUE;
  180. break;
  181. default:
  182. break;
  183. }
  184. }
  185. void GLStubApi::glGetQueryObjectivFn(GLuint id, GLenum pname, GLint* params) {
  186. switch (pname) {
  187. case GL_QUERY_RESULT_AVAILABLE:
  188. *params = GL_TRUE;
  189. break;
  190. default:
  191. break;
  192. }
  193. }
  194. void GLStubApi::glGetQueryObjectui64vFn(GLuint id,
  195. GLenum pname,
  196. GLuint64* params) {
  197. switch (pname) {
  198. case GL_QUERY_RESULT_AVAILABLE:
  199. *params = GL_TRUE;
  200. break;
  201. default:
  202. break;
  203. }
  204. }
  205. void GLStubApi::glGetQueryObjectuivFn(GLuint id, GLenum pname, GLuint* params) {
  206. switch (pname) {
  207. case GL_QUERY_RESULT_AVAILABLE:
  208. *params = GL_TRUE;
  209. break;
  210. default:
  211. break;
  212. }
  213. }
  214. void GLStubApi::glGetShaderivFn(GLuint shader, GLenum pname, GLint* params) {
  215. switch (pname) {
  216. case GL_COMPILE_STATUS:
  217. *params = GL_TRUE;
  218. break;
  219. default:
  220. break;
  221. }
  222. }
  223. const GLubyte* GLStubApi::glGetStringFn(GLenum name) {
  224. switch (name) {
  225. case GL_RENDERER:
  226. default:
  227. return reinterpret_cast<const GLubyte*>("");
  228. case GL_VERSION:
  229. return reinterpret_cast<const GLubyte*>(version_.c_str());
  230. case GL_EXTENSIONS:
  231. return reinterpret_cast<const GLubyte*>(extensions_.c_str());
  232. }
  233. }
  234. const GLubyte* GLStubApi::glGetStringiFn(GLenum name, GLuint index) {
  235. return reinterpret_cast<const GLubyte*>("");
  236. }
  237. GLboolean GLStubApi::glIsBufferFn(GLuint buffer) {
  238. return GL_TRUE;
  239. }
  240. GLboolean GLStubApi::glIsEnabledFn(GLenum cap) {
  241. return GL_TRUE;
  242. }
  243. GLboolean GLStubApi::glIsFenceAPPLEFn(GLuint fence) {
  244. return GL_TRUE;
  245. }
  246. GLboolean GLStubApi::glIsFenceNVFn(GLuint fence) {
  247. return GL_TRUE;
  248. }
  249. GLboolean GLStubApi::glIsFramebufferEXTFn(GLuint framebuffer) {
  250. return GL_TRUE;
  251. }
  252. GLboolean GLStubApi::glIsPathNVFn(GLuint path) {
  253. return GL_TRUE;
  254. }
  255. GLboolean GLStubApi::glIsProgramFn(GLuint program) {
  256. return GL_TRUE;
  257. }
  258. GLboolean GLStubApi::glIsQueryFn(GLuint query) {
  259. return GL_TRUE;
  260. }
  261. GLboolean GLStubApi::glIsRenderbufferEXTFn(GLuint renderbuffer) {
  262. return GL_TRUE;
  263. }
  264. GLboolean GLStubApi::glIsSamplerFn(GLuint sampler) {
  265. return GL_TRUE;
  266. }
  267. GLboolean GLStubApi::glIsShaderFn(GLuint shader) {
  268. return GL_TRUE;
  269. }
  270. GLboolean GLStubApi::glIsSyncFn(GLsync sync) {
  271. return GL_TRUE;
  272. }
  273. GLboolean GLStubApi::glIsTextureFn(GLuint texture) {
  274. return GL_TRUE;
  275. }
  276. GLboolean GLStubApi::glIsTransformFeedbackFn(GLuint id) {
  277. return GL_TRUE;
  278. }
  279. GLboolean GLStubApi::glIsVertexArrayOESFn(GLuint array) {
  280. return GL_TRUE;
  281. }
  282. GLboolean GLStubApi::glTestFenceAPPLEFn(GLuint fence) {
  283. return GL_TRUE;
  284. }
  285. GLboolean GLStubApi::glTestFenceNVFn(GLuint fence) {
  286. return GL_TRUE;
  287. }
  288. GLboolean GLStubApi::glUnmapBufferFn(GLenum target) {
  289. return GL_TRUE;
  290. }
  291. } // namespace gl