PageRenderTime 72ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/dgl/ext/EXT_gpu_shader4.d

http://github.com/alvatarc/idna
D | 382 lines | 368 code | 14 blank | 0 comment | 79 complexity | e57f9257ab587a2aaca3f590978d5c10 MD5 | raw file
  1. module dgl.ext.EXT_gpu_shader4;
  2. import dgl.opengl;
  3. import dgl.glext;
  4. version( D_Version2 ) {
  5. import std.string : containsPattern = count;
  6. import std.conv;
  7. } else {
  8. import tango.text.Util : containsPattern;
  9. import tango.stdc.stringz : fromStringz;
  10. alias char[] string;
  11. }
  12. private ushort extensionId__ = 72;
  13. alias extensionId__ EXT_gpu_shader4;
  14. version (DglNoExtSupportAsserts) {
  15. } else {
  16. version = DglExtSupportAsserts;
  17. }
  18. static this() {
  19. if (__extSupportCheckingFuncs.length <= extensionId__) {
  20. __extSupportCheckingFuncs.length = extensionId__ + 1;
  21. }
  22. __extSupportCheckingFuncs[extensionId__] = &__supported;
  23. }
  24. version (all) {
  25. public {
  26. const GLenum GL_SAMPLER_1D_ARRAY_EXT = 0x8DC0;
  27. const GLenum GL_SAMPLER_2D_ARRAY_EXT = 0x8DC1;
  28. const GLenum GL_SAMPLER_BUFFER_EXT = 0x8DC2;
  29. const GLenum GL_SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3;
  30. const GLenum GL_SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4;
  31. const GLenum GL_SAMPLER_CUBE_SHADOW_EXT = 0x8DC5;
  32. const GLenum GL_UNSIGNED_INT_VEC2_EXT = 0x8DC6;
  33. const GLenum GL_UNSIGNED_INT_VEC3_EXT = 0x8DC7;
  34. const GLenum GL_UNSIGNED_INT_VEC4_EXT = 0x8DC8;
  35. const GLenum GL_INT_SAMPLER_1D_EXT = 0x8DC9;
  36. const GLenum GL_INT_SAMPLER_2D_EXT = 0x8DCA;
  37. const GLenum GL_INT_SAMPLER_3D_EXT = 0x8DCB;
  38. const GLenum GL_INT_SAMPLER_CUBE_EXT = 0x8DCC;
  39. const GLenum GL_INT_SAMPLER_2D_RECT_EXT = 0x8DCD;
  40. const GLenum GL_INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE;
  41. const GLenum GL_INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF;
  42. const GLenum GL_INT_SAMPLER_BUFFER_EXT = 0x8DD0;
  43. const GLenum GL_UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1;
  44. const GLenum GL_UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2;
  45. const GLenum GL_UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3;
  46. const GLenum GL_UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4;
  47. const GLenum GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5;
  48. const GLenum GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6;
  49. const GLenum GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7;
  50. const GLenum GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8;
  51. const GLenum GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD;
  52. }
  53. private {
  54. extern (System) {
  55. alias void function (GLuint program, GLint location, GLuint *params) fp_glGetUniformuivEXT;
  56. alias void function (GLuint program, GLuint color, GLchar *name) fp_glBindFragDataLocationEXT;
  57. alias GLint function (GLuint program, GLchar *name) fp_glGetFragDataLocationEXT;
  58. alias void function (GLint location, GLuint v0) fp_glUniform1uiEXT;
  59. alias void function (GLint location, GLuint v0, GLuint v1) fp_glUniform2uiEXT;
  60. alias void function (GLint location, GLuint v0, GLuint v1, GLuint v2) fp_glUniform3uiEXT;
  61. alias void function (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) fp_glUniform4uiEXT;
  62. alias void function (GLint location, GLsizei count, GLuint *value) fp_glUniform1uivEXT;
  63. alias void function (GLint location, GLsizei count, GLuint *value) fp_glUniform2uivEXT;
  64. alias void function (GLint location, GLsizei count, GLuint *value) fp_glUniform3uivEXT;
  65. alias void function (GLint location, GLsizei count, GLuint *value) fp_glUniform4uivEXT;
  66. alias void function (GLuint index, GLint x) fp_glVertexAttribI1iEXT;
  67. alias void function (GLuint index, GLint x, GLint y) fp_glVertexAttribI2iEXT;
  68. alias void function (GLuint index, GLint x, GLint y, GLint z) fp_glVertexAttribI3iEXT;
  69. alias void function (GLuint index, GLint x, GLint y, GLint z, GLint w) fp_glVertexAttribI4iEXT;
  70. alias void function (GLuint index, GLuint x) fp_glVertexAttribI1uiEXT;
  71. alias void function (GLuint index, GLuint x, GLuint y) fp_glVertexAttribI2uiEXT;
  72. alias void function (GLuint index, GLuint x, GLuint y, GLuint z) fp_glVertexAttribI3uiEXT;
  73. alias void function (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) fp_glVertexAttribI4uiEXT;
  74. alias void function (GLuint index, GLint *v) fp_glVertexAttribI1ivEXT;
  75. alias void function (GLuint index, GLint *v) fp_glVertexAttribI2ivEXT;
  76. alias void function (GLuint index, GLint *v) fp_glVertexAttribI3ivEXT;
  77. alias void function (GLuint index, GLint *v) fp_glVertexAttribI4ivEXT;
  78. alias void function (GLuint index, GLuint *v) fp_glVertexAttribI1uivEXT;
  79. alias void function (GLuint index, GLuint *v) fp_glVertexAttribI2uivEXT;
  80. alias void function (GLuint index, GLuint *v) fp_glVertexAttribI3uivEXT;
  81. alias void function (GLuint index, GLuint *v) fp_glVertexAttribI4uivEXT;
  82. alias void function (GLuint index, GLbyte *v) fp_glVertexAttribI4bvEXT;
  83. alias void function (GLuint index, GLshort *v) fp_glVertexAttribI4svEXT;
  84. alias void function (GLuint index, GLubyte *v) fp_glVertexAttribI4ubvEXT;
  85. alias void function (GLuint index, GLushort *v) fp_glVertexAttribI4usvEXT;
  86. alias void function (GLuint index, GLint size, GLenum type, GLsizei stride, GLvoid *pointer) fp_glVertexAttribIPointerEXT;
  87. alias void function (GLuint index, GLenum pname, GLint *params) fp_glGetVertexAttribIivEXT;
  88. alias void function (GLuint index, GLenum pname, GLuint *params) fp_glGetVertexAttribIuivEXT;
  89. }
  90. }
  91. public {
  92. void GetUniformuiv(GL gl_, ParameterTypeTuple!(fp_glGetUniformuivEXT) params__) {
  93. auto gl = _getGL(gl_);
  94. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  95. auto funcPtr = cast(fp_glGetUniformuivEXT)(gl.extFuncs[extensionId__][0]);
  96. return checkedCall(gl_, "GetUniformuiv", funcPtr, params__);
  97. }
  98. void BindFragDataLocation(GL gl_, ParameterTypeTuple!(fp_glBindFragDataLocationEXT) params__) {
  99. auto gl = _getGL(gl_);
  100. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  101. auto funcPtr = cast(fp_glBindFragDataLocationEXT)(gl.extFuncs[extensionId__][1]);
  102. return checkedCall(gl_, "BindFragDataLocation", funcPtr, params__);
  103. }
  104. GLint GetFragDataLocation(GL gl_, ParameterTypeTuple!(fp_glGetFragDataLocationEXT) params__) {
  105. auto gl = _getGL(gl_);
  106. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  107. auto funcPtr = cast(fp_glGetFragDataLocationEXT)(gl.extFuncs[extensionId__][2]);
  108. return checkedCall(gl_, "GetFragDataLocation", funcPtr, params__);
  109. }
  110. void Uniform1ui(GL gl_, ParameterTypeTuple!(fp_glUniform1uiEXT) params__) {
  111. auto gl = _getGL(gl_);
  112. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  113. auto funcPtr = cast(fp_glUniform1uiEXT)(gl.extFuncs[extensionId__][3]);
  114. return checkedCall(gl_, "Uniform1ui", funcPtr, params__);
  115. }
  116. void Uniform2ui(GL gl_, ParameterTypeTuple!(fp_glUniform2uiEXT) params__) {
  117. auto gl = _getGL(gl_);
  118. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  119. auto funcPtr = cast(fp_glUniform2uiEXT)(gl.extFuncs[extensionId__][4]);
  120. return checkedCall(gl_, "Uniform2ui", funcPtr, params__);
  121. }
  122. void Uniform3ui(GL gl_, ParameterTypeTuple!(fp_glUniform3uiEXT) params__) {
  123. auto gl = _getGL(gl_);
  124. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  125. auto funcPtr = cast(fp_glUniform3uiEXT)(gl.extFuncs[extensionId__][5]);
  126. return checkedCall(gl_, "Uniform3ui", funcPtr, params__);
  127. }
  128. void Uniform4ui(GL gl_, ParameterTypeTuple!(fp_glUniform4uiEXT) params__) {
  129. auto gl = _getGL(gl_);
  130. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  131. auto funcPtr = cast(fp_glUniform4uiEXT)(gl.extFuncs[extensionId__][6]);
  132. return checkedCall(gl_, "Uniform4ui", funcPtr, params__);
  133. }
  134. void Uniform1uiv(GL gl_, ParameterTypeTuple!(fp_glUniform1uivEXT) params__) {
  135. auto gl = _getGL(gl_);
  136. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  137. auto funcPtr = cast(fp_glUniform1uivEXT)(gl.extFuncs[extensionId__][7]);
  138. return checkedCall(gl_, "Uniform1uiv", funcPtr, params__);
  139. }
  140. void Uniform2uiv(GL gl_, ParameterTypeTuple!(fp_glUniform2uivEXT) params__) {
  141. auto gl = _getGL(gl_);
  142. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  143. auto funcPtr = cast(fp_glUniform2uivEXT)(gl.extFuncs[extensionId__][8]);
  144. return checkedCall(gl_, "Uniform2uiv", funcPtr, params__);
  145. }
  146. void Uniform3uiv(GL gl_, ParameterTypeTuple!(fp_glUniform3uivEXT) params__) {
  147. auto gl = _getGL(gl_);
  148. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  149. auto funcPtr = cast(fp_glUniform3uivEXT)(gl.extFuncs[extensionId__][9]);
  150. return checkedCall(gl_, "Uniform3uiv", funcPtr, params__);
  151. }
  152. void Uniform4uiv(GL gl_, ParameterTypeTuple!(fp_glUniform4uivEXT) params__) {
  153. auto gl = _getGL(gl_);
  154. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  155. auto funcPtr = cast(fp_glUniform4uivEXT)(gl.extFuncs[extensionId__][10]);
  156. return checkedCall(gl_, "Uniform4uiv", funcPtr, params__);
  157. }
  158. void VertexAttribI1i(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI1iEXT) params__) {
  159. auto gl = _getGL(gl_);
  160. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  161. auto funcPtr = cast(fp_glVertexAttribI1iEXT)(gl.extFuncs[extensionId__][11]);
  162. return checkedCall(gl_, "VertexAttribI1i", funcPtr, params__);
  163. }
  164. void VertexAttribI2i(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI2iEXT) params__) {
  165. auto gl = _getGL(gl_);
  166. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  167. auto funcPtr = cast(fp_glVertexAttribI2iEXT)(gl.extFuncs[extensionId__][12]);
  168. return checkedCall(gl_, "VertexAttribI2i", funcPtr, params__);
  169. }
  170. void VertexAttribI3i(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI3iEXT) params__) {
  171. auto gl = _getGL(gl_);
  172. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  173. auto funcPtr = cast(fp_glVertexAttribI3iEXT)(gl.extFuncs[extensionId__][13]);
  174. return checkedCall(gl_, "VertexAttribI3i", funcPtr, params__);
  175. }
  176. void VertexAttribI4i(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI4iEXT) params__) {
  177. auto gl = _getGL(gl_);
  178. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  179. auto funcPtr = cast(fp_glVertexAttribI4iEXT)(gl.extFuncs[extensionId__][14]);
  180. return checkedCall(gl_, "VertexAttribI4i", funcPtr, params__);
  181. }
  182. void VertexAttribI1ui(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI1uiEXT) params__) {
  183. auto gl = _getGL(gl_);
  184. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  185. auto funcPtr = cast(fp_glVertexAttribI1uiEXT)(gl.extFuncs[extensionId__][15]);
  186. return checkedCall(gl_, "VertexAttribI1ui", funcPtr, params__);
  187. }
  188. void VertexAttribI2ui(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI2uiEXT) params__) {
  189. auto gl = _getGL(gl_);
  190. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  191. auto funcPtr = cast(fp_glVertexAttribI2uiEXT)(gl.extFuncs[extensionId__][16]);
  192. return checkedCall(gl_, "VertexAttribI2ui", funcPtr, params__);
  193. }
  194. void VertexAttribI3ui(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI3uiEXT) params__) {
  195. auto gl = _getGL(gl_);
  196. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  197. auto funcPtr = cast(fp_glVertexAttribI3uiEXT)(gl.extFuncs[extensionId__][17]);
  198. return checkedCall(gl_, "VertexAttribI3ui", funcPtr, params__);
  199. }
  200. void VertexAttribI4ui(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI4uiEXT) params__) {
  201. auto gl = _getGL(gl_);
  202. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  203. auto funcPtr = cast(fp_glVertexAttribI4uiEXT)(gl.extFuncs[extensionId__][18]);
  204. return checkedCall(gl_, "VertexAttribI4ui", funcPtr, params__);
  205. }
  206. void VertexAttribI1iv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI1ivEXT) params__) {
  207. auto gl = _getGL(gl_);
  208. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  209. auto funcPtr = cast(fp_glVertexAttribI1ivEXT)(gl.extFuncs[extensionId__][19]);
  210. return checkedCall(gl_, "VertexAttribI1iv", funcPtr, params__);
  211. }
  212. void VertexAttribI2iv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI2ivEXT) params__) {
  213. auto gl = _getGL(gl_);
  214. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  215. auto funcPtr = cast(fp_glVertexAttribI2ivEXT)(gl.extFuncs[extensionId__][20]);
  216. return checkedCall(gl_, "VertexAttribI2iv", funcPtr, params__);
  217. }
  218. void VertexAttribI3iv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI3ivEXT) params__) {
  219. auto gl = _getGL(gl_);
  220. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  221. auto funcPtr = cast(fp_glVertexAttribI3ivEXT)(gl.extFuncs[extensionId__][21]);
  222. return checkedCall(gl_, "VertexAttribI3iv", funcPtr, params__);
  223. }
  224. void VertexAttribI4iv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI4ivEXT) params__) {
  225. auto gl = _getGL(gl_);
  226. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  227. auto funcPtr = cast(fp_glVertexAttribI4ivEXT)(gl.extFuncs[extensionId__][22]);
  228. return checkedCall(gl_, "VertexAttribI4iv", funcPtr, params__);
  229. }
  230. void VertexAttribI1uiv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI1uivEXT) params__) {
  231. auto gl = _getGL(gl_);
  232. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  233. auto funcPtr = cast(fp_glVertexAttribI1uivEXT)(gl.extFuncs[extensionId__][23]);
  234. return checkedCall(gl_, "VertexAttribI1uiv", funcPtr, params__);
  235. }
  236. void VertexAttribI2uiv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI2uivEXT) params__) {
  237. auto gl = _getGL(gl_);
  238. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  239. auto funcPtr = cast(fp_glVertexAttribI2uivEXT)(gl.extFuncs[extensionId__][24]);
  240. return checkedCall(gl_, "VertexAttribI2uiv", funcPtr, params__);
  241. }
  242. void VertexAttribI3uiv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI3uivEXT) params__) {
  243. auto gl = _getGL(gl_);
  244. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  245. auto funcPtr = cast(fp_glVertexAttribI3uivEXT)(gl.extFuncs[extensionId__][25]);
  246. return checkedCall(gl_, "VertexAttribI3uiv", funcPtr, params__);
  247. }
  248. void VertexAttribI4uiv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI4uivEXT) params__) {
  249. auto gl = _getGL(gl_);
  250. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  251. auto funcPtr = cast(fp_glVertexAttribI4uivEXT)(gl.extFuncs[extensionId__][26]);
  252. return checkedCall(gl_, "VertexAttribI4uiv", funcPtr, params__);
  253. }
  254. void VertexAttribI4bv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI4bvEXT) params__) {
  255. auto gl = _getGL(gl_);
  256. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  257. auto funcPtr = cast(fp_glVertexAttribI4bvEXT)(gl.extFuncs[extensionId__][27]);
  258. return checkedCall(gl_, "VertexAttribI4bv", funcPtr, params__);
  259. }
  260. void VertexAttribI4sv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI4svEXT) params__) {
  261. auto gl = _getGL(gl_);
  262. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  263. auto funcPtr = cast(fp_glVertexAttribI4svEXT)(gl.extFuncs[extensionId__][28]);
  264. return checkedCall(gl_, "VertexAttribI4sv", funcPtr, params__);
  265. }
  266. void VertexAttribI4ubv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI4ubvEXT) params__) {
  267. auto gl = _getGL(gl_);
  268. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  269. auto funcPtr = cast(fp_glVertexAttribI4ubvEXT)(gl.extFuncs[extensionId__][29]);
  270. return checkedCall(gl_, "VertexAttribI4ubv", funcPtr, params__);
  271. }
  272. void VertexAttribI4usv(GL gl_, ParameterTypeTuple!(fp_glVertexAttribI4usvEXT) params__) {
  273. auto gl = _getGL(gl_);
  274. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  275. auto funcPtr = cast(fp_glVertexAttribI4usvEXT)(gl.extFuncs[extensionId__][30]);
  276. return checkedCall(gl_, "VertexAttribI4usv", funcPtr, params__);
  277. }
  278. void VertexAttribIPointer(GL gl_, ParameterTypeTuple!(fp_glVertexAttribIPointerEXT) params__) {
  279. auto gl = _getGL(gl_);
  280. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  281. auto funcPtr = cast(fp_glVertexAttribIPointerEXT)(gl.extFuncs[extensionId__][31]);
  282. return checkedCall(gl_, "VertexAttribIPointer", funcPtr, params__);
  283. }
  284. void GetVertexAttribIiv(GL gl_, ParameterTypeTuple!(fp_glGetVertexAttribIivEXT) params__) {
  285. auto gl = _getGL(gl_);
  286. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  287. auto funcPtr = cast(fp_glGetVertexAttribIivEXT)(gl.extFuncs[extensionId__][32]);
  288. return checkedCall(gl_, "GetVertexAttribIiv", funcPtr, params__);
  289. }
  290. void GetVertexAttribIuiv(GL gl_, ParameterTypeTuple!(fp_glGetVertexAttribIuivEXT) params__) {
  291. auto gl = _getGL(gl_);
  292. version (DglExtSupportAsserts) assert (gl.extEnabled.length > extensionId__ && gl.extEnabled[extensionId__] > 0, extNotEnabledError);
  293. auto funcPtr = cast(fp_glGetVertexAttribIuivEXT)(gl.extFuncs[extensionId__][33]);
  294. return checkedCall(gl_, "GetVertexAttribIuiv", funcPtr, params__);
  295. }
  296. }
  297. private final bool __supported(GL gl_) {
  298. auto gl = _getGL(gl_);
  299. if (extensionId__ < cast(int)gl.extFuncs.length && gl.extFuncs[extensionId__] !is null) {
  300. return gl.extFuncs[extensionId__][0] !is null;
  301. }
  302. synchronized (gl) {
  303. if (extensionId__ < cast(int)gl.extFuncs.length && gl.extFuncs[extensionId__] !is null) {
  304. return gl.extFuncs[extensionId__][0] !is null;
  305. }
  306. if (gl.extFuncs.length <= extensionId__) {
  307. gl.extFuncs.length = extensionId__ + 1;
  308. version (DglExtSupportAsserts) {
  309. gl.extEnabled.length = extensionId__ + 1;
  310. }
  311. }
  312. gl.extFuncs[extensionId__] = loadFunctions__(gl_);
  313. return gl.extFuncs[extensionId__][0] !is null;
  314. }
  315. }
  316. private void*[] loadFunctions__(GL gl) {
  317. void*[] funcAddr = new void*[34];
  318. {
  319. char* extP = gl.GetString(GL_EXTENSIONS);
  320. version( D_Version2 ) {
  321. string extStr = extP is null ? null : to!(string)(extP);
  322. } else {
  323. string extStr = extP is null ? null : fromStringz(extP);
  324. }
  325. if (!extStr.containsPattern("GL_EXT_gpu_shader4")) { funcAddr[0] = null; return funcAddr; }
  326. }
  327. if (null is (funcAddr[0] = getExtensionFuncPtr(cast(char*)"glGetUniformuivEXT"))) { funcAddr[0] = null; return funcAddr; }
  328. if (null is (funcAddr[1] = getExtensionFuncPtr(cast(char*)"glBindFragDataLocationEXT"))) { funcAddr[0] = null; return funcAddr; }
  329. if (null is (funcAddr[2] = getExtensionFuncPtr(cast(char*)"glGetFragDataLocationEXT"))) { funcAddr[0] = null; return funcAddr; }
  330. if (null is (funcAddr[3] = getExtensionFuncPtr(cast(char*)"glUniform1uiEXT"))) { funcAddr[0] = null; return funcAddr; }
  331. if (null is (funcAddr[4] = getExtensionFuncPtr(cast(char*)"glUniform2uiEXT"))) { funcAddr[0] = null; return funcAddr; }
  332. if (null is (funcAddr[5] = getExtensionFuncPtr(cast(char*)"glUniform3uiEXT"))) { funcAddr[0] = null; return funcAddr; }
  333. if (null is (funcAddr[6] = getExtensionFuncPtr(cast(char*)"glUniform4uiEXT"))) { funcAddr[0] = null; return funcAddr; }
  334. if (null is (funcAddr[7] = getExtensionFuncPtr(cast(char*)"glUniform1uivEXT"))) { funcAddr[0] = null; return funcAddr; }
  335. if (null is (funcAddr[8] = getExtensionFuncPtr(cast(char*)"glUniform2uivEXT"))) { funcAddr[0] = null; return funcAddr; }
  336. if (null is (funcAddr[9] = getExtensionFuncPtr(cast(char*)"glUniform3uivEXT"))) { funcAddr[0] = null; return funcAddr; }
  337. if (null is (funcAddr[10] = getExtensionFuncPtr(cast(char*)"glUniform4uivEXT"))) { funcAddr[0] = null; return funcAddr; }
  338. if (null is (funcAddr[11] = getExtensionFuncPtr(cast(char*)"glVertexAttribI1iEXT"))) { funcAddr[0] = null; return funcAddr; }
  339. if (null is (funcAddr[12] = getExtensionFuncPtr(cast(char*)"glVertexAttribI2iEXT"))) { funcAddr[0] = null; return funcAddr; }
  340. if (null is (funcAddr[13] = getExtensionFuncPtr(cast(char*)"glVertexAttribI3iEXT"))) { funcAddr[0] = null; return funcAddr; }
  341. if (null is (funcAddr[14] = getExtensionFuncPtr(cast(char*)"glVertexAttribI4iEXT"))) { funcAddr[0] = null; return funcAddr; }
  342. if (null is (funcAddr[15] = getExtensionFuncPtr(cast(char*)"glVertexAttribI1uiEXT"))) { funcAddr[0] = null; return funcAddr; }
  343. if (null is (funcAddr[16] = getExtensionFuncPtr(cast(char*)"glVertexAttribI2uiEXT"))) { funcAddr[0] = null; return funcAddr; }
  344. if (null is (funcAddr[17] = getExtensionFuncPtr(cast(char*)"glVertexAttribI3uiEXT"))) { funcAddr[0] = null; return funcAddr; }
  345. if (null is (funcAddr[18] = getExtensionFuncPtr(cast(char*)"glVertexAttribI4uiEXT"))) { funcAddr[0] = null; return funcAddr; }
  346. if (null is (funcAddr[19] = getExtensionFuncPtr(cast(char*)"glVertexAttribI1ivEXT"))) { funcAddr[0] = null; return funcAddr; }
  347. if (null is (funcAddr[20] = getExtensionFuncPtr(cast(char*)"glVertexAttribI2ivEXT"))) { funcAddr[0] = null; return funcAddr; }
  348. if (null is (funcAddr[21] = getExtensionFuncPtr(cast(char*)"glVertexAttribI3ivEXT"))) { funcAddr[0] = null; return funcAddr; }
  349. if (null is (funcAddr[22] = getExtensionFuncPtr(cast(char*)"glVertexAttribI4ivEXT"))) { funcAddr[0] = null; return funcAddr; }
  350. if (null is (funcAddr[23] = getExtensionFuncPtr(cast(char*)"glVertexAttribI1uivEXT"))) { funcAddr[0] = null; return funcAddr; }
  351. if (null is (funcAddr[24] = getExtensionFuncPtr(cast(char*)"glVertexAttribI2uivEXT"))) { funcAddr[0] = null; return funcAddr; }
  352. if (null is (funcAddr[25] = getExtensionFuncPtr(cast(char*)"glVertexAttribI3uivEXT"))) { funcAddr[0] = null; return funcAddr; }
  353. if (null is (funcAddr[26] = getExtensionFuncPtr(cast(char*)"glVertexAttribI4uivEXT"))) { funcAddr[0] = null; return funcAddr; }
  354. if (null is (funcAddr[27] = getExtensionFuncPtr(cast(char*)"glVertexAttribI4bvEXT"))) { funcAddr[0] = null; return funcAddr; }
  355. if (null is (funcAddr[28] = getExtensionFuncPtr(cast(char*)"glVertexAttribI4svEXT"))) { funcAddr[0] = null; return funcAddr; }
  356. if (null is (funcAddr[29] = getExtensionFuncPtr(cast(char*)"glVertexAttribI4ubvEXT"))) { funcAddr[0] = null; return funcAddr; }
  357. if (null is (funcAddr[30] = getExtensionFuncPtr(cast(char*)"glVertexAttribI4usvEXT"))) { funcAddr[0] = null; return funcAddr; }
  358. if (null is (funcAddr[31] = getExtensionFuncPtr(cast(char*)"glVertexAttribIPointerEXT"))) { funcAddr[0] = null; return funcAddr; }
  359. if (null is (funcAddr[32] = getExtensionFuncPtr(cast(char*)"glGetVertexAttribIivEXT"))) { funcAddr[0] = null; return funcAddr; }
  360. if (null is (funcAddr[33] = getExtensionFuncPtr(cast(char*)"glGetVertexAttribIuivEXT"))) { funcAddr[0] = null; return funcAddr; }
  361. return funcAddr;
  362. }
  363. }
  364. else {
  365. private final bool __supported(GL gl_) {
  366. return false;
  367. }
  368. }