WebGL2RenderingContextBase.idl 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. #import <HTML/HTMLCanvasElement.idl>
  2. #import <WebGL/Types.idl>
  3. #import <WebGL/WebGLActiveInfo.idl>
  4. #import <WebGL/WebGLBuffer.idl>
  5. #import <WebGL/WebGLObject.idl>
  6. #import <WebGL/WebGLProgram.idl>
  7. #import <WebGL/WebGLRenderingContextBase.idl>
  8. #import <WebGL/WebGLRenderingContextOverloads.idl>
  9. #import <WebGL/WebGLQuery.idl>
  10. #import <WebGL/WebGLSampler.idl>
  11. #import <WebGL/WebGLSync.idl>
  12. #import <WebGL/WebGLTransformFeedback.idl>
  13. #import <WebGL/WebGLTexture.idl>
  14. #import <WebGL/WebGLUniformLocation.idl>
  15. #import <WebGL/WebGLVertexArrayObject.idl>
  16. // FIXME: BufferSource should be a Uint32Array
  17. typedef (BufferSource or sequence<GLuint>) Uint32List;
  18. // https://registry.khronos.org/webgl/specs/latest/2.0/#3.7
  19. interface mixin WebGL2RenderingContextBase {
  20. // Same note as WebGLRenderingContextBase:
  21. // Functions that have the [WebGLHandlesContextLoss] extended attribute in the spec do not have them here.
  22. const GLenum READ_BUFFER = 0x0C02;
  23. const GLenum UNPACK_ROW_LENGTH = 0x0CF2;
  24. const GLenum UNPACK_SKIP_ROWS = 0x0CF3;
  25. const GLenum UNPACK_SKIP_PIXELS = 0x0CF4;
  26. const GLenum PACK_ROW_LENGTH = 0x0D02;
  27. const GLenum PACK_SKIP_ROWS = 0x0D03;
  28. const GLenum PACK_SKIP_PIXELS = 0x0D04;
  29. const GLenum COLOR = 0x1800;
  30. const GLenum DEPTH = 0x1801;
  31. const GLenum STENCIL = 0x1802;
  32. const GLenum RED = 0x1903;
  33. const GLenum RGB8 = 0x8051;
  34. const GLenum RGB10_A2 = 0x8059;
  35. const GLenum TEXTURE_BINDING_3D = 0x806A;
  36. const GLenum UNPACK_SKIP_IMAGES = 0x806D;
  37. const GLenum UNPACK_IMAGE_HEIGHT = 0x806E;
  38. const GLenum TEXTURE_3D = 0x806F;
  39. const GLenum TEXTURE_WRAP_R = 0x8072;
  40. const GLenum MAX_3D_TEXTURE_SIZE = 0x8073;
  41. const GLenum UNSIGNED_INT_2_10_10_10_REV = 0x8368;
  42. const GLenum MAX_ELEMENTS_VERTICES = 0x80E8;
  43. const GLenum MAX_ELEMENTS_INDICES = 0x80E9;
  44. const GLenum TEXTURE_MIN_LOD = 0x813A;
  45. const GLenum TEXTURE_MAX_LOD = 0x813B;
  46. const GLenum TEXTURE_BASE_LEVEL = 0x813C;
  47. const GLenum TEXTURE_MAX_LEVEL = 0x813D;
  48. const GLenum MIN = 0x8007;
  49. const GLenum MAX = 0x8008;
  50. const GLenum DEPTH_COMPONENT24 = 0x81A6;
  51. const GLenum MAX_TEXTURE_LOD_BIAS = 0x84FD;
  52. const GLenum TEXTURE_COMPARE_MODE = 0x884C;
  53. const GLenum TEXTURE_COMPARE_FUNC = 0x884D;
  54. const GLenum CURRENT_QUERY = 0x8865;
  55. const GLenum QUERY_RESULT = 0x8866;
  56. const GLenum QUERY_RESULT_AVAILABLE = 0x8867;
  57. const GLenum STREAM_READ = 0x88E1;
  58. const GLenum STREAM_COPY = 0x88E2;
  59. const GLenum STATIC_READ = 0x88E5;
  60. const GLenum STATIC_COPY = 0x88E6;
  61. const GLenum DYNAMIC_READ = 0x88E9;
  62. const GLenum DYNAMIC_COPY = 0x88EA;
  63. const GLenum MAX_DRAW_BUFFERS = 0x8824;
  64. const GLenum DRAW_BUFFER0 = 0x8825;
  65. const GLenum DRAW_BUFFER1 = 0x8826;
  66. const GLenum DRAW_BUFFER2 = 0x8827;
  67. const GLenum DRAW_BUFFER3 = 0x8828;
  68. const GLenum DRAW_BUFFER4 = 0x8829;
  69. const GLenum DRAW_BUFFER5 = 0x882A;
  70. const GLenum DRAW_BUFFER6 = 0x882B;
  71. const GLenum DRAW_BUFFER7 = 0x882C;
  72. const GLenum DRAW_BUFFER8 = 0x882D;
  73. const GLenum DRAW_BUFFER9 = 0x882E;
  74. const GLenum DRAW_BUFFER10 = 0x882F;
  75. const GLenum DRAW_BUFFER11 = 0x8830;
  76. const GLenum DRAW_BUFFER12 = 0x8831;
  77. const GLenum DRAW_BUFFER13 = 0x8832;
  78. const GLenum DRAW_BUFFER14 = 0x8833;
  79. const GLenum DRAW_BUFFER15 = 0x8834;
  80. const GLenum MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49;
  81. const GLenum MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A;
  82. const GLenum SAMPLER_3D = 0x8B5F;
  83. const GLenum SAMPLER_2D_SHADOW = 0x8B62;
  84. const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B;
  85. const GLenum PIXEL_PACK_BUFFER = 0x88EB;
  86. const GLenum PIXEL_UNPACK_BUFFER = 0x88EC;
  87. const GLenum PIXEL_PACK_BUFFER_BINDING = 0x88ED;
  88. const GLenum PIXEL_UNPACK_BUFFER_BINDING = 0x88EF;
  89. const GLenum FLOAT_MAT2x3 = 0x8B65;
  90. const GLenum FLOAT_MAT2x4 = 0x8B66;
  91. const GLenum FLOAT_MAT3x2 = 0x8B67;
  92. const GLenum FLOAT_MAT3x4 = 0x8B68;
  93. const GLenum FLOAT_MAT4x2 = 0x8B69;
  94. const GLenum FLOAT_MAT4x3 = 0x8B6A;
  95. const GLenum SRGB = 0x8C40;
  96. const GLenum SRGB8 = 0x8C41;
  97. const GLenum SRGB8_ALPHA8 = 0x8C43;
  98. const GLenum COMPARE_REF_TO_TEXTURE = 0x884E;
  99. const GLenum RGBA32F = 0x8814;
  100. const GLenum RGB32F = 0x8815;
  101. const GLenum RGBA16F = 0x881A;
  102. const GLenum RGB16F = 0x881B;
  103. const GLenum VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD;
  104. const GLenum MAX_ARRAY_TEXTURE_LAYERS = 0x88FF;
  105. const GLenum MIN_PROGRAM_TEXEL_OFFSET = 0x8904;
  106. const GLenum MAX_PROGRAM_TEXEL_OFFSET = 0x8905;
  107. const GLenum MAX_VARYING_COMPONENTS = 0x8B4B;
  108. const GLenum TEXTURE_2D_ARRAY = 0x8C1A;
  109. const GLenum TEXTURE_BINDING_2D_ARRAY = 0x8C1D;
  110. const GLenum R11F_G11F_B10F = 0x8C3A;
  111. const GLenum UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B;
  112. const GLenum RGB9_E5 = 0x8C3D;
  113. const GLenum UNSIGNED_INT_5_9_9_9_REV = 0x8C3E;
  114. const GLenum TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F;
  115. const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80;
  116. const GLenum TRANSFORM_FEEDBACK_VARYINGS = 0x8C83;
  117. const GLenum TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84;
  118. const GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85;
  119. const GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88;
  120. const GLenum RASTERIZER_DISCARD = 0x8C89;
  121. const GLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A;
  122. const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B;
  123. const GLenum INTERLEAVED_ATTRIBS = 0x8C8C;
  124. const GLenum SEPARATE_ATTRIBS = 0x8C8D;
  125. const GLenum TRANSFORM_FEEDBACK_BUFFER = 0x8C8E;
  126. const GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F;
  127. const GLenum RGBA32UI = 0x8D70;
  128. const GLenum RGB32UI = 0x8D71;
  129. const GLenum RGBA16UI = 0x8D76;
  130. const GLenum RGB16UI = 0x8D77;
  131. const GLenum RGBA8UI = 0x8D7C;
  132. const GLenum RGB8UI = 0x8D7D;
  133. const GLenum RGBA32I = 0x8D82;
  134. const GLenum RGB32I = 0x8D83;
  135. const GLenum RGBA16I = 0x8D88;
  136. const GLenum RGB16I = 0x8D89;
  137. const GLenum RGBA8I = 0x8D8E;
  138. const GLenum RGB8I = 0x8D8F;
  139. const GLenum RED_INTEGER = 0x8D94;
  140. const GLenum RGB_INTEGER = 0x8D98;
  141. const GLenum RGBA_INTEGER = 0x8D99;
  142. const GLenum SAMPLER_2D_ARRAY = 0x8DC1;
  143. const GLenum SAMPLER_2D_ARRAY_SHADOW = 0x8DC4;
  144. const GLenum SAMPLER_CUBE_SHADOW = 0x8DC5;
  145. const GLenum UNSIGNED_INT_VEC2 = 0x8DC6;
  146. const GLenum UNSIGNED_INT_VEC3 = 0x8DC7;
  147. const GLenum UNSIGNED_INT_VEC4 = 0x8DC8;
  148. const GLenum INT_SAMPLER_2D = 0x8DCA;
  149. const GLenum INT_SAMPLER_3D = 0x8DCB;
  150. const GLenum INT_SAMPLER_CUBE = 0x8DCC;
  151. const GLenum INT_SAMPLER_2D_ARRAY = 0x8DCF;
  152. const GLenum UNSIGNED_INT_SAMPLER_2D = 0x8DD2;
  153. const GLenum UNSIGNED_INT_SAMPLER_3D = 0x8DD3;
  154. const GLenum UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4;
  155. const GLenum UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7;
  156. const GLenum DEPTH_COMPONENT32F = 0x8CAC;
  157. const GLenum DEPTH32F_STENCIL8 = 0x8CAD;
  158. const GLenum FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD;
  159. const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210;
  160. const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211;
  161. const GLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212;
  162. const GLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213;
  163. const GLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214;
  164. const GLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215;
  165. const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216;
  166. const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217;
  167. const GLenum FRAMEBUFFER_DEFAULT = 0x8218;
  168. const GLenum UNSIGNED_INT_24_8 = 0x84FA;
  169. const GLenum DEPTH24_STENCIL8 = 0x88F0;
  170. const GLenum UNSIGNED_NORMALIZED = 0x8C17;
  171. const GLenum DRAW_FRAMEBUFFER_BINDING = 0x8CA6; // Same as FRAMEBUFFER_BINDING
  172. const GLenum READ_FRAMEBUFFER = 0x8CA8;
  173. const GLenum DRAW_FRAMEBUFFER = 0x8CA9;
  174. const GLenum READ_FRAMEBUFFER_BINDING = 0x8CAA;
  175. const GLenum RENDERBUFFER_SAMPLES = 0x8CAB;
  176. const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4;
  177. const GLenum MAX_COLOR_ATTACHMENTS = 0x8CDF;
  178. const GLenum COLOR_ATTACHMENT1 = 0x8CE1;
  179. const GLenum COLOR_ATTACHMENT2 = 0x8CE2;
  180. const GLenum COLOR_ATTACHMENT3 = 0x8CE3;
  181. const GLenum COLOR_ATTACHMENT4 = 0x8CE4;
  182. const GLenum COLOR_ATTACHMENT5 = 0x8CE5;
  183. const GLenum COLOR_ATTACHMENT6 = 0x8CE6;
  184. const GLenum COLOR_ATTACHMENT7 = 0x8CE7;
  185. const GLenum COLOR_ATTACHMENT8 = 0x8CE8;
  186. const GLenum COLOR_ATTACHMENT9 = 0x8CE9;
  187. const GLenum COLOR_ATTACHMENT10 = 0x8CEA;
  188. const GLenum COLOR_ATTACHMENT11 = 0x8CEB;
  189. const GLenum COLOR_ATTACHMENT12 = 0x8CEC;
  190. const GLenum COLOR_ATTACHMENT13 = 0x8CED;
  191. const GLenum COLOR_ATTACHMENT14 = 0x8CEE;
  192. const GLenum COLOR_ATTACHMENT15 = 0x8CEF;
  193. const GLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56;
  194. const GLenum MAX_SAMPLES = 0x8D57;
  195. const GLenum HALF_FLOAT = 0x140B;
  196. const GLenum RG = 0x8227;
  197. const GLenum RG_INTEGER = 0x8228;
  198. const GLenum R8 = 0x8229;
  199. const GLenum RG8 = 0x822B;
  200. const GLenum R16F = 0x822D;
  201. const GLenum R32F = 0x822E;
  202. const GLenum RG16F = 0x822F;
  203. const GLenum RG32F = 0x8230;
  204. const GLenum R8I = 0x8231;
  205. const GLenum R8UI = 0x8232;
  206. const GLenum R16I = 0x8233;
  207. const GLenum R16UI = 0x8234;
  208. const GLenum R32I = 0x8235;
  209. const GLenum R32UI = 0x8236;
  210. const GLenum RG8I = 0x8237;
  211. const GLenum RG8UI = 0x8238;
  212. const GLenum RG16I = 0x8239;
  213. const GLenum RG16UI = 0x823A;
  214. const GLenum RG32I = 0x823B;
  215. const GLenum RG32UI = 0x823C;
  216. const GLenum VERTEX_ARRAY_BINDING = 0x85B5;
  217. const GLenum R8_SNORM = 0x8F94;
  218. const GLenum RG8_SNORM = 0x8F95;
  219. const GLenum RGB8_SNORM = 0x8F96;
  220. const GLenum RGBA8_SNORM = 0x8F97;
  221. const GLenum SIGNED_NORMALIZED = 0x8F9C;
  222. const GLenum COPY_READ_BUFFER = 0x8F36;
  223. const GLenum COPY_WRITE_BUFFER = 0x8F37;
  224. const GLenum COPY_READ_BUFFER_BINDING = 0x8F36; // Same as COPY_READ_BUFFER
  225. const GLenum COPY_WRITE_BUFFER_BINDING = 0x8F37; // Same as COPY_WRITE_BUFFER
  226. const GLenum UNIFORM_BUFFER = 0x8A11;
  227. const GLenum UNIFORM_BUFFER_BINDING = 0x8A28;
  228. const GLenum UNIFORM_BUFFER_START = 0x8A29;
  229. const GLenum UNIFORM_BUFFER_SIZE = 0x8A2A;
  230. const GLenum MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B;
  231. const GLenum MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D;
  232. const GLenum MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E;
  233. const GLenum MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F;
  234. const GLenum MAX_UNIFORM_BLOCK_SIZE = 0x8A30;
  235. const GLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31;
  236. const GLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33;
  237. const GLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34;
  238. const GLenum ACTIVE_UNIFORM_BLOCKS = 0x8A36;
  239. const GLenum UNIFORM_TYPE = 0x8A37;
  240. const GLenum UNIFORM_SIZE = 0x8A38;
  241. const GLenum UNIFORM_BLOCK_INDEX = 0x8A3A;
  242. const GLenum UNIFORM_OFFSET = 0x8A3B;
  243. const GLenum UNIFORM_ARRAY_STRIDE = 0x8A3C;
  244. const GLenum UNIFORM_MATRIX_STRIDE = 0x8A3D;
  245. const GLenum UNIFORM_IS_ROW_MAJOR = 0x8A3E;
  246. const GLenum UNIFORM_BLOCK_BINDING = 0x8A3F;
  247. const GLenum UNIFORM_BLOCK_DATA_SIZE = 0x8A40;
  248. const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42;
  249. const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43;
  250. const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44;
  251. const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46;
  252. const GLenum INVALID_INDEX = 0xFFFFFFFF;
  253. const GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122;
  254. const GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125;
  255. const GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111;
  256. const GLenum OBJECT_TYPE = 0x9112;
  257. const GLenum SYNC_CONDITION = 0x9113;
  258. const GLenum SYNC_STATUS = 0x9114;
  259. const GLenum SYNC_FLAGS = 0x9115;
  260. const GLenum SYNC_FENCE = 0x9116;
  261. const GLenum SYNC_GPU_COMMANDS_COMPLETE = 0x9117;
  262. const GLenum UNSIGNALED = 0x9118;
  263. const GLenum SIGNALED = 0x9119;
  264. const GLenum ALREADY_SIGNALED = 0x911A;
  265. const GLenum TIMEOUT_EXPIRED = 0x911B;
  266. const GLenum CONDITION_SATISFIED = 0x911C;
  267. const GLenum WAIT_FAILED = 0x911D;
  268. const GLenum SYNC_FLUSH_COMMANDS_BIT = 0x00000001;
  269. const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE;
  270. const GLenum ANY_SAMPLES_PASSED = 0x8C2F;
  271. const GLenum ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A;
  272. const GLenum SAMPLER_BINDING = 0x8919;
  273. const GLenum RGB10_A2UI = 0x906F;
  274. const GLenum INT_2_10_10_10_REV = 0x8D9F;
  275. const GLenum TRANSFORM_FEEDBACK = 0x8E22;
  276. const GLenum TRANSFORM_FEEDBACK_PAUSED = 0x8E23;
  277. const GLenum TRANSFORM_FEEDBACK_ACTIVE = 0x8E24;
  278. const GLenum TRANSFORM_FEEDBACK_BINDING = 0x8E25;
  279. const GLenum TEXTURE_IMMUTABLE_FORMAT = 0x912F;
  280. const GLenum MAX_ELEMENT_INDEX = 0x8D6B;
  281. const GLenum TEXTURE_IMMUTABLE_LEVELS = 0x82DF;
  282. const GLint64 TIMEOUT_IGNORED = -1;
  283. // WebGL-specific enums
  284. const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
  285. // Buffer objects
  286. [FIXME] undefined copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
  287. // MapBufferRange, in particular its read-only and write-only modes,
  288. // can not be exposed safely to JavaScript. GetBufferSubData
  289. // replaces it for the purpose of fetching data back from the GPU.
  290. [FIXME] undefined getBufferSubData(GLenum target, GLintptr srcByteOffset, [AllowShared] ArrayBufferView dstBuffer, optional unsigned long long dstOffset = 0, optional GLuint length = 0);
  291. // Framebuffer objects
  292. [FIXME] undefined blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
  293. [FIXME] undefined framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level, GLint layer);
  294. [FIXME] undefined invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
  295. [FIXME] undefined invalidateSubFramebuffer(GLenum target, sequence<GLenum> attachments, GLint x, GLint y, GLsizei width, GLsizei height);
  296. [FIXME] undefined readBuffer(GLenum src);
  297. // Renderbuffer objects
  298. [FIXME] any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname);
  299. [FIXME] undefined renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
  300. // Texture objects
  301. undefined texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
  302. [FIXME] undefined texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
  303. [FIXME] undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
  304. // May throw DOMException
  305. [FIXME] undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, TexImageSource source);
  306. undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData);
  307. [FIXME] undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData, unsigned long long srcOffset);
  308. [FIXME] undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLintptr pboOffset);
  309. // May throw DOMException
  310. [FIXME] undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, TexImageSource source);
  311. [FIXME] undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData, optional unsigned long long srcOffset = 0);
  312. [FIXME] undefined copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
  313. [FIXME] undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset);
  314. [FIXME] undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData, optional unsigned long long srcOffset = 0, optional GLuint srcLengthOverride = 0);
  315. [FIXME] undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLintptr offset);
  316. [FIXME] undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, [AllowShared] ArrayBufferView srcData, optional unsigned long long srcOffset = 0, optional GLuint srcLengthOverride = 0);
  317. // Programs and shaders
  318. [FIXME] GLint getFragDataLocation(WebGLProgram program, DOMString name); // [WebGLHandlesContextLoss]
  319. // Uniforms
  320. [FIXME] undefined uniform1ui(WebGLUniformLocation? location, GLuint v0);
  321. [FIXME] undefined uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
  322. [FIXME] undefined uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
  323. [FIXME] undefined uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
  324. [FIXME] undefined uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  325. [FIXME] undefined uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  326. [FIXME] undefined uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  327. [FIXME] undefined uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  328. [FIXME] undefined uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  329. [FIXME] undefined uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  330. [FIXME] undefined uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  331. [FIXME] undefined uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  332. [FIXME] undefined uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  333. [FIXME] undefined uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
  334. // Vertex attributes
  335. [FIXME] undefined vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
  336. [FIXME] undefined vertexAttribI4iv(GLuint index, Int32List values);
  337. [FIXME] undefined vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
  338. [FIXME] undefined vertexAttribI4uiv(GLuint index, Uint32List values);
  339. [FIXME] undefined vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
  340. // Writing to the drawing buffer
  341. [FIXME] undefined vertexAttribDivisor(GLuint index, GLuint divisor);
  342. [FIXME] undefined drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
  343. [FIXME] undefined drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
  344. [FIXME] undefined drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
  345. // Multiple Render Targets
  346. undefined drawBuffers(sequence<GLenum> buffers);
  347. [FIXME] undefined clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List values, optional unsigned long long srcOffset = 0);
  348. [FIXME] undefined clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values, optional unsigned long long srcOffset = 0);
  349. [FIXME] undefined clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values, optional unsigned long long srcOffset = 0);
  350. [FIXME] undefined clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
  351. // Query Objects
  352. [FIXME] WebGLQuery createQuery();
  353. [FIXME] undefined deleteQuery(WebGLQuery? query);
  354. [FIXME] GLboolean isQuery(WebGLQuery? query); // [WebGLHandlesContextLoss]
  355. [FIXME] undefined beginQuery(GLenum target, WebGLQuery query);
  356. [FIXME] undefined endQuery(GLenum target);
  357. [FIXME] WebGLQuery? getQuery(GLenum target, GLenum pname);
  358. [FIXME] any getQueryParameter(WebGLQuery query, GLenum pname);
  359. // Sampler Objects
  360. WebGLSampler createSampler();
  361. [FIXME] undefined deleteSampler(WebGLSampler? sampler);
  362. [FIXME] GLboolean isSampler(WebGLSampler? sampler); // [WebGLHandlesContextLoss]
  363. [FIXME] undefined bindSampler(GLuint unit, WebGLSampler? sampler);
  364. [FIXME] undefined samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param);
  365. [FIXME] undefined samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param);
  366. [FIXME] any getSamplerParameter(WebGLSampler sampler, GLenum pname);
  367. // Sync objects
  368. [FIXME] WebGLSync? fenceSync(GLenum condition, GLbitfield flags);
  369. [FIXME] GLboolean isSync(WebGLSync? sync); // [WebGLHandlesContextLoss]
  370. [FIXME] undefined deleteSync(WebGLSync? sync);
  371. [FIXME] GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
  372. [FIXME] undefined waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout);
  373. [FIXME] any getSyncParameter(WebGLSync sync, GLenum pname);
  374. // Transform Feedback
  375. [FIXME] WebGLTransformFeedback createTransformFeedback();
  376. [FIXME] undefined deleteTransformFeedback(WebGLTransformFeedback? tf);
  377. [FIXME] GLboolean isTransformFeedback(WebGLTransformFeedback? tf); // [WebGLHandlesContextLoss]
  378. [FIXME] undefined bindTransformFeedback (GLenum target, WebGLTransformFeedback? tf);
  379. [FIXME] undefined beginTransformFeedback(GLenum primitiveMode);
  380. [FIXME] undefined endTransformFeedback();
  381. [FIXME] undefined transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode);
  382. [FIXME] WebGLActiveInfo? getTransformFeedbackVarying(WebGLProgram program, GLuint index);
  383. [FIXME] undefined pauseTransformFeedback();
  384. [FIXME] undefined resumeTransformFeedback();
  385. // Uniform Buffer Objects and Transform Feedback Buffers
  386. [FIXME] undefined bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
  387. [FIXME] undefined bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
  388. [FIXME] any getIndexedParameter(GLenum target, GLuint index);
  389. [FIXME] sequence<GLuint>? getUniformIndices(WebGLProgram program, sequence<DOMString> uniformNames);
  390. [FIXME] any getActiveUniforms(WebGLProgram program, sequence<GLuint> uniformIndices, GLenum pname);
  391. [FIXME] GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName);
  392. [FIXME] any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname);
  393. [FIXME] DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex);
  394. [FIXME] undefined uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
  395. // Vertex Array Objects
  396. WebGLVertexArrayObject createVertexArray();
  397. undefined deleteVertexArray(WebGLVertexArrayObject? vertexArray);
  398. GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray); // [WebGLHandlesContextLoss]
  399. undefined bindVertexArray(WebGLVertexArrayObject? array);
  400. };