PageRenderTime 72ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 3ms

/ui/gl/gl_bindings_autogen_gl.cc

https://gitlab.com/hkratz/chromium
C++ | 11784 lines | 10474 code | 1301 blank | 9 comment | 834 complexity | 6392ba2b469dabcbd5013216828f5520 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. // Copyright 2014 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. // This file is auto-generated from
  6. // ui/gl/generate_bindings.py
  7. // It's formatted by clang-format using chromium coding style:
  8. // clang-format -i -style=chromium filename
  9. // DO NOT EDIT!
  10. #include <string>
  11. #include "base/trace_event/trace_event.h"
  12. #include "ui/gl/gl_bindings.h"
  13. #include "ui/gl/gl_context.h"
  14. #include "ui/gl/gl_enums.h"
  15. #include "ui/gl/gl_gl_api_implementation.h"
  16. #include "ui/gl/gl_implementation.h"
  17. #include "ui/gl/gl_version_info.h"
  18. namespace gfx {
  19. static bool g_debugBindingsInitialized;
  20. DriverGL g_driver_gl;
  21. void DriverGL::InitializeStaticBindings() {
  22. fn.glActiveTextureFn = reinterpret_cast<glActiveTextureProc>(
  23. GetGLProcAddress("glActiveTexture"));
  24. fn.glApplyFramebufferAttachmentCMAAINTELFn = 0;
  25. fn.glAttachShaderFn =
  26. reinterpret_cast<glAttachShaderProc>(GetGLProcAddress("glAttachShader"));
  27. fn.glBeginQueryFn = 0;
  28. fn.glBeginTransformFeedbackFn = 0;
  29. fn.glBindAttribLocationFn = reinterpret_cast<glBindAttribLocationProc>(
  30. GetGLProcAddress("glBindAttribLocation"));
  31. fn.glBindBufferFn =
  32. reinterpret_cast<glBindBufferProc>(GetGLProcAddress("glBindBuffer"));
  33. fn.glBindBufferBaseFn = 0;
  34. fn.glBindBufferRangeFn = 0;
  35. fn.glBindFragDataLocationFn = 0;
  36. fn.glBindFragDataLocationIndexedFn = 0;
  37. fn.glBindFramebufferEXTFn = 0;
  38. fn.glBindImageTextureEXTFn = 0;
  39. fn.glBindRenderbufferEXTFn = 0;
  40. fn.glBindSamplerFn = 0;
  41. fn.glBindTextureFn =
  42. reinterpret_cast<glBindTextureProc>(GetGLProcAddress("glBindTexture"));
  43. fn.glBindTransformFeedbackFn = 0;
  44. fn.glBindVertexArrayOESFn = 0;
  45. fn.glBlendBarrierKHRFn = 0;
  46. fn.glBlendColorFn =
  47. reinterpret_cast<glBlendColorProc>(GetGLProcAddress("glBlendColor"));
  48. fn.glBlendEquationFn = reinterpret_cast<glBlendEquationProc>(
  49. GetGLProcAddress("glBlendEquation"));
  50. fn.glBlendEquationSeparateFn = reinterpret_cast<glBlendEquationSeparateProc>(
  51. GetGLProcAddress("glBlendEquationSeparate"));
  52. fn.glBlendFuncFn =
  53. reinterpret_cast<glBlendFuncProc>(GetGLProcAddress("glBlendFunc"));
  54. fn.glBlendFuncSeparateFn = reinterpret_cast<glBlendFuncSeparateProc>(
  55. GetGLProcAddress("glBlendFuncSeparate"));
  56. fn.glBlitFramebufferFn = 0;
  57. fn.glBlitFramebufferANGLEFn = 0;
  58. fn.glBlitFramebufferEXTFn = 0;
  59. fn.glBufferDataFn =
  60. reinterpret_cast<glBufferDataProc>(GetGLProcAddress("glBufferData"));
  61. fn.glBufferSubDataFn = reinterpret_cast<glBufferSubDataProc>(
  62. GetGLProcAddress("glBufferSubData"));
  63. fn.glCheckFramebufferStatusEXTFn = 0;
  64. fn.glClearFn = reinterpret_cast<glClearProc>(GetGLProcAddress("glClear"));
  65. fn.glClearBufferfiFn = 0;
  66. fn.glClearBufferfvFn = 0;
  67. fn.glClearBufferivFn = 0;
  68. fn.glClearBufferuivFn = 0;
  69. fn.glClearColorFn =
  70. reinterpret_cast<glClearColorProc>(GetGLProcAddress("glClearColor"));
  71. fn.glClearDepthFn =
  72. reinterpret_cast<glClearDepthProc>(GetGLProcAddress("glClearDepth"));
  73. fn.glClearDepthfFn = 0;
  74. fn.glClearStencilFn =
  75. reinterpret_cast<glClearStencilProc>(GetGLProcAddress("glClearStencil"));
  76. fn.glClientWaitSyncFn = 0;
  77. fn.glColorMaskFn =
  78. reinterpret_cast<glColorMaskProc>(GetGLProcAddress("glColorMask"));
  79. fn.glCompileShaderFn = reinterpret_cast<glCompileShaderProc>(
  80. GetGLProcAddress("glCompileShader"));
  81. fn.glCompressedTexImage2DFn = reinterpret_cast<glCompressedTexImage2DProc>(
  82. GetGLProcAddress("glCompressedTexImage2D"));
  83. fn.glCompressedTexImage3DFn = 0;
  84. fn.glCompressedTexSubImage2DFn =
  85. reinterpret_cast<glCompressedTexSubImage2DProc>(
  86. GetGLProcAddress("glCompressedTexSubImage2D"));
  87. fn.glCompressedTexSubImage3DFn = 0;
  88. fn.glCopyBufferSubDataFn = 0;
  89. fn.glCopyTexImage2DFn = reinterpret_cast<glCopyTexImage2DProc>(
  90. GetGLProcAddress("glCopyTexImage2D"));
  91. fn.glCopyTexSubImage2DFn = reinterpret_cast<glCopyTexSubImage2DProc>(
  92. GetGLProcAddress("glCopyTexSubImage2D"));
  93. fn.glCopyTexSubImage3DFn = 0;
  94. fn.glCoverageModulationNVFn = 0;
  95. fn.glCoverFillPathInstancedNVFn = 0;
  96. fn.glCoverFillPathNVFn = 0;
  97. fn.glCoverStrokePathInstancedNVFn = 0;
  98. fn.glCoverStrokePathNVFn = 0;
  99. fn.glCreateProgramFn = reinterpret_cast<glCreateProgramProc>(
  100. GetGLProcAddress("glCreateProgram"));
  101. fn.glCreateShaderFn =
  102. reinterpret_cast<glCreateShaderProc>(GetGLProcAddress("glCreateShader"));
  103. fn.glCullFaceFn =
  104. reinterpret_cast<glCullFaceProc>(GetGLProcAddress("glCullFace"));
  105. fn.glDeleteBuffersARBFn = reinterpret_cast<glDeleteBuffersARBProc>(
  106. GetGLProcAddress("glDeleteBuffers"));
  107. fn.glDeleteFencesAPPLEFn = 0;
  108. fn.glDeleteFencesNVFn = 0;
  109. fn.glDeleteFramebuffersEXTFn = 0;
  110. fn.glDeletePathsNVFn = 0;
  111. fn.glDeleteProgramFn = reinterpret_cast<glDeleteProgramProc>(
  112. GetGLProcAddress("glDeleteProgram"));
  113. fn.glDeleteQueriesFn = 0;
  114. fn.glDeleteRenderbuffersEXTFn = 0;
  115. fn.glDeleteSamplersFn = 0;
  116. fn.glDeleteShaderFn =
  117. reinterpret_cast<glDeleteShaderProc>(GetGLProcAddress("glDeleteShader"));
  118. fn.glDeleteSyncFn = 0;
  119. fn.glDeleteTexturesFn = reinterpret_cast<glDeleteTexturesProc>(
  120. GetGLProcAddress("glDeleteTextures"));
  121. fn.glDeleteTransformFeedbacksFn = 0;
  122. fn.glDeleteVertexArraysOESFn = 0;
  123. fn.glDepthFuncFn =
  124. reinterpret_cast<glDepthFuncProc>(GetGLProcAddress("glDepthFunc"));
  125. fn.glDepthMaskFn =
  126. reinterpret_cast<glDepthMaskProc>(GetGLProcAddress("glDepthMask"));
  127. fn.glDepthRangeFn =
  128. reinterpret_cast<glDepthRangeProc>(GetGLProcAddress("glDepthRange"));
  129. fn.glDepthRangefFn = 0;
  130. fn.glDetachShaderFn =
  131. reinterpret_cast<glDetachShaderProc>(GetGLProcAddress("glDetachShader"));
  132. fn.glDisableFn =
  133. reinterpret_cast<glDisableProc>(GetGLProcAddress("glDisable"));
  134. fn.glDisableVertexAttribArrayFn =
  135. reinterpret_cast<glDisableVertexAttribArrayProc>(
  136. GetGLProcAddress("glDisableVertexAttribArray"));
  137. fn.glDiscardFramebufferEXTFn = 0;
  138. fn.glDrawArraysFn =
  139. reinterpret_cast<glDrawArraysProc>(GetGLProcAddress("glDrawArrays"));
  140. fn.glDrawArraysInstancedANGLEFn = 0;
  141. fn.glDrawBufferFn = 0;
  142. fn.glDrawBuffersARBFn = 0;
  143. fn.glDrawElementsFn =
  144. reinterpret_cast<glDrawElementsProc>(GetGLProcAddress("glDrawElements"));
  145. fn.glDrawElementsInstancedANGLEFn = 0;
  146. fn.glDrawRangeElementsFn = 0;
  147. fn.glEGLImageTargetRenderbufferStorageOESFn = 0;
  148. fn.glEGLImageTargetTexture2DOESFn = 0;
  149. fn.glEnableFn = reinterpret_cast<glEnableProc>(GetGLProcAddress("glEnable"));
  150. fn.glEnableVertexAttribArrayFn =
  151. reinterpret_cast<glEnableVertexAttribArrayProc>(
  152. GetGLProcAddress("glEnableVertexAttribArray"));
  153. fn.glEndQueryFn = 0;
  154. fn.glEndTransformFeedbackFn = 0;
  155. fn.glFenceSyncFn = 0;
  156. fn.glFinishFn = reinterpret_cast<glFinishProc>(GetGLProcAddress("glFinish"));
  157. fn.glFinishFenceAPPLEFn = 0;
  158. fn.glFinishFenceNVFn = 0;
  159. fn.glFlushFn = reinterpret_cast<glFlushProc>(GetGLProcAddress("glFlush"));
  160. fn.glFlushMappedBufferRangeFn = 0;
  161. fn.glFramebufferRenderbufferEXTFn = 0;
  162. fn.glFramebufferTexture2DEXTFn = 0;
  163. fn.glFramebufferTexture2DMultisampleEXTFn = 0;
  164. fn.glFramebufferTexture2DMultisampleIMGFn = 0;
  165. fn.glFramebufferTextureLayerFn = 0;
  166. fn.glFrontFaceFn =
  167. reinterpret_cast<glFrontFaceProc>(GetGLProcAddress("glFrontFace"));
  168. fn.glGenBuffersARBFn =
  169. reinterpret_cast<glGenBuffersARBProc>(GetGLProcAddress("glGenBuffers"));
  170. fn.glGenerateMipmapEXTFn = 0;
  171. fn.glGenFencesAPPLEFn = 0;
  172. fn.glGenFencesNVFn = 0;
  173. fn.glGenFramebuffersEXTFn = 0;
  174. fn.glGenPathsNVFn = 0;
  175. fn.glGenQueriesFn = 0;
  176. fn.glGenRenderbuffersEXTFn = 0;
  177. fn.glGenSamplersFn = 0;
  178. fn.glGenTexturesFn =
  179. reinterpret_cast<glGenTexturesProc>(GetGLProcAddress("glGenTextures"));
  180. fn.glGenTransformFeedbacksFn = 0;
  181. fn.glGenVertexArraysOESFn = 0;
  182. fn.glGetActiveAttribFn = reinterpret_cast<glGetActiveAttribProc>(
  183. GetGLProcAddress("glGetActiveAttrib"));
  184. fn.glGetActiveUniformFn = reinterpret_cast<glGetActiveUniformProc>(
  185. GetGLProcAddress("glGetActiveUniform"));
  186. fn.glGetActiveUniformBlockivFn = 0;
  187. fn.glGetActiveUniformBlockNameFn = 0;
  188. fn.glGetActiveUniformsivFn = 0;
  189. fn.glGetAttachedShadersFn = reinterpret_cast<glGetAttachedShadersProc>(
  190. GetGLProcAddress("glGetAttachedShaders"));
  191. fn.glGetAttribLocationFn = reinterpret_cast<glGetAttribLocationProc>(
  192. GetGLProcAddress("glGetAttribLocation"));
  193. fn.glGetBooleanvFn =
  194. reinterpret_cast<glGetBooleanvProc>(GetGLProcAddress("glGetBooleanv"));
  195. fn.glGetBufferParameterivFn = reinterpret_cast<glGetBufferParameterivProc>(
  196. GetGLProcAddress("glGetBufferParameteriv"));
  197. fn.glGetErrorFn =
  198. reinterpret_cast<glGetErrorProc>(GetGLProcAddress("glGetError"));
  199. fn.glGetFenceivNVFn = 0;
  200. fn.glGetFloatvFn =
  201. reinterpret_cast<glGetFloatvProc>(GetGLProcAddress("glGetFloatv"));
  202. fn.glGetFragDataIndexFn = 0;
  203. fn.glGetFragDataLocationFn = 0;
  204. fn.glGetFramebufferAttachmentParameterivEXTFn = 0;
  205. fn.glGetGraphicsResetStatusARBFn = 0;
  206. fn.glGetInteger64i_vFn = 0;
  207. fn.glGetInteger64vFn = 0;
  208. fn.glGetIntegeri_vFn = 0;
  209. fn.glGetIntegervFn =
  210. reinterpret_cast<glGetIntegervProc>(GetGLProcAddress("glGetIntegerv"));
  211. fn.glGetInternalformativFn = 0;
  212. fn.glGetProgramBinaryFn = 0;
  213. fn.glGetProgramInfoLogFn = reinterpret_cast<glGetProgramInfoLogProc>(
  214. GetGLProcAddress("glGetProgramInfoLog"));
  215. fn.glGetProgramInterfaceivFn = 0;
  216. fn.glGetProgramivFn =
  217. reinterpret_cast<glGetProgramivProc>(GetGLProcAddress("glGetProgramiv"));
  218. fn.glGetProgramResourceivFn = 0;
  219. fn.glGetProgramResourceLocationFn = 0;
  220. fn.glGetProgramResourceNameFn = 0;
  221. fn.glGetQueryivFn = 0;
  222. fn.glGetQueryObjecti64vFn = 0;
  223. fn.glGetQueryObjectivFn = 0;
  224. fn.glGetQueryObjectui64vFn = 0;
  225. fn.glGetQueryObjectuivFn = 0;
  226. fn.glGetRenderbufferParameterivEXTFn = 0;
  227. fn.glGetSamplerParameterfvFn = 0;
  228. fn.glGetSamplerParameterivFn = 0;
  229. fn.glGetShaderInfoLogFn = reinterpret_cast<glGetShaderInfoLogProc>(
  230. GetGLProcAddress("glGetShaderInfoLog"));
  231. fn.glGetShaderivFn =
  232. reinterpret_cast<glGetShaderivProc>(GetGLProcAddress("glGetShaderiv"));
  233. fn.glGetShaderPrecisionFormatFn = 0;
  234. fn.glGetShaderSourceFn = reinterpret_cast<glGetShaderSourceProc>(
  235. GetGLProcAddress("glGetShaderSource"));
  236. fn.glGetStringFn =
  237. reinterpret_cast<glGetStringProc>(GetGLProcAddress("glGetString"));
  238. fn.glGetStringiFn =
  239. reinterpret_cast<glGetStringiProc>(GetGLProcAddress("glGetStringi"));
  240. fn.glGetSyncivFn = 0;
  241. fn.glGetTexLevelParameterfvFn = 0;
  242. fn.glGetTexLevelParameterivFn = 0;
  243. fn.glGetTexParameterfvFn = reinterpret_cast<glGetTexParameterfvProc>(
  244. GetGLProcAddress("glGetTexParameterfv"));
  245. fn.glGetTexParameterivFn = reinterpret_cast<glGetTexParameterivProc>(
  246. GetGLProcAddress("glGetTexParameteriv"));
  247. fn.glGetTransformFeedbackVaryingFn = 0;
  248. fn.glGetTranslatedShaderSourceANGLEFn = 0;
  249. fn.glGetUniformBlockIndexFn = 0;
  250. fn.glGetUniformfvFn =
  251. reinterpret_cast<glGetUniformfvProc>(GetGLProcAddress("glGetUniformfv"));
  252. fn.glGetUniformIndicesFn = 0;
  253. fn.glGetUniformivFn =
  254. reinterpret_cast<glGetUniformivProc>(GetGLProcAddress("glGetUniformiv"));
  255. fn.glGetUniformLocationFn = reinterpret_cast<glGetUniformLocationProc>(
  256. GetGLProcAddress("glGetUniformLocation"));
  257. fn.glGetUniformuivFn = 0;
  258. fn.glGetVertexAttribfvFn = reinterpret_cast<glGetVertexAttribfvProc>(
  259. GetGLProcAddress("glGetVertexAttribfv"));
  260. fn.glGetVertexAttribivFn = reinterpret_cast<glGetVertexAttribivProc>(
  261. GetGLProcAddress("glGetVertexAttribiv"));
  262. fn.glGetVertexAttribPointervFn =
  263. reinterpret_cast<glGetVertexAttribPointervProc>(
  264. GetGLProcAddress("glGetVertexAttribPointerv"));
  265. fn.glHintFn = reinterpret_cast<glHintProc>(GetGLProcAddress("glHint"));
  266. fn.glInsertEventMarkerEXTFn = 0;
  267. fn.glInvalidateFramebufferFn = 0;
  268. fn.glInvalidateSubFramebufferFn = 0;
  269. fn.glIsBufferFn =
  270. reinterpret_cast<glIsBufferProc>(GetGLProcAddress("glIsBuffer"));
  271. fn.glIsEnabledFn =
  272. reinterpret_cast<glIsEnabledProc>(GetGLProcAddress("glIsEnabled"));
  273. fn.glIsFenceAPPLEFn = 0;
  274. fn.glIsFenceNVFn = 0;
  275. fn.glIsFramebufferEXTFn = 0;
  276. fn.glIsPathNVFn = 0;
  277. fn.glIsProgramFn =
  278. reinterpret_cast<glIsProgramProc>(GetGLProcAddress("glIsProgram"));
  279. fn.glIsQueryFn = 0;
  280. fn.glIsRenderbufferEXTFn = 0;
  281. fn.glIsSamplerFn = 0;
  282. fn.glIsShaderFn =
  283. reinterpret_cast<glIsShaderProc>(GetGLProcAddress("glIsShader"));
  284. fn.glIsSyncFn = 0;
  285. fn.glIsTextureFn =
  286. reinterpret_cast<glIsTextureProc>(GetGLProcAddress("glIsTexture"));
  287. fn.glIsTransformFeedbackFn = 0;
  288. fn.glIsVertexArrayOESFn = 0;
  289. fn.glLineWidthFn =
  290. reinterpret_cast<glLineWidthProc>(GetGLProcAddress("glLineWidth"));
  291. fn.glLinkProgramFn =
  292. reinterpret_cast<glLinkProgramProc>(GetGLProcAddress("glLinkProgram"));
  293. fn.glMapBufferFn = 0;
  294. fn.glMapBufferRangeFn = 0;
  295. fn.glMatrixLoadfEXTFn = 0;
  296. fn.glMatrixLoadIdentityEXTFn = 0;
  297. fn.glMemoryBarrierEXTFn = 0;
  298. fn.glPathCommandsNVFn = 0;
  299. fn.glPathParameterfNVFn = 0;
  300. fn.glPathParameteriNVFn = 0;
  301. fn.glPathStencilFuncNVFn = 0;
  302. fn.glPauseTransformFeedbackFn = 0;
  303. fn.glPixelStoreiFn =
  304. reinterpret_cast<glPixelStoreiProc>(GetGLProcAddress("glPixelStorei"));
  305. fn.glPointParameteriFn = 0;
  306. fn.glPolygonOffsetFn = reinterpret_cast<glPolygonOffsetProc>(
  307. GetGLProcAddress("glPolygonOffset"));
  308. fn.glPopGroupMarkerEXTFn = 0;
  309. fn.glProgramBinaryFn = 0;
  310. fn.glProgramParameteriFn = 0;
  311. fn.glProgramPathFragmentInputGenNVFn = 0;
  312. fn.glPushGroupMarkerEXTFn = 0;
  313. fn.glQueryCounterFn = 0;
  314. fn.glReadBufferFn = 0;
  315. fn.glReadPixelsFn =
  316. reinterpret_cast<glReadPixelsProc>(GetGLProcAddress("glReadPixels"));
  317. fn.glReleaseShaderCompilerFn = 0;
  318. fn.glRenderbufferStorageEXTFn = 0;
  319. fn.glRenderbufferStorageMultisampleFn = 0;
  320. fn.glRenderbufferStorageMultisampleANGLEFn = 0;
  321. fn.glRenderbufferStorageMultisampleEXTFn = 0;
  322. fn.glRenderbufferStorageMultisampleIMGFn = 0;
  323. fn.glResumeTransformFeedbackFn = 0;
  324. fn.glSampleCoverageFn = reinterpret_cast<glSampleCoverageProc>(
  325. GetGLProcAddress("glSampleCoverage"));
  326. fn.glSamplerParameterfFn = 0;
  327. fn.glSamplerParameterfvFn = 0;
  328. fn.glSamplerParameteriFn = 0;
  329. fn.glSamplerParameterivFn = 0;
  330. fn.glScissorFn =
  331. reinterpret_cast<glScissorProc>(GetGLProcAddress("glScissor"));
  332. fn.glSetFenceAPPLEFn = 0;
  333. fn.glSetFenceNVFn = 0;
  334. fn.glShaderBinaryFn = 0;
  335. fn.glShaderSourceFn =
  336. reinterpret_cast<glShaderSourceProc>(GetGLProcAddress("glShaderSource"));
  337. fn.glStencilFillPathInstancedNVFn = 0;
  338. fn.glStencilFillPathNVFn = 0;
  339. fn.glStencilFuncFn =
  340. reinterpret_cast<glStencilFuncProc>(GetGLProcAddress("glStencilFunc"));
  341. fn.glStencilFuncSeparateFn = reinterpret_cast<glStencilFuncSeparateProc>(
  342. GetGLProcAddress("glStencilFuncSeparate"));
  343. fn.glStencilMaskFn =
  344. reinterpret_cast<glStencilMaskProc>(GetGLProcAddress("glStencilMask"));
  345. fn.glStencilMaskSeparateFn = reinterpret_cast<glStencilMaskSeparateProc>(
  346. GetGLProcAddress("glStencilMaskSeparate"));
  347. fn.glStencilOpFn =
  348. reinterpret_cast<glStencilOpProc>(GetGLProcAddress("glStencilOp"));
  349. fn.glStencilOpSeparateFn = reinterpret_cast<glStencilOpSeparateProc>(
  350. GetGLProcAddress("glStencilOpSeparate"));
  351. fn.glStencilStrokePathInstancedNVFn = 0;
  352. fn.glStencilStrokePathNVFn = 0;
  353. fn.glStencilThenCoverFillPathInstancedNVFn = 0;
  354. fn.glStencilThenCoverFillPathNVFn = 0;
  355. fn.glStencilThenCoverStrokePathInstancedNVFn = 0;
  356. fn.glStencilThenCoverStrokePathNVFn = 0;
  357. fn.glTestFenceAPPLEFn = 0;
  358. fn.glTestFenceNVFn = 0;
  359. fn.glTexImage2DFn =
  360. reinterpret_cast<glTexImage2DProc>(GetGLProcAddress("glTexImage2D"));
  361. fn.glTexImage3DFn = 0;
  362. fn.glTexParameterfFn = reinterpret_cast<glTexParameterfProc>(
  363. GetGLProcAddress("glTexParameterf"));
  364. fn.glTexParameterfvFn = reinterpret_cast<glTexParameterfvProc>(
  365. GetGLProcAddress("glTexParameterfv"));
  366. fn.glTexParameteriFn = reinterpret_cast<glTexParameteriProc>(
  367. GetGLProcAddress("glTexParameteri"));
  368. fn.glTexParameterivFn = reinterpret_cast<glTexParameterivProc>(
  369. GetGLProcAddress("glTexParameteriv"));
  370. fn.glTexStorage2DEXTFn = 0;
  371. fn.glTexStorage3DFn = 0;
  372. fn.glTexSubImage2DFn = reinterpret_cast<glTexSubImage2DProc>(
  373. GetGLProcAddress("glTexSubImage2D"));
  374. fn.glTexSubImage3DFn = 0;
  375. fn.glTransformFeedbackVaryingsFn = 0;
  376. fn.glUniform1fFn =
  377. reinterpret_cast<glUniform1fProc>(GetGLProcAddress("glUniform1f"));
  378. fn.glUniform1fvFn =
  379. reinterpret_cast<glUniform1fvProc>(GetGLProcAddress("glUniform1fv"));
  380. fn.glUniform1iFn =
  381. reinterpret_cast<glUniform1iProc>(GetGLProcAddress("glUniform1i"));
  382. fn.glUniform1ivFn =
  383. reinterpret_cast<glUniform1ivProc>(GetGLProcAddress("glUniform1iv"));
  384. fn.glUniform1uiFn = 0;
  385. fn.glUniform1uivFn = 0;
  386. fn.glUniform2fFn =
  387. reinterpret_cast<glUniform2fProc>(GetGLProcAddress("glUniform2f"));
  388. fn.glUniform2fvFn =
  389. reinterpret_cast<glUniform2fvProc>(GetGLProcAddress("glUniform2fv"));
  390. fn.glUniform2iFn =
  391. reinterpret_cast<glUniform2iProc>(GetGLProcAddress("glUniform2i"));
  392. fn.glUniform2ivFn =
  393. reinterpret_cast<glUniform2ivProc>(GetGLProcAddress("glUniform2iv"));
  394. fn.glUniform2uiFn = 0;
  395. fn.glUniform2uivFn = 0;
  396. fn.glUniform3fFn =
  397. reinterpret_cast<glUniform3fProc>(GetGLProcAddress("glUniform3f"));
  398. fn.glUniform3fvFn =
  399. reinterpret_cast<glUniform3fvProc>(GetGLProcAddress("glUniform3fv"));
  400. fn.glUniform3iFn =
  401. reinterpret_cast<glUniform3iProc>(GetGLProcAddress("glUniform3i"));
  402. fn.glUniform3ivFn =
  403. reinterpret_cast<glUniform3ivProc>(GetGLProcAddress("glUniform3iv"));
  404. fn.glUniform3uiFn = 0;
  405. fn.glUniform3uivFn = 0;
  406. fn.glUniform4fFn =
  407. reinterpret_cast<glUniform4fProc>(GetGLProcAddress("glUniform4f"));
  408. fn.glUniform4fvFn =
  409. reinterpret_cast<glUniform4fvProc>(GetGLProcAddress("glUniform4fv"));
  410. fn.glUniform4iFn =
  411. reinterpret_cast<glUniform4iProc>(GetGLProcAddress("glUniform4i"));
  412. fn.glUniform4ivFn =
  413. reinterpret_cast<glUniform4ivProc>(GetGLProcAddress("glUniform4iv"));
  414. fn.glUniform4uiFn = 0;
  415. fn.glUniform4uivFn = 0;
  416. fn.glUniformBlockBindingFn = 0;
  417. fn.glUniformMatrix2fvFn = reinterpret_cast<glUniformMatrix2fvProc>(
  418. GetGLProcAddress("glUniformMatrix2fv"));
  419. fn.glUniformMatrix2x3fvFn = 0;
  420. fn.glUniformMatrix2x4fvFn = 0;
  421. fn.glUniformMatrix3fvFn = reinterpret_cast<glUniformMatrix3fvProc>(
  422. GetGLProcAddress("glUniformMatrix3fv"));
  423. fn.glUniformMatrix3x2fvFn = 0;
  424. fn.glUniformMatrix3x4fvFn = 0;
  425. fn.glUniformMatrix4fvFn = reinterpret_cast<glUniformMatrix4fvProc>(
  426. GetGLProcAddress("glUniformMatrix4fv"));
  427. fn.glUniformMatrix4x2fvFn = 0;
  428. fn.glUniformMatrix4x3fvFn = 0;
  429. fn.glUnmapBufferFn = 0;
  430. fn.glUseProgramFn =
  431. reinterpret_cast<glUseProgramProc>(GetGLProcAddress("glUseProgram"));
  432. fn.glValidateProgramFn = reinterpret_cast<glValidateProgramProc>(
  433. GetGLProcAddress("glValidateProgram"));
  434. fn.glVertexAttrib1fFn = reinterpret_cast<glVertexAttrib1fProc>(
  435. GetGLProcAddress("glVertexAttrib1f"));
  436. fn.glVertexAttrib1fvFn = reinterpret_cast<glVertexAttrib1fvProc>(
  437. GetGLProcAddress("glVertexAttrib1fv"));
  438. fn.glVertexAttrib2fFn = reinterpret_cast<glVertexAttrib2fProc>(
  439. GetGLProcAddress("glVertexAttrib2f"));
  440. fn.glVertexAttrib2fvFn = reinterpret_cast<glVertexAttrib2fvProc>(
  441. GetGLProcAddress("glVertexAttrib2fv"));
  442. fn.glVertexAttrib3fFn = reinterpret_cast<glVertexAttrib3fProc>(
  443. GetGLProcAddress("glVertexAttrib3f"));
  444. fn.glVertexAttrib3fvFn = reinterpret_cast<glVertexAttrib3fvProc>(
  445. GetGLProcAddress("glVertexAttrib3fv"));
  446. fn.glVertexAttrib4fFn = reinterpret_cast<glVertexAttrib4fProc>(
  447. GetGLProcAddress("glVertexAttrib4f"));
  448. fn.glVertexAttrib4fvFn = reinterpret_cast<glVertexAttrib4fvProc>(
  449. GetGLProcAddress("glVertexAttrib4fv"));
  450. fn.glVertexAttribDivisorANGLEFn = 0;
  451. fn.glVertexAttribI4iFn = 0;
  452. fn.glVertexAttribI4ivFn = 0;
  453. fn.glVertexAttribI4uiFn = 0;
  454. fn.glVertexAttribI4uivFn = 0;
  455. fn.glVertexAttribIPointerFn = 0;
  456. fn.glVertexAttribPointerFn = reinterpret_cast<glVertexAttribPointerProc>(
  457. GetGLProcAddress("glVertexAttribPointer"));
  458. fn.glViewportFn =
  459. reinterpret_cast<glViewportProc>(GetGLProcAddress("glViewport"));
  460. fn.glWaitSyncFn = 0;
  461. }
  462. void DriverGL::InitializeDynamicBindings(GLContext* context) {
  463. DCHECK(context && context->IsCurrent(NULL));
  464. const GLVersionInfo* ver = context->GetVersionInfo();
  465. ALLOW_UNUSED_LOCAL(ver);
  466. std::string extensions = context->GetExtensions() + " ";
  467. ALLOW_UNUSED_LOCAL(extensions);
  468. ext.b_GL_ANGLE_framebuffer_blit =
  469. extensions.find("GL_ANGLE_framebuffer_blit ") != std::string::npos;
  470. ext.b_GL_ANGLE_framebuffer_multisample =
  471. extensions.find("GL_ANGLE_framebuffer_multisample ") != std::string::npos;
  472. ext.b_GL_ANGLE_instanced_arrays =
  473. extensions.find("GL_ANGLE_instanced_arrays ") != std::string::npos;
  474. ext.b_GL_ANGLE_translated_shader_source =
  475. extensions.find("GL_ANGLE_translated_shader_source ") !=
  476. std::string::npos;
  477. ext.b_GL_APPLE_fence =
  478. extensions.find("GL_APPLE_fence ") != std::string::npos;
  479. ext.b_GL_APPLE_vertex_array_object =
  480. extensions.find("GL_APPLE_vertex_array_object ") != std::string::npos;
  481. ext.b_GL_ARB_blend_func_extended =
  482. extensions.find("GL_ARB_blend_func_extended ") != std::string::npos;
  483. ext.b_GL_ARB_draw_buffers =
  484. extensions.find("GL_ARB_draw_buffers ") != std::string::npos;
  485. ext.b_GL_ARB_draw_instanced =
  486. extensions.find("GL_ARB_draw_instanced ") != std::string::npos;
  487. ext.b_GL_ARB_get_program_binary =
  488. extensions.find("GL_ARB_get_program_binary ") != std::string::npos;
  489. ext.b_GL_ARB_instanced_arrays =
  490. extensions.find("GL_ARB_instanced_arrays ") != std::string::npos;
  491. ext.b_GL_ARB_map_buffer_range =
  492. extensions.find("GL_ARB_map_buffer_range ") != std::string::npos;
  493. ext.b_GL_ARB_occlusion_query =
  494. extensions.find("GL_ARB_occlusion_query ") != std::string::npos;
  495. ext.b_GL_ARB_program_interface_query =
  496. extensions.find("GL_ARB_program_interface_query ") != std::string::npos;
  497. ext.b_GL_ARB_robustness =
  498. extensions.find("GL_ARB_robustness ") != std::string::npos;
  499. ext.b_GL_ARB_shader_image_load_store =
  500. extensions.find("GL_ARB_shader_image_load_store ") != std::string::npos;
  501. ext.b_GL_ARB_sync = extensions.find("GL_ARB_sync ") != std::string::npos;
  502. ext.b_GL_ARB_texture_storage =
  503. extensions.find("GL_ARB_texture_storage ") != std::string::npos;
  504. ext.b_GL_ARB_timer_query =
  505. extensions.find("GL_ARB_timer_query ") != std::string::npos;
  506. ext.b_GL_ARB_vertex_array_object =
  507. extensions.find("GL_ARB_vertex_array_object ") != std::string::npos;
  508. ext.b_GL_CHROMIUM_gles_depth_binding_hack =
  509. extensions.find("GL_CHROMIUM_gles_depth_binding_hack ") !=
  510. std::string::npos;
  511. ext.b_GL_CHROMIUM_glgetstringi_hack =
  512. extensions.find("GL_CHROMIUM_glgetstringi_hack ") != std::string::npos;
  513. ext.b_GL_EXT_blend_func_extended =
  514. extensions.find("GL_EXT_blend_func_extended ") != std::string::npos;
  515. ext.b_GL_EXT_debug_marker =
  516. extensions.find("GL_EXT_debug_marker ") != std::string::npos;
  517. ext.b_GL_EXT_direct_state_access =
  518. extensions.find("GL_EXT_direct_state_access ") != std::string::npos;
  519. ext.b_GL_EXT_discard_framebuffer =
  520. extensions.find("GL_EXT_discard_framebuffer ") != std::string::npos;
  521. ext.b_GL_EXT_disjoint_timer_query =
  522. extensions.find("GL_EXT_disjoint_timer_query ") != std::string::npos;
  523. ext.b_GL_EXT_draw_buffers =
  524. extensions.find("GL_EXT_draw_buffers ") != std::string::npos;
  525. ext.b_GL_EXT_framebuffer_blit =
  526. extensions.find("GL_EXT_framebuffer_blit ") != std::string::npos;
  527. ext.b_GL_EXT_framebuffer_multisample =
  528. extensions.find("GL_EXT_framebuffer_multisample ") != std::string::npos;
  529. ext.b_GL_EXT_framebuffer_object =
  530. extensions.find("GL_EXT_framebuffer_object ") != std::string::npos;
  531. ext.b_GL_EXT_gpu_shader4 =
  532. extensions.find("GL_EXT_gpu_shader4 ") != std::string::npos;
  533. ext.b_GL_EXT_map_buffer_range =
  534. extensions.find("GL_EXT_map_buffer_range ") != std::string::npos;
  535. ext.b_GL_EXT_multisampled_render_to_texture =
  536. extensions.find("GL_EXT_multisampled_render_to_texture ") !=
  537. std::string::npos;
  538. ext.b_GL_EXT_occlusion_query_boolean =
  539. extensions.find("GL_EXT_occlusion_query_boolean ") != std::string::npos;
  540. ext.b_GL_EXT_robustness =
  541. extensions.find("GL_EXT_robustness ") != std::string::npos;
  542. ext.b_GL_EXT_shader_image_load_store =
  543. extensions.find("GL_EXT_shader_image_load_store ") != std::string::npos;
  544. ext.b_GL_EXT_texture_storage =
  545. extensions.find("GL_EXT_texture_storage ") != std::string::npos;
  546. ext.b_GL_EXT_timer_query =
  547. extensions.find("GL_EXT_timer_query ") != std::string::npos;
  548. ext.b_GL_IMG_multisampled_render_to_texture =
  549. extensions.find("GL_IMG_multisampled_render_to_texture ") !=
  550. std::string::npos;
  551. ext.b_GL_INTEL_framebuffer_CMAA =
  552. extensions.find("GL_INTEL_framebuffer_CMAA ") != std::string::npos;
  553. ext.b_GL_KHR_blend_equation_advanced =
  554. extensions.find("GL_KHR_blend_equation_advanced ") != std::string::npos;
  555. ext.b_GL_KHR_robustness =
  556. extensions.find("GL_KHR_robustness ") != std::string::npos;
  557. ext.b_GL_NV_blend_equation_advanced =
  558. extensions.find("GL_NV_blend_equation_advanced ") != std::string::npos;
  559. ext.b_GL_NV_fence = extensions.find("GL_NV_fence ") != std::string::npos;
  560. ext.b_GL_NV_framebuffer_mixed_samples =
  561. extensions.find("GL_NV_framebuffer_mixed_samples ") != std::string::npos;
  562. ext.b_GL_NV_path_rendering =
  563. extensions.find("GL_NV_path_rendering ") != std::string::npos;
  564. ext.b_GL_OES_EGL_image =
  565. extensions.find("GL_OES_EGL_image ") != std::string::npos;
  566. ext.b_GL_OES_get_program_binary =
  567. extensions.find("GL_OES_get_program_binary ") != std::string::npos;
  568. ext.b_GL_OES_mapbuffer =
  569. extensions.find("GL_OES_mapbuffer ") != std::string::npos;
  570. ext.b_GL_OES_vertex_array_object =
  571. extensions.find("GL_OES_vertex_array_object ") != std::string::npos;
  572. debug_fn.glApplyFramebufferAttachmentCMAAINTELFn = 0;
  573. if (ext.b_GL_INTEL_framebuffer_CMAA) {
  574. fn.glApplyFramebufferAttachmentCMAAINTELFn =
  575. reinterpret_cast<glApplyFramebufferAttachmentCMAAINTELProc>(
  576. GetGLProcAddress("glApplyFramebufferAttachmentCMAAINTEL"));
  577. }
  578. debug_fn.glBeginQueryFn = 0;
  579. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  580. fn.glBeginQueryFn =
  581. reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQuery"));
  582. } else if (ext.b_GL_ARB_occlusion_query) {
  583. fn.glBeginQueryFn =
  584. reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQueryARB"));
  585. } else if (ext.b_GL_EXT_disjoint_timer_query ||
  586. ext.b_GL_EXT_occlusion_query_boolean) {
  587. fn.glBeginQueryFn =
  588. reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQueryEXT"));
  589. }
  590. debug_fn.glBeginTransformFeedbackFn = 0;
  591. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  592. fn.glBeginTransformFeedbackFn =
  593. reinterpret_cast<glBeginTransformFeedbackProc>(
  594. GetGLProcAddress("glBeginTransformFeedback"));
  595. }
  596. debug_fn.glBindBufferBaseFn = 0;
  597. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  598. fn.glBindBufferBaseFn = reinterpret_cast<glBindBufferBaseProc>(
  599. GetGLProcAddress("glBindBufferBase"));
  600. }
  601. debug_fn.glBindBufferRangeFn = 0;
  602. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  603. fn.glBindBufferRangeFn = reinterpret_cast<glBindBufferRangeProc>(
  604. GetGLProcAddress("glBindBufferRange"));
  605. }
  606. debug_fn.glBindFragDataLocationFn = 0;
  607. if (ver->IsAtLeastGL(3u, 0u) || ext.b_GL_ARB_blend_func_extended) {
  608. fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
  609. GetGLProcAddress("glBindFragDataLocation"));
  610. } else if (ext.b_GL_EXT_gpu_shader4 || ext.b_GL_EXT_blend_func_extended) {
  611. fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
  612. GetGLProcAddress("glBindFragDataLocationEXT"));
  613. }
  614. debug_fn.glBindFragDataLocationIndexedFn = 0;
  615. if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_blend_func_extended) {
  616. fn.glBindFragDataLocationIndexedFn =
  617. reinterpret_cast<glBindFragDataLocationIndexedProc>(
  618. GetGLProcAddress("glBindFragDataLocationIndexed"));
  619. } else if (ext.b_GL_EXT_blend_func_extended) {
  620. fn.glBindFragDataLocationIndexedFn =
  621. reinterpret_cast<glBindFragDataLocationIndexedProc>(
  622. GetGLProcAddress("glBindFragDataLocationIndexedEXT"));
  623. }
  624. debug_fn.glBindFramebufferEXTFn = 0;
  625. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  626. fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>(
  627. GetGLProcAddress("glBindFramebuffer"));
  628. } else if (ext.b_GL_EXT_framebuffer_object) {
  629. fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>(
  630. GetGLProcAddress("glBindFramebufferEXT"));
  631. }
  632. debug_fn.glBindImageTextureEXTFn = 0;
  633. if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 1u) ||
  634. ext.b_GL_ARB_shader_image_load_store) {
  635. fn.glBindImageTextureEXTFn = reinterpret_cast<glBindImageTextureEXTProc>(
  636. GetGLProcAddress("glBindImageTexture"));
  637. } else if (ext.b_GL_EXT_shader_image_load_store) {
  638. fn.glBindImageTextureEXTFn = reinterpret_cast<glBindImageTextureEXTProc>(
  639. GetGLProcAddress("glBindImageTextureEXT"));
  640. }
  641. debug_fn.glBindRenderbufferEXTFn = 0;
  642. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  643. fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
  644. GetGLProcAddress("glBindRenderbuffer"));
  645. } else if (ext.b_GL_EXT_framebuffer_object) {
  646. fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
  647. GetGLProcAddress("glBindRenderbufferEXT"));
  648. }
  649. debug_fn.glBindSamplerFn = 0;
  650. if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
  651. fn.glBindSamplerFn =
  652. reinterpret_cast<glBindSamplerProc>(GetGLProcAddress("glBindSampler"));
  653. }
  654. debug_fn.glBindTransformFeedbackFn = 0;
  655. if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
  656. fn.glBindTransformFeedbackFn =
  657. reinterpret_cast<glBindTransformFeedbackProc>(
  658. GetGLProcAddress("glBindTransformFeedback"));
  659. }
  660. debug_fn.glBindVertexArrayOESFn = 0;
  661. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
  662. ext.b_GL_ARB_vertex_array_object) {
  663. fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
  664. GetGLProcAddress("glBindVertexArray"));
  665. } else if (ext.b_GL_OES_vertex_array_object) {
  666. fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
  667. GetGLProcAddress("glBindVertexArrayOES"));
  668. } else if (ext.b_GL_APPLE_vertex_array_object) {
  669. fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
  670. GetGLProcAddress("glBindVertexArrayAPPLE"));
  671. }
  672. debug_fn.glBlendBarrierKHRFn = 0;
  673. if (ext.b_GL_NV_blend_equation_advanced) {
  674. fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>(
  675. GetGLProcAddress("glBlendBarrierNV"));
  676. } else if (ext.b_GL_KHR_blend_equation_advanced) {
  677. fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>(
  678. GetGLProcAddress("glBlendBarrierKHR"));
  679. }
  680. debug_fn.glBlitFramebufferFn = 0;
  681. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  682. fn.glBlitFramebufferFn = reinterpret_cast<glBlitFramebufferProc>(
  683. GetGLProcAddress("glBlitFramebuffer"));
  684. }
  685. debug_fn.glBlitFramebufferANGLEFn = 0;
  686. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  687. fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
  688. GetGLProcAddress("glBlitFramebuffer"));
  689. } else if (ext.b_GL_ANGLE_framebuffer_blit) {
  690. fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
  691. GetGLProcAddress("glBlitFramebufferANGLE"));
  692. }
  693. debug_fn.glBlitFramebufferEXTFn = 0;
  694. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  695. fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>(
  696. GetGLProcAddress("glBlitFramebuffer"));
  697. } else if (ext.b_GL_EXT_framebuffer_blit) {
  698. fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>(
  699. GetGLProcAddress("glBlitFramebufferEXT"));
  700. }
  701. debug_fn.glCheckFramebufferStatusEXTFn = 0;
  702. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  703. fn.glCheckFramebufferStatusEXTFn =
  704. reinterpret_cast<glCheckFramebufferStatusEXTProc>(
  705. GetGLProcAddress("glCheckFramebufferStatus"));
  706. } else if (ext.b_GL_EXT_framebuffer_object) {
  707. fn.glCheckFramebufferStatusEXTFn =
  708. reinterpret_cast<glCheckFramebufferStatusEXTProc>(
  709. GetGLProcAddress("glCheckFramebufferStatusEXT"));
  710. }
  711. debug_fn.glClearBufferfiFn = 0;
  712. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  713. fn.glClearBufferfiFn = reinterpret_cast<glClearBufferfiProc>(
  714. GetGLProcAddress("glClearBufferfi"));
  715. }
  716. debug_fn.glClearBufferfvFn = 0;
  717. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  718. fn.glClearBufferfvFn = reinterpret_cast<glClearBufferfvProc>(
  719. GetGLProcAddress("glClearBufferfv"));
  720. }
  721. debug_fn.glClearBufferivFn = 0;
  722. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  723. fn.glClearBufferivFn = reinterpret_cast<glClearBufferivProc>(
  724. GetGLProcAddress("glClearBufferiv"));
  725. }
  726. debug_fn.glClearBufferuivFn = 0;
  727. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  728. fn.glClearBufferuivFn = reinterpret_cast<glClearBufferuivProc>(
  729. GetGLProcAddress("glClearBufferuiv"));
  730. }
  731. debug_fn.glClearDepthfFn = 0;
  732. if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
  733. fn.glClearDepthfFn =
  734. reinterpret_cast<glClearDepthfProc>(GetGLProcAddress("glClearDepthf"));
  735. }
  736. debug_fn.glClientWaitSyncFn = 0;
  737. if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
  738. ext.b_GL_ARB_sync) {
  739. fn.glClientWaitSyncFn = reinterpret_cast<glClientWaitSyncProc>(
  740. GetGLProcAddress("glClientWaitSync"));
  741. }
  742. debug_fn.glCompressedTexImage3DFn = 0;
  743. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  744. fn.glCompressedTexImage3DFn = reinterpret_cast<glCompressedTexImage3DProc>(
  745. GetGLProcAddress("glCompressedTexImage3D"));
  746. }
  747. debug_fn.glCompressedTexSubImage3DFn = 0;
  748. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  749. fn.glCompressedTexSubImage3DFn =
  750. reinterpret_cast<glCompressedTexSubImage3DProc>(
  751. GetGLProcAddress("glCompressedTexSubImage3D"));
  752. }
  753. debug_fn.glCopyBufferSubDataFn = 0;
  754. if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
  755. fn.glCopyBufferSubDataFn = reinterpret_cast<glCopyBufferSubDataProc>(
  756. GetGLProcAddress("glCopyBufferSubData"));
  757. }
  758. debug_fn.glCopyTexSubImage3DFn = 0;
  759. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  760. fn.glCopyTexSubImage3DFn = reinterpret_cast<glCopyTexSubImage3DProc>(
  761. GetGLProcAddress("glCopyTexSubImage3D"));
  762. }
  763. debug_fn.glCoverageModulationNVFn = 0;
  764. if (ext.b_GL_NV_framebuffer_mixed_samples) {
  765. fn.glCoverageModulationNVFn = reinterpret_cast<glCoverageModulationNVProc>(
  766. GetGLProcAddress("glCoverageModulationNV"));
  767. }
  768. debug_fn.glCoverFillPathInstancedNVFn = 0;
  769. if (ext.b_GL_NV_path_rendering) {
  770. fn.glCoverFillPathInstancedNVFn =
  771. reinterpret_cast<glCoverFillPathInstancedNVProc>(
  772. GetGLProcAddress("glCoverFillPathInstancedNV"));
  773. }
  774. debug_fn.glCoverFillPathNVFn = 0;
  775. if (ext.b_GL_NV_path_rendering) {
  776. fn.glCoverFillPathNVFn = reinterpret_cast<glCoverFillPathNVProc>(
  777. GetGLProcAddress("glCoverFillPathNV"));
  778. }
  779. debug_fn.glCoverStrokePathInstancedNVFn = 0;
  780. if (ext.b_GL_NV_path_rendering) {
  781. fn.glCoverStrokePathInstancedNVFn =
  782. reinterpret_cast<glCoverStrokePathInstancedNVProc>(
  783. GetGLProcAddress("glCoverStrokePathInstancedNV"));
  784. }
  785. debug_fn.glCoverStrokePathNVFn = 0;
  786. if (ext.b_GL_NV_path_rendering) {
  787. fn.glCoverStrokePathNVFn = reinterpret_cast<glCoverStrokePathNVProc>(
  788. GetGLProcAddress("glCoverStrokePathNV"));
  789. }
  790. debug_fn.glDeleteFencesAPPLEFn = 0;
  791. if (ext.b_GL_APPLE_fence) {
  792. fn.glDeleteFencesAPPLEFn = reinterpret_cast<glDeleteFencesAPPLEProc>(
  793. GetGLProcAddress("glDeleteFencesAPPLE"));
  794. }
  795. debug_fn.glDeleteFencesNVFn = 0;
  796. if (ext.b_GL_NV_fence) {
  797. fn.glDeleteFencesNVFn = reinterpret_cast<glDeleteFencesNVProc>(
  798. GetGLProcAddress("glDeleteFencesNV"));
  799. }
  800. debug_fn.glDeleteFramebuffersEXTFn = 0;
  801. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  802. fn.glDeleteFramebuffersEXTFn =
  803. reinterpret_cast<glDeleteFramebuffersEXTProc>(
  804. GetGLProcAddress("glDeleteFramebuffers"));
  805. } else if (ext.b_GL_EXT_framebuffer_object) {
  806. fn.glDeleteFramebuffersEXTFn =
  807. reinterpret_cast<glDeleteFramebuffersEXTProc>(
  808. GetGLProcAddress("glDeleteFramebuffersEXT"));
  809. }
  810. debug_fn.glDeletePathsNVFn = 0;
  811. if (ext.b_GL_NV_path_rendering) {
  812. fn.glDeletePathsNVFn = reinterpret_cast<glDeletePathsNVProc>(
  813. GetGLProcAddress("glDeletePathsNV"));
  814. }
  815. debug_fn.glDeleteQueriesFn = 0;
  816. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  817. fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
  818. GetGLProcAddress("glDeleteQueries"));
  819. } else if (ext.b_GL_ARB_occlusion_query) {
  820. fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
  821. GetGLProcAddress("glDeleteQueriesARB"));
  822. } else if (ext.b_GL_EXT_disjoint_timer_query ||
  823. ext.b_GL_EXT_occlusion_query_boolean) {
  824. fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
  825. GetGLProcAddress("glDeleteQueriesEXT"));
  826. }
  827. debug_fn.glDeleteRenderbuffersEXTFn = 0;
  828. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  829. fn.glDeleteRenderbuffersEXTFn =
  830. reinterpret_cast<glDeleteRenderbuffersEXTProc>(
  831. GetGLProcAddress("glDeleteRenderbuffers"));
  832. } else if (ext.b_GL_EXT_framebuffer_object) {
  833. fn.glDeleteRenderbuffersEXTFn =
  834. reinterpret_cast<glDeleteRenderbuffersEXTProc>(
  835. GetGLProcAddress("glDeleteRenderbuffersEXT"));
  836. }
  837. debug_fn.glDeleteSamplersFn = 0;
  838. if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
  839. fn.glDeleteSamplersFn = reinterpret_cast<glDeleteSamplersProc>(
  840. GetGLProcAddress("glDeleteSamplers"));
  841. }
  842. debug_fn.glDeleteSyncFn = 0;
  843. if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
  844. ext.b_GL_ARB_sync) {
  845. fn.glDeleteSyncFn =
  846. reinterpret_cast<glDeleteSyncProc>(GetGLProcAddress("glDeleteSync"));
  847. }
  848. debug_fn.glDeleteTransformFeedbacksFn = 0;
  849. if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
  850. fn.glDeleteTransformFeedbacksFn =
  851. reinterpret_cast<glDeleteTransformFeedbacksProc>(
  852. GetGLProcAddress("glDeleteTransformFeedbacks"));
  853. }
  854. debug_fn.glDeleteVertexArraysOESFn = 0;
  855. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
  856. ext.b_GL_ARB_vertex_array_object) {
  857. fn.glDeleteVertexArraysOESFn =
  858. reinterpret_cast<glDeleteVertexArraysOESProc>(
  859. GetGLProcAddress("glDeleteVertexArrays"));
  860. } else if (ext.b_GL_OES_vertex_array_object) {
  861. fn.glDeleteVertexArraysOESFn =
  862. reinterpret_cast<glDeleteVertexArraysOESProc>(
  863. GetGLProcAddress("glDeleteVertexArraysOES"));
  864. } else if (ext.b_GL_APPLE_vertex_array_object) {
  865. fn.glDeleteVertexArraysOESFn =
  866. reinterpret_cast<glDeleteVertexArraysOESProc>(
  867. GetGLProcAddress("glDeleteVertexArraysAPPLE"));
  868. }
  869. debug_fn.glDepthRangefFn = 0;
  870. if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
  871. fn.glDepthRangefFn =
  872. reinterpret_cast<glDepthRangefProc>(GetGLProcAddress("glDepthRangef"));
  873. }
  874. debug_fn.glDiscardFramebufferEXTFn = 0;
  875. if (ext.b_GL_EXT_discard_framebuffer) {
  876. fn.glDiscardFramebufferEXTFn =
  877. reinterpret_cast<glDiscardFramebufferEXTProc>(
  878. GetGLProcAddress("glDiscardFramebufferEXT"));
  879. }
  880. debug_fn.glDrawArraysInstancedANGLEFn = 0;
  881. if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
  882. fn.glDrawArraysInstancedANGLEFn =
  883. reinterpret_cast<glDrawArraysInstancedANGLEProc>(
  884. GetGLProcAddress("glDrawArraysInstanced"));
  885. } else if (ext.b_GL_ARB_draw_instanced) {
  886. fn.glDrawArraysInstancedANGLEFn =
  887. reinterpret_cast<glDrawArraysInstancedANGLEProc>(
  888. GetGLProcAddress("glDrawArraysInstancedARB"));
  889. } else if (ext.b_GL_ANGLE_instanced_arrays) {
  890. fn.glDrawArraysInstancedANGLEFn =
  891. reinterpret_cast<glDrawArraysInstancedANGLEProc>(
  892. GetGLProcAddress("glDrawArraysInstancedANGLE"));
  893. }
  894. debug_fn.glDrawBufferFn = 0;
  895. if (!ver->is_es) {
  896. fn.glDrawBufferFn =
  897. reinterpret_cast<glDrawBufferProc>(GetGLProcAddress("glDrawBuffer"));
  898. }
  899. debug_fn.glDrawBuffersARBFn = 0;
  900. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  901. fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
  902. GetGLProcAddress("glDrawBuffers"));
  903. } else if (ext.b_GL_ARB_draw_buffers) {
  904. fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
  905. GetGLProcAddress("glDrawBuffersARB"));
  906. } else if (ext.b_GL_EXT_draw_buffers) {
  907. fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
  908. GetGLProcAddress("glDrawBuffersEXT"));
  909. }
  910. debug_fn.glDrawElementsInstancedANGLEFn = 0;
  911. if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
  912. fn.glDrawElementsInstancedANGLEFn =
  913. reinterpret_cast<glDrawElementsInstancedANGLEProc>(
  914. GetGLProcAddress("glDrawElementsInstanced"));
  915. } else if (ext.b_GL_ARB_draw_instanced) {
  916. fn.glDrawElementsInstancedANGLEFn =
  917. reinterpret_cast<glDrawElementsInstancedANGLEProc>(
  918. GetGLProcAddress("glDrawElementsInstancedARB"));
  919. } else if (ext.b_GL_ANGLE_instanced_arrays) {
  920. fn.glDrawElementsInstancedANGLEFn =
  921. reinterpret_cast<glDrawElementsInstancedANGLEProc>(
  922. GetGLProcAddress("glDrawElementsInstancedANGLE"));
  923. }
  924. debug_fn.glDrawRangeElementsFn = 0;
  925. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  926. fn.glDrawRangeElementsFn = reinterpret_cast<glDrawRangeElementsProc>(
  927. GetGLProcAddress("glDrawRangeElements"));
  928. }
  929. debug_fn.glEGLImageTargetRenderbufferStorageOESFn = 0;
  930. if (ext.b_GL_OES_EGL_image) {
  931. fn.glEGLImageTargetRenderbufferStorageOESFn =
  932. reinterpret_cast<glEGLImageTargetRenderbufferStorageOESProc>(
  933. GetGLProcAddress("glEGLImageTargetRenderbufferStorageOES"));
  934. }
  935. debug_fn.glEGLImageTargetTexture2DOESFn = 0;
  936. if (ext.b_GL_OES_EGL_image) {
  937. fn.glEGLImageTargetTexture2DOESFn =
  938. reinterpret_cast<glEGLImageTargetTexture2DOESProc>(
  939. GetGLProcAddress("glEGLImageTargetTexture2DOES"));
  940. }
  941. debug_fn.glEndQueryFn = 0;
  942. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  943. fn.glEndQueryFn =
  944. reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQuery"));
  945. } else if (ext.b_GL_ARB_occlusion_query) {
  946. fn.glEndQueryFn =
  947. reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQueryARB"));
  948. } else if (ext.b_GL_EXT_disjoint_timer_query ||
  949. ext.b_GL_EXT_occlusion_query_boolean) {
  950. fn.glEndQueryFn =
  951. reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQueryEXT"));
  952. }
  953. debug_fn.glEndTransformFeedbackFn = 0;
  954. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  955. fn.glEndTransformFeedbackFn = reinterpret_cast<glEndTransformFeedbackProc>(
  956. GetGLProcAddress("glEndTransformFeedback"));
  957. }
  958. debug_fn.glFenceSyncFn = 0;
  959. if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
  960. ext.b_GL_ARB_sync) {
  961. fn.glFenceSyncFn =
  962. reinterpret_cast<glFenceSyncProc>(GetGLProcAddress("glFenceSync"));
  963. }
  964. debug_fn.glFinishFenceAPPLEFn = 0;
  965. if (ext.b_GL_APPLE_fence) {
  966. fn.glFinishFenceAPPLEFn = reinterpret_cast<glFinishFenceAPPLEProc>(
  967. GetGLProcAddress("glFinishFenceAPPLE"));
  968. }
  969. debug_fn.glFinishFenceNVFn = 0;
  970. if (ext.b_GL_NV_fence) {
  971. fn.glFinishFenceNVFn = reinterpret_cast<glFinishFenceNVProc>(
  972. GetGLProcAddress("glFinishFenceNV"));
  973. }
  974. debug_fn.glFlushMappedBufferRangeFn = 0;
  975. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  976. fn.glFlushMappedBufferRangeFn =
  977. reinterpret_cast<glFlushMappedBufferRangeProc>(
  978. GetGLProcAddress("glFlushMappedBufferRange"));
  979. }
  980. debug_fn.glFramebufferRenderbufferEXTFn = 0;
  981. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  982. fn.glFramebufferRenderbufferEXTFn =
  983. reinterpret_cast<glFramebufferRenderbufferEXTProc>(
  984. GetGLProcAddress("glFramebufferRenderbuffer"));
  985. } else if (ext.b_GL_EXT_framebuffer_object) {
  986. fn.glFramebufferRenderbufferEXTFn =
  987. reinterpret_cast<glFramebufferRenderbufferEXTProc>(
  988. GetGLProcAddress("glFramebufferRenderbufferEXT"));
  989. }
  990. debug_fn.glFramebufferTexture2DEXTFn = 0;
  991. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  992. fn.glFramebufferTexture2DEXTFn =
  993. reinterpret_cast<glFramebufferTexture2DEXTProc>(
  994. GetGLProcAddress("glFramebufferTexture2D"));
  995. } else if (ext.b_GL_EXT_framebuffer_object) {
  996. fn.glFramebufferTexture2DEXTFn =
  997. reinterpret_cast<glFramebufferTexture2DEXTProc>(
  998. GetGLProcAddress("glFramebufferTexture2DEXT"));
  999. }
  1000. debug_fn.glFramebufferTexture2DMultisampleEXTFn = 0;
  1001. if (ext.b_GL_EXT_multisampled_render_to_texture) {
  1002. fn.glFramebufferTexture2DMultisampleEXTFn =
  1003. reinterpret_cast<glFramebufferTexture2DMultisampleEXTProc>(
  1004. GetGLProcAddress("glFramebufferTexture2DMultisampleEXT"));
  1005. }
  1006. debug_fn.glFramebufferTexture2DMultisampleIMGFn = 0;
  1007. if (ext.b_GL_IMG_multisampled_render_to_texture) {
  1008. fn.glFramebufferTexture2DMultisampleIMGFn =
  1009. reinterpret_cast<glFramebufferTexture2DMultisampleIMGProc>(
  1010. GetGLProcAddress("glFramebufferTexture2DMultisampleIMG"));
  1011. }
  1012. debug_fn.glFramebufferTextureLayerFn = 0;
  1013. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
  1014. fn.glFramebufferTextureLayerFn =
  1015. reinterpret_cast<glFramebufferTextureLayerProc>(
  1016. GetGLProcAddress("glFramebufferTextureLayer"));
  1017. }
  1018. debug_fn.glGenerateMipmapEXTFn = 0;
  1019. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  1020. fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
  1021. GetGLProcAddress("glGenerateMipmap"));
  1022. } else if (ext.b_GL_EXT_framebuffer_object) {
  1023. fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
  1024. GetGLProcAddress("glGenerateMipmapEXT"));
  1025. }
  1026. debug_fn.glGenFencesAPPLEFn = 0;
  1027. if (ext.b_GL_APPLE_fence) {
  1028. fn.glGenFencesAPPLEFn = reinterpret_cast<glGenFencesAPPLEProc>(
  1029. GetGLProcAddress("glGenFencesAPPLE"));
  1030. }
  1031. debug_fn.glGenFencesNVFn = 0;
  1032. if (ext.b_GL_NV_fence) {
  1033. fn.glGenFencesNVFn =
  1034. reinterpret_cast<glGenFencesNVProc>(GetGLProcAddress("glGenFencesNV"));
  1035. }
  1036. debug_fn.glGenFramebuffersEXTFn = 0;
  1037. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  1038. fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>(
  1039. GetGLProcAddress("glGenFramebuffers"));
  1040. } else if (ext.b_GL_EXT_framebuffer_object) {
  1041. fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>(
  1042. GetGLProcAddress("glGenFramebuffersEXT"));
  1043. }
  1044. debug_fn.glGenPathsNVFn = 0;
  1045. if (ext.b_GL_NV_path_rendering) {
  1046. fn.glGenPathsNVFn =
  1047. reinterpret_cast<glGenPathsNVProc>(GetGLProcAddress("glGenPathsNV"));
  1048. }
  1049. debug_fn.glGenQueriesFn = 0;
  1050. if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
  1051. fn.glGenQueriesFn =
  1052. reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueries"));
  1053. } else if (ext.b_GL_ARB_occlusion_query) {
  1054. fn.glGenQueriesFn =
  1055. reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueriesARB"));
  1056. } else if (ext.b_GL_EXT_disjoint_timer_query ||
  1057. ext.b_GL_EXT_occlusion_query_boolean) {
  1058. fn.glGenQueriesFn =
  1059. reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueriesEXT"));
  1060. }
  1061. debug_fn.glGenRenderbuffersEXTFn = 0;
  1062. if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
  1063. fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
  1064. GetGLProcAddress("glGenRenderbuffers"));
  1065. } else if (ext.b_GL_EXT_framebuffer_object) {
  1066. fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
  1067. GetGLProcAddress("glGenRenderbuffersEXT"));
  1068. }
  1069. debug_fn.glGenSamplersFn = 0;
  1070. if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
  1071. fn.glGenSamplersFn =
  1072. reinterpret_cast<glGenSamplersProc>(GetGLProcAddress("glGenSamplers"));
  1073. }
  1074. debug_fn.glGenTransformFeedbacksFn = 0;
  1075. if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u)) {
  1076. fn.glGenTransformFeedbacksFn =
  1077. reinterpret_cast<glGenTransformFeedbacksProc>(
  1078. GetGLProcAddress("glGenTransformFeedbacks"));
  1079. }
  1080. debug_fn.glGenVertexArraysOESFn = 0;
  1081. if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
  1082. ext.b_GL_ARB_vertex_array_object) {
  1083. fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
  1084. GetGLProcAddress("glGenVertexArrays"));
  1085. } else if (ext.b_GL_OES_vertex_array_object) {
  1086. fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
  1087. GetGLProcAddress("glGenVertexArraysOES"));
  1088. } else if (ext.b_GL_APPLE_vertex_array_object) {
  1089. fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
  1090. GetGLProcAddress("glGenVertexArraysAPPLE"));
  1091. }
  1092. debug_fn.glGetActiveUniformBlockivFn = 0;
  1093. if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
  1094. fn.glGetActiveUniformBlockivFn =
  1095. reinterpret_cast<glGetActiveUniformBlockivProc>(
  1096. GetGLProcAddress("glGetActiveUniformBlockiv"));
  1097. }
  1098. debug_fn.glGetActiveUniformBlockNameFn = 0;
  1099. if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
  1100. fn.glGetA

Large files files are truncated, but you can click here to view the full file