@luma.gl/webgl 8.6.0-alpha.1 → 8.6.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (651) hide show
  1. package/dist/api/device2.d.ts +52 -0
  2. package/dist/api/device2.d.ts.map +1 -0
  3. package/dist/api/device2.js +23 -0
  4. package/dist/api/device2.js.map +1 -0
  5. package/dist/classes/accessor.js +2 -2
  6. package/dist/classes/accessor.js.map +1 -1
  7. package/dist/classes/accessor.ts.disabled +1 -1
  8. package/dist/classes/clear.d.ts +3 -2
  9. package/dist/classes/clear.d.ts.map +1 -1
  10. package/dist/classes/clear.js +7 -4
  11. package/dist/classes/clear.js.map +1 -1
  12. package/dist/classes/copy-and-blit.d.ts +18 -1
  13. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  14. package/dist/classes/copy-and-blit.js +30 -25
  15. package/dist/classes/copy-and-blit.js.map +1 -1
  16. package/dist/classes/framebuffer.d.ts +10 -1
  17. package/dist/classes/framebuffer.d.ts.map +1 -1
  18. package/dist/classes/framebuffer.js +15 -15
  19. package/dist/classes/framebuffer.js.map +1 -1
  20. package/dist/classes/program-configuration.d.ts +2 -2
  21. package/dist/classes/program-configuration.d.ts.map +1 -1
  22. package/dist/classes/program-configuration.js +1 -1
  23. package/dist/classes/program-configuration.js.map +1 -1
  24. package/dist/classes/program.d.ts +6 -6
  25. package/dist/classes/program.d.ts.map +1 -1
  26. package/dist/classes/program.js +11 -9
  27. package/dist/classes/program.js.map +1 -1
  28. package/dist/classes/query.d.ts.map +1 -1
  29. package/dist/classes/query.js +6 -5
  30. package/dist/classes/query.js.map +1 -1
  31. package/dist/classes/renderbuffer-formats.js +1 -1
  32. package/dist/classes/renderbuffer-formats.js.map +1 -1
  33. package/dist/classes/renderbuffer.d.ts.map +1 -1
  34. package/dist/classes/renderbuffer.js +4 -3
  35. package/dist/classes/renderbuffer.js.map +1 -1
  36. package/dist/classes/texture-2d.d.ts +4 -3
  37. package/dist/classes/texture-2d.d.ts.map +1 -1
  38. package/dist/classes/texture-2d.js +5 -8
  39. package/dist/classes/texture-2d.js.map +1 -1
  40. package/dist/classes/texture-3d.d.ts +3 -2
  41. package/dist/classes/texture-3d.d.ts.map +1 -1
  42. package/dist/classes/texture-3d.js +15 -6
  43. package/dist/classes/texture-3d.js.map +1 -1
  44. package/dist/classes/texture-cube.d.ts +2 -1
  45. package/dist/classes/texture-cube.d.ts.map +1 -1
  46. package/dist/classes/texture-cube.js +3 -4
  47. package/dist/classes/texture-cube.js.map +1 -1
  48. package/dist/classes/texture-formats.js +1 -1
  49. package/dist/classes/texture-formats.js.map +1 -1
  50. package/dist/classes/texture.d.ts +14 -9
  51. package/dist/classes/texture.d.ts.map +1 -1
  52. package/dist/classes/texture.js +19 -18
  53. package/dist/classes/texture.js.map +1 -1
  54. package/dist/classes/transform-feedback.d.ts.map +1 -1
  55. package/dist/classes/transform-feedback.js +5 -4
  56. package/dist/classes/transform-feedback.js.map +1 -1
  57. package/dist/classes/uniform-buffer-layout.js +1 -1
  58. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  59. package/dist/classes/uniforms.d.ts +0 -1
  60. package/dist/classes/uniforms.d.ts.map +1 -1
  61. package/dist/classes/uniforms.js +1 -2
  62. package/dist/classes/uniforms.js.map +1 -1
  63. package/dist/classes/vertex-array-object.d.ts +1 -1
  64. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  65. package/dist/classes/vertex-array-object.js +8 -9
  66. package/dist/classes/vertex-array-object.js.map +1 -1
  67. package/dist/classes/vertex-array.d.ts +1 -1
  68. package/dist/classes/vertex-array.d.ts.map +1 -1
  69. package/dist/classes/vertex-array.js +1 -2
  70. package/dist/classes/vertex-array.js.map +1 -1
  71. package/dist/classes/webgl-buffer.d.ts +2 -0
  72. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  73. package/dist/classes/webgl-buffer.js +8 -5
  74. package/dist/classes/webgl-buffer.js.map +1 -1
  75. package/dist/classes/webgl-resource.d.ts +6 -4
  76. package/dist/classes/webgl-resource.d.ts.map +1 -1
  77. package/dist/classes/webgl-resource.js +12 -8
  78. package/dist/classes/webgl-resource.js.map +1 -1
  79. package/dist/classes/webgl-shader.d.ts +3 -1
  80. package/dist/classes/webgl-shader.d.ts.map +1 -1
  81. package/dist/classes/webgl-shader.js +7 -4
  82. package/dist/classes/webgl-shader.js.map +1 -1
  83. package/dist/context/context/context-state.d.ts +18 -0
  84. package/dist/context/context/context-state.d.ts.map +1 -0
  85. package/dist/context/context/context-state.js +26 -0
  86. package/dist/context/context/context-state.js.map +1 -0
  87. package/dist/context/context/create-context.d.ts +40 -0
  88. package/dist/context/context/create-context.d.ts.map +1 -0
  89. package/dist/context/context/create-context.js +37 -0
  90. package/dist/context/context/create-context.js.map +1 -0
  91. package/dist/context/context/device-pixels.d.ts +25 -0
  92. package/dist/context/context/device-pixels.d.ts.map +1 -0
  93. package/dist/context/context/device-pixels.js +98 -0
  94. package/dist/context/context/device-pixels.js.map +1 -0
  95. package/dist/context/context/get-canvas.d.ts +13 -0
  96. package/dist/context/context/get-canvas.d.ts.map +1 -0
  97. package/dist/context/context/get-canvas.js +31 -0
  98. package/dist/context/context/get-canvas.js.map +1 -0
  99. package/dist/context/context/resize-context.d.ts +20 -0
  100. package/dist/context/context/resize-context.d.ts.map +1 -0
  101. package/dist/context/context/resize-context.js +15 -0
  102. package/dist/context/context/resize-context.js.map +1 -0
  103. package/dist/context/context/webgl-checks.d.ts +13 -0
  104. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  105. package/dist/context/context/webgl-checks.js +34 -0
  106. package/dist/context/context/webgl-checks.js.map +1 -0
  107. package/dist/context/parameters/unified-parameter-api.d.ts +30 -0
  108. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  109. package/dist/context/parameters/unified-parameter-api.js +65 -0
  110. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  111. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  112. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  113. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  114. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  115. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  116. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  117. package/dist/context/parameters/webgl-parameters.js +2 -0
  118. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  119. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  120. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  121. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  122. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  123. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  124. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  125. package/dist/context/polyfill/polyfill-context.js +91 -0
  126. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  127. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  128. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  129. package/dist/context/polyfill/polyfill-table.js +160 -0
  130. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  132. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  133. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  135. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  136. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  141. package/dist/context/state-tracker/track-context-state.js +169 -0
  142. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  143. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  144. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  145. package/dist/context/state-tracker/with-parameters.js +36 -0
  146. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  147. package/dist/debug/debug-uniforms.js +1 -1
  148. package/dist/debug/debug-uniforms.js.map +1 -1
  149. package/dist/debug/debug-vertex-array.js +2 -2
  150. package/dist/debug/debug-vertex-array.js.map +1 -1
  151. package/dist/device/check-glsl-extension.d.ts +4 -0
  152. package/dist/device/check-glsl-extension.d.ts.map +1 -0
  153. package/dist/device/check-glsl-extension.js +22 -0
  154. package/dist/device/check-glsl-extension.js.map +1 -0
  155. package/dist/device/device-features.d.ts +12 -0
  156. package/dist/device/device-features.d.ts.map +1 -0
  157. package/dist/device/device-features.js +123 -0
  158. package/dist/device/device-features.js.map +1 -0
  159. package/dist/device/device-limits.d.ts +51 -0
  160. package/dist/device/device-limits.d.ts.map +1 -0
  161. package/dist/device/device-limits.js +90 -0
  162. package/dist/device/device-limits.js.map +1 -0
  163. package/dist/device/get-device-info.d.ts +4 -0
  164. package/dist/device/get-device-info.d.ts.map +1 -0
  165. package/dist/device/get-device-info.js +44 -0
  166. package/dist/device/get-device-info.js.map +1 -0
  167. package/dist/device/webgl-device.d.ts +111 -0
  168. package/dist/device/webgl-device.d.ts.map +1 -0
  169. package/dist/device/webgl-device.js +208 -0
  170. package/dist/device/webgl-device.js.map +1 -0
  171. package/dist/es5/api/device2.js +42 -0
  172. package/dist/es5/api/device2.js.map +1 -0
  173. package/dist/es5/bundle.js +1 -1
  174. package/dist/es5/bundle.js.map +1 -1
  175. package/dist/es5/classes/accessor.js +104 -74
  176. package/dist/es5/classes/accessor.js.map +1 -1
  177. package/dist/es5/classes/accessor.ts.disabled +1 -1
  178. package/dist/es5/classes/clear.js +55 -34
  179. package/dist/es5/classes/clear.js.map +1 -1
  180. package/dist/es5/classes/copy-and-blit.js +175 -156
  181. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  182. package/dist/es5/classes/framebuffer.js +647 -518
  183. package/dist/es5/classes/framebuffer.js.map +1 -1
  184. package/dist/es5/classes/program-configuration.js +138 -121
  185. package/dist/es5/classes/program-configuration.js.map +1 -1
  186. package/dist/es5/classes/program.js +368 -292
  187. package/dist/es5/classes/program.js.map +1 -1
  188. package/dist/es5/classes/query.js +172 -107
  189. package/dist/es5/classes/query.js.map +1 -1
  190. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  191. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  192. package/dist/es5/classes/renderbuffer.js +151 -98
  193. package/dist/es5/classes/renderbuffer.js.map +1 -1
  194. package/dist/es5/classes/texture-2d.js +44 -17
  195. package/dist/es5/classes/texture-2d.js.map +1 -1
  196. package/dist/es5/classes/texture-3d.js +107 -48
  197. package/dist/es5/classes/texture-3d.js.map +1 -1
  198. package/dist/es5/classes/texture-cube.js +169 -110
  199. package/dist/es5/classes/texture-cube.js.map +1 -1
  200. package/dist/es5/classes/texture-formats.js +42 -71
  201. package/dist/es5/classes/texture-formats.js.map +1 -1
  202. package/dist/es5/classes/texture.js +780 -665
  203. package/dist/es5/classes/texture.js.map +1 -1
  204. package/dist/es5/classes/transform-feedback.js +206 -150
  205. package/dist/es5/classes/transform-feedback.js.map +1 -1
  206. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  207. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  208. package/dist/es5/classes/uniforms.js +39 -80
  209. package/dist/es5/classes/uniforms.js.map +1 -1
  210. package/dist/es5/classes/vertex-array-object.js +268 -209
  211. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  212. package/dist/es5/classes/vertex-array.js +348 -303
  213. package/dist/es5/classes/vertex-array.js.map +1 -1
  214. package/dist/es5/classes/webgl-buffer.js +374 -303
  215. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  216. package/dist/es5/classes/webgl-resource.js +231 -161
  217. package/dist/es5/classes/webgl-resource.js.map +1 -1
  218. package/dist/es5/classes/webgl-shader.js +230 -134
  219. package/dist/es5/classes/webgl-shader.js.map +1 -1
  220. package/dist/es5/context/context/context-state.js +31 -0
  221. package/dist/es5/context/context/context-state.js.map +1 -0
  222. package/dist/es5/context/context/create-context.js +57 -0
  223. package/dist/es5/context/context/create-context.js.map +1 -0
  224. package/dist/es5/context/context/device-pixels.js +115 -0
  225. package/dist/es5/context/context/device-pixels.js.map +1 -0
  226. package/dist/es5/context/context/get-canvas.js +40 -0
  227. package/dist/es5/context/context/get-canvas.js.map +1 -0
  228. package/dist/es5/context/context/resize-context.js +23 -0
  229. package/dist/es5/context/context/resize-context.js.map +1 -0
  230. package/dist/es5/context/context/webgl-checks.js +54 -0
  231. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  232. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  233. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  234. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  235. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  236. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  237. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  238. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  239. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  240. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  241. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  242. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  243. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  244. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  245. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  246. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  247. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  248. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  249. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  250. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  251. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  252. package/dist/es5/debug/debug-program-configuration.js +48 -20
  253. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  254. package/dist/es5/debug/debug-uniforms.js +110 -70
  255. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  256. package/dist/es5/debug/debug-vertex-array.js +49 -54
  257. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  258. package/dist/es5/device/check-glsl-extension.js +33 -0
  259. package/dist/es5/device/check-glsl-extension.js.map +1 -0
  260. package/dist/es5/device/device-features.js +152 -0
  261. package/dist/es5/device/device-features.js.map +1 -0
  262. package/dist/es5/device/device-limits.js +64 -0
  263. package/dist/es5/device/device-limits.js.map +1 -0
  264. package/dist/es5/device/get-device-info.js +55 -0
  265. package/dist/es5/device/get-device-info.js.map +1 -0
  266. package/dist/es5/device/webgl-device.js +279 -0
  267. package/dist/es5/device/webgl-device.js.map +1 -0
  268. package/dist/es5/index.js +179 -189
  269. package/dist/es5/index.js.map +1 -1
  270. package/dist/es5/init.js +18 -14
  271. package/dist/es5/init.js.map +1 -1
  272. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  273. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  274. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  275. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  276. package/dist/es5/webgl-utils/format-utils.js +4 -4
  277. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  278. package/dist/es5/webgl-utils/get-error.js +18 -18
  279. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  280. package/dist/es5/webgl-utils/index.js +10 -10
  281. package/dist/es5/webgl-utils/is-old-ie.js +16 -0
  282. package/dist/es5/webgl-utils/is-old-ie.js.map +1 -0
  283. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  284. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  285. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  286. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  287. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  288. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  289. package/dist/es5/webgl-utils/webgl-info.ts.disabled +135 -0
  290. package/dist/esm/api/device2.js +23 -0
  291. package/dist/esm/api/device2.js.map +1 -0
  292. package/dist/esm/classes/accessor.js +2 -2
  293. package/dist/esm/classes/accessor.js.map +1 -1
  294. package/dist/esm/classes/accessor.ts.disabled +1 -1
  295. package/dist/esm/classes/clear.js +7 -4
  296. package/dist/esm/classes/clear.js.map +1 -1
  297. package/dist/esm/classes/copy-and-blit.js +30 -25
  298. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  299. package/dist/esm/classes/framebuffer.js +15 -15
  300. package/dist/esm/classes/framebuffer.js.map +1 -1
  301. package/dist/esm/classes/program-configuration.js +1 -1
  302. package/dist/esm/classes/program-configuration.js.map +1 -1
  303. package/dist/esm/classes/program.js +11 -9
  304. package/dist/esm/classes/program.js.map +1 -1
  305. package/dist/esm/classes/query.js +6 -5
  306. package/dist/esm/classes/query.js.map +1 -1
  307. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  308. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  309. package/dist/esm/classes/renderbuffer.js +4 -3
  310. package/dist/esm/classes/renderbuffer.js.map +1 -1
  311. package/dist/esm/classes/texture-2d.js +5 -8
  312. package/dist/esm/classes/texture-2d.js.map +1 -1
  313. package/dist/esm/classes/texture-3d.js +15 -6
  314. package/dist/esm/classes/texture-3d.js.map +1 -1
  315. package/dist/esm/classes/texture-cube.js +3 -4
  316. package/dist/esm/classes/texture-cube.js.map +1 -1
  317. package/dist/esm/classes/texture-formats.js +1 -1
  318. package/dist/esm/classes/texture-formats.js.map +1 -1
  319. package/dist/esm/classes/texture.js +19 -18
  320. package/dist/esm/classes/texture.js.map +1 -1
  321. package/dist/esm/classes/transform-feedback.js +5 -4
  322. package/dist/esm/classes/transform-feedback.js.map +1 -1
  323. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  324. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  325. package/dist/esm/classes/uniforms.js +1 -2
  326. package/dist/esm/classes/uniforms.js.map +1 -1
  327. package/dist/esm/classes/vertex-array-object.js +8 -9
  328. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  329. package/dist/esm/classes/vertex-array.js +1 -2
  330. package/dist/esm/classes/vertex-array.js.map +1 -1
  331. package/dist/esm/classes/webgl-buffer.js +8 -5
  332. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  333. package/dist/esm/classes/webgl-resource.js +12 -8
  334. package/dist/esm/classes/webgl-resource.js.map +1 -1
  335. package/dist/esm/classes/webgl-shader.js +7 -4
  336. package/dist/esm/classes/webgl-shader.js.map +1 -1
  337. package/dist/esm/context/context/context-state.js +26 -0
  338. package/dist/esm/context/context/context-state.js.map +1 -0
  339. package/dist/esm/context/context/create-context.js +37 -0
  340. package/dist/esm/context/context/create-context.js.map +1 -0
  341. package/dist/esm/context/context/device-pixels.js +98 -0
  342. package/dist/esm/context/context/device-pixels.js.map +1 -0
  343. package/dist/esm/context/context/get-canvas.js +31 -0
  344. package/dist/esm/context/context/get-canvas.js.map +1 -0
  345. package/dist/esm/context/context/resize-context.js +15 -0
  346. package/dist/esm/context/context/resize-context.js.map +1 -0
  347. package/dist/esm/context/context/webgl-checks.js +34 -0
  348. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  349. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  350. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  351. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  352. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  353. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  354. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  355. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  356. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  357. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  358. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  359. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  360. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  361. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  362. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  363. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  364. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  365. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  366. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  367. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  368. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  369. package/dist/esm/debug/debug-uniforms.js +1 -1
  370. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  371. package/dist/esm/debug/debug-vertex-array.js +2 -2
  372. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  373. package/dist/esm/device/check-glsl-extension.js +22 -0
  374. package/dist/esm/device/check-glsl-extension.js.map +1 -0
  375. package/dist/esm/device/device-features.js +123 -0
  376. package/dist/esm/device/device-features.js.map +1 -0
  377. package/dist/esm/device/device-limits.js +90 -0
  378. package/dist/esm/device/device-limits.js.map +1 -0
  379. package/dist/esm/device/get-device-info.js +44 -0
  380. package/dist/esm/device/get-device-info.js.map +1 -0
  381. package/dist/esm/device/webgl-device.js +208 -0
  382. package/dist/esm/device/webgl-device.js.map +1 -0
  383. package/dist/esm/index.js +22 -20
  384. package/dist/esm/index.js.map +1 -1
  385. package/dist/esm/init.js +11 -8
  386. package/dist/esm/init.js.map +1 -1
  387. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  388. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  389. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  390. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  391. package/dist/esm/webgl-utils/format-utils.js +1 -1
  392. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  393. package/dist/esm/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  394. package/dist/esm/webgl-utils/is-old-ie.js.map +1 -0
  395. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  396. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  397. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  398. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  399. package/dist/esm/webgl-utils/webgl-info.ts.disabled +135 -0
  400. package/dist/index.d.ts +36 -20
  401. package/dist/index.d.ts.map +1 -1
  402. package/dist/index.js +22 -20
  403. package/dist/index.js.map +1 -1
  404. package/dist/init.d.ts.map +1 -1
  405. package/dist/init.js +11 -8
  406. package/dist/init.js.map +1 -1
  407. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  408. package/dist/webgl-utils/attribute-utils.js +1 -1
  409. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  410. package/dist/webgl-utils/constants-to-keys.js +1 -1
  411. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  412. package/dist/webgl-utils/format-utils.d.ts +2 -2
  413. package/dist/webgl-utils/format-utils.js +1 -1
  414. package/dist/webgl-utils/format-utils.js.map +1 -1
  415. package/dist/webgl-utils/is-old-ie.d.ts +2 -0
  416. package/dist/webgl-utils/is-old-ie.d.ts.map +1 -0
  417. package/dist/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  418. package/dist/webgl-utils/is-old-ie.js.map +1 -0
  419. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  420. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  421. package/dist/webgl-utils/texture-utils.js +2 -2
  422. package/dist/webgl-utils/texture-utils.js.map +1 -1
  423. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  424. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  425. package/dist/webgl-utils/typed-array-utils.js +22 -18
  426. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  427. package/dist/webgl-utils/webgl-info.ts.disabled +135 -0
  428. package/package.json +5 -6
  429. package/src/.DS_Store +0 -0
  430. package/src/api/device2.ts +71 -0
  431. package/src/classes/accessor.js +2 -2
  432. package/src/classes/accessor.ts.disabled +1 -1
  433. package/src/classes/clear.ts +9 -4
  434. package/src/classes/copy-and-blit.ts +49 -52
  435. package/src/classes/framebuffer.ts +38 -35
  436. package/src/classes/program-configuration.ts +6 -6
  437. package/src/classes/program.ts +21 -15
  438. package/src/classes/query.ts +6 -6
  439. package/src/classes/renderbuffer-formats.ts +1 -1
  440. package/src/classes/renderbuffer.ts +5 -4
  441. package/src/classes/texture-2d.ts +6 -11
  442. package/src/classes/texture-3d.ts +16 -11
  443. package/src/classes/texture-cube.ts +7 -7
  444. package/src/classes/texture-formats.ts +1 -1
  445. package/src/classes/texture.ts +39 -40
  446. package/src/classes/transform-feedback.ts +14 -13
  447. package/src/classes/uniform-buffer-layout.ts +1 -1
  448. package/src/classes/uniforms.ts +4 -10
  449. package/src/classes/vertex-array-object.ts +10 -14
  450. package/src/classes/vertex-array.ts +2 -3
  451. package/src/classes/webgl-buffer.ts +7 -5
  452. package/src/classes/webgl-resource.ts +20 -18
  453. package/src/classes/webgl-shader.ts +6 -4
  454. package/src/context/context/context-state.ts +39 -0
  455. package/src/context/context/create-context.ts +83 -0
  456. package/src/context/context/device-pixels.ts +147 -0
  457. package/src/context/context/get-canvas.ts +37 -0
  458. package/src/context/context/resize-context.ts +37 -0
  459. package/src/context/context/webgl-checks.ts +49 -0
  460. package/src/context/parameters/unified-parameter-api.ts +127 -0
  461. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  462. package/src/context/parameters/webgl-parameters.ts +197 -0
  463. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  464. package/src/context/polyfill/polyfill-context.ts +98 -0
  465. package/src/context/polyfill/polyfill-table.ts +162 -0
  466. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  467. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  468. package/src/context/state-tracker/track-context-state.ts +250 -0
  469. package/src/context/state-tracker/with-parameters.ts +50 -0
  470. package/src/debug/debug-uniforms.ts +1 -1
  471. package/src/debug/debug-vertex-array.ts +2 -4
  472. package/src/device/check-glsl-extension.ts +44 -0
  473. package/src/device/device-features.ts +227 -0
  474. package/src/device/device-limits.ts +150 -0
  475. package/src/device/get-device-info.ts +49 -0
  476. package/src/device/webgl-device.ts +406 -0
  477. package/src/index.ts +76 -22
  478. package/src/init.ts +12 -9
  479. package/src/types.ts +1 -1
  480. package/src/webgl-utils/attribute-utils.ts +1 -1
  481. package/src/webgl-utils/constants-to-keys.ts +1 -1
  482. package/src/webgl-utils/format-utils.ts +1 -1
  483. package/src/{features/check-old-ie.ts → webgl-utils/is-old-ie.ts} +3 -3
  484. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  485. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  486. package/src/webgl-utils/webgl-info.ts.disabled +135 -0
  487. package/dist/context/gl-context.d.ts +0 -15
  488. package/dist/context/gl-context.d.ts.map +0 -1
  489. package/dist/context/gl-context.js +0 -32
  490. package/dist/context/gl-context.js.map +0 -1
  491. package/dist/context/luma-context-data.d.ts +0 -31
  492. package/dist/context/luma-context-data.d.ts.map +0 -1
  493. package/dist/context/luma-context-data.js +0 -5
  494. package/dist/context/luma-context-data.js.map +0 -1
  495. package/dist/es5/context/gl-context.js +0 -46
  496. package/dist/es5/context/gl-context.js.map +0 -1
  497. package/dist/es5/context/luma-context-data.js +0 -12
  498. package/dist/es5/context/luma-context-data.js.map +0 -1
  499. package/dist/es5/features/check-glsl-extension.js +0 -40
  500. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  501. package/dist/es5/features/check-old-ie.js +0 -15
  502. package/dist/es5/features/check-old-ie.js.map +0 -1
  503. package/dist/es5/features/features.js +0 -85
  504. package/dist/es5/features/features.js.map +0 -1
  505. package/dist/es5/features/index.js +0 -64
  506. package/dist/es5/features/index.js.map +0 -1
  507. package/dist/es5/features/limits.js +0 -72
  508. package/dist/es5/features/limits.js.map +0 -1
  509. package/dist/es5/features/webgl-features-table.js +0 -84
  510. package/dist/es5/features/webgl-features-table.js.map +0 -1
  511. package/dist/es5/features/webgl-limits-table.js +0 -172
  512. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  513. package/dist/es5/utils/array-utils-flat.js +0 -50
  514. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  515. package/dist/es5/utils/assert.js +0 -13
  516. package/dist/es5/utils/assert.js.map +0 -1
  517. package/dist/es5/utils/check-props.js +0 -50
  518. package/dist/es5/utils/check-props.js.map +0 -1
  519. package/dist/es5/utils/format-value.js +0 -57
  520. package/dist/es5/utils/format-value.js.map +0 -1
  521. package/dist/es5/utils/index.js +0 -68
  522. package/dist/es5/utils/index.js.map +0 -1
  523. package/dist/es5/utils/is-old-ie.js +0 -13
  524. package/dist/es5/utils/is-old-ie.js.map +0 -1
  525. package/dist/es5/utils/load-file.js +0 -43
  526. package/dist/es5/utils/load-file.js.map +0 -1
  527. package/dist/es5/utils/stub-methods.js +0 -25
  528. package/dist/es5/utils/stub-methods.js.map +0 -1
  529. package/dist/es5/utils/utils.js +0 -31
  530. package/dist/es5/utils/utils.js.map +0 -1
  531. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  532. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  533. package/dist/esm/context/gl-context.js +0 -32
  534. package/dist/esm/context/gl-context.js.map +0 -1
  535. package/dist/esm/context/luma-context-data.js +0 -5
  536. package/dist/esm/context/luma-context-data.js.map +0 -1
  537. package/dist/esm/features/check-glsl-extension.js +0 -27
  538. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  539. package/dist/esm/features/check-old-ie.js.map +0 -1
  540. package/dist/esm/features/features.js +0 -67
  541. package/dist/esm/features/features.js.map +0 -1
  542. package/dist/esm/features/index.js +0 -5
  543. package/dist/esm/features/index.js.map +0 -1
  544. package/dist/esm/features/limits.js +0 -55
  545. package/dist/esm/features/limits.js.map +0 -1
  546. package/dist/esm/features/webgl-features-table.js +0 -71
  547. package/dist/esm/features/webgl-features-table.js.map +0 -1
  548. package/dist/esm/features/webgl-limits-table.js +0 -161
  549. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  550. package/dist/esm/utils/array-utils-flat.js +0 -39
  551. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  552. package/dist/esm/utils/assert.js +0 -6
  553. package/dist/esm/utils/assert.js.map +0 -1
  554. package/dist/esm/utils/check-props.js +0 -38
  555. package/dist/esm/utils/check-props.js.map +0 -1
  556. package/dist/esm/utils/format-value.js +0 -50
  557. package/dist/esm/utils/format-value.js.map +0 -1
  558. package/dist/esm/utils/index.js +0 -7
  559. package/dist/esm/utils/index.js.map +0 -1
  560. package/dist/esm/utils/is-old-ie.js +0 -5
  561. package/dist/esm/utils/is-old-ie.js.map +0 -1
  562. package/dist/esm/utils/load-file.js +0 -30
  563. package/dist/esm/utils/load-file.js.map +0 -1
  564. package/dist/esm/utils/stub-methods.js +0 -16
  565. package/dist/esm/utils/stub-methods.js.map +0 -1
  566. package/dist/esm/utils/utils.js +0 -20
  567. package/dist/esm/utils/utils.js.map +0 -1
  568. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  569. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  570. package/dist/features/check-glsl-extension.d.ts +0 -2
  571. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  572. package/dist/features/check-glsl-extension.js +0 -27
  573. package/dist/features/check-glsl-extension.js.map +0 -1
  574. package/dist/features/check-old-ie.d.ts +0 -2
  575. package/dist/features/check-old-ie.d.ts.map +0 -1
  576. package/dist/features/check-old-ie.js.map +0 -1
  577. package/dist/features/features.d.ts +0 -6
  578. package/dist/features/features.d.ts.map +0 -1
  579. package/dist/features/features.js +0 -67
  580. package/dist/features/features.js.map +0 -1
  581. package/dist/features/index.d.ts +0 -5
  582. package/dist/features/index.d.ts.map +0 -1
  583. package/dist/features/index.js +0 -5
  584. package/dist/features/index.js.map +0 -1
  585. package/dist/features/limits.d.ts +0 -28
  586. package/dist/features/limits.d.ts.map +0 -1
  587. package/dist/features/limits.js +0 -55
  588. package/dist/features/limits.js.map +0 -1
  589. package/dist/features/webgl-features-table.d.ts +0 -30
  590. package/dist/features/webgl-features-table.d.ts.map +0 -1
  591. package/dist/features/webgl-features-table.js +0 -71
  592. package/dist/features/webgl-features-table.js.map +0 -1
  593. package/dist/features/webgl-limits-table.d.ts +0 -161
  594. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  595. package/dist/features/webgl-limits-table.js +0 -161
  596. package/dist/features/webgl-limits-table.js.map +0 -1
  597. package/dist/utils/array-utils-flat.d.ts +0 -9
  598. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  599. package/dist/utils/array-utils-flat.js +0 -39
  600. package/dist/utils/array-utils-flat.js.map +0 -1
  601. package/dist/utils/assert.d.ts +0 -2
  602. package/dist/utils/assert.d.ts.map +0 -1
  603. package/dist/utils/assert.js +0 -6
  604. package/dist/utils/assert.js.map +0 -1
  605. package/dist/utils/check-props.d.ts +0 -2
  606. package/dist/utils/check-props.d.ts.map +0 -1
  607. package/dist/utils/check-props.js +0 -38
  608. package/dist/utils/check-props.js.map +0 -1
  609. package/dist/utils/format-value.d.ts +0 -5
  610. package/dist/utils/format-value.d.ts.map +0 -1
  611. package/dist/utils/format-value.js +0 -50
  612. package/dist/utils/format-value.js.map +0 -1
  613. package/dist/utils/index.d.ts +0 -7
  614. package/dist/utils/index.d.ts.map +0 -1
  615. package/dist/utils/index.js +0 -7
  616. package/dist/utils/index.js.map +0 -1
  617. package/dist/utils/is-old-ie.d.ts +0 -4
  618. package/dist/utils/is-old-ie.d.ts.map +0 -1
  619. package/dist/utils/is-old-ie.js +0 -5
  620. package/dist/utils/is-old-ie.js.map +0 -1
  621. package/dist/utils/load-file.d.ts +0 -4
  622. package/dist/utils/load-file.d.ts.map +0 -1
  623. package/dist/utils/load-file.js +0 -30
  624. package/dist/utils/load-file.js.map +0 -1
  625. package/dist/utils/stub-methods.d.ts +0 -2
  626. package/dist/utils/stub-methods.d.ts.map +0 -1
  627. package/dist/utils/stub-methods.js +0 -16
  628. package/dist/utils/stub-methods.js.map +0 -1
  629. package/dist/utils/utils.d.ts +0 -15
  630. package/dist/utils/utils.d.ts.map +0 -1
  631. package/dist/utils/utils.js +0 -20
  632. package/dist/utils/utils.js.map +0 -1
  633. package/src/context/gl-context.ts +0 -31
  634. package/src/context/luma-context-data.ts +0 -27
  635. package/src/features/check-glsl-extension.ts +0 -34
  636. package/src/features/features.ts +0 -80
  637. package/src/features/index.ts +0 -5
  638. package/src/features/limits.ts +0 -66
  639. package/src/features/webgl-features-table.ts +0 -104
  640. package/src/features/webgl-limits-table.ts +0 -51
  641. package/src/utils/array-utils-flat.ts +0 -56
  642. package/src/utils/assert.ts +0 -7
  643. package/src/utils/check-props.ts +0 -68
  644. package/src/utils/format-value.ts +0 -37
  645. package/src/utils/index.ts +0 -6
  646. package/src/utils/is-old-ie.ts +0 -6
  647. package/src/utils/load-file.ts +0 -40
  648. package/src/utils/stub-methods.ts +0 -20
  649. package/src/utils/utils.ts +0 -35
  650. package/src/webgl-utils/texture-utils.d.ts +0 -11
  651. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -1,21 +1,17 @@
1
+ import {Device, loadImage} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {assertWebGLContext} from '@luma.gl/gltools';
3
- import Texture, {TextureProps} from './texture';
4
- import {loadImage} from '../utils/load-file';
3
+ import Texture, {TextureProps, TextureSupportOptions} from './texture';
5
4
 
6
5
 
7
6
  export type Texture2DProps = TextureProps & {
8
7
  };
9
8
 
10
9
  export default class Texture2D extends Texture {
11
- static isSupported(gl: WebGLRenderingContext, opts?: object): boolean {
12
- // @ts-expect-error
13
- return Texture.isSupported(gl, opts);
10
+ static isSupported(device: Device | WebGLRenderingContext, opts?: TextureSupportOptions): boolean {
11
+ return Texture.isSupported(device, opts);
14
12
  }
15
13
 
16
- constructor(gl: WebGLRenderingContext, props?: Texture2DProps | Promise<Texture2DProps>) {
17
- assertWebGLContext(gl);
18
-
14
+ constructor(device: Device | WebGLRenderingContext, props?: Texture2DProps | Promise<Texture2DProps>) {
19
15
  // Signature: new Texture2D(gl, url | Promise)
20
16
  if (props instanceof Promise || typeof props === 'string') {
21
17
  props = {data: props};
@@ -23,11 +19,10 @@ export default class Texture2D extends Texture {
23
19
 
24
20
  // Signature: new Texture2D(gl, {data: url})
25
21
  if (typeof props?.data === 'string') {
26
- // @ts-expect-error
27
22
  props = Object.assign({}, props, {data: loadImage(props.data)});
28
23
  }
29
24
 
30
- super(gl, Object.assign({}, props, {target: GL.TEXTURE_2D}));
25
+ super(device, Object.assign({}, props, {target: GL.TEXTURE_2D}));
31
26
 
32
27
  this.initialize(props);
33
28
 
@@ -1,5 +1,8 @@
1
+ import {Device} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {isWebGL2, assertWebGL2Context, withParameters} from '@luma.gl/gltools';
3
+ import WebGLDevice from '../device/webgl-device';
4
+ import {assertWebGL2Context} from '../context/context/webgl-checks';
5
+ import {withParameters} from '../context/state-tracker/with-parameters';
3
6
  import Texture, {TextureProps} from './texture';
4
7
  import {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';
5
8
  import Buffer from './webgl-buffer';
@@ -26,16 +29,20 @@ type SetImageDataOptions = {
26
29
  * They are accessed by 3-dimensional texture coordinates.
27
30
  */
28
31
  export default class Texture3D extends Texture {
29
- static isSupported(gl: WebGLRenderingContext): boolean {
30
- return isWebGL2(gl);
32
+ static isSupported(device: Device | WebGLRenderingContext): boolean {
33
+ try {
34
+ const webglDevice = WebGLDevice.attach(device);
35
+ return webglDevice.isWebGL2;
36
+ } catch {
37
+ return false;
38
+ }
31
39
  }
32
40
 
33
- constructor(gl: WebGL2RenderingContext, props: Texture3DProps = {}) {
34
- super(gl as WebGLRenderingContext, props);
35
- assertWebGL2Context(gl);
41
+ constructor(device: Device | WebGL2RenderingContext, props: Texture3DProps = {}) {
42
+ super(device, {...props, target: GL.TEXTURE_3D});
43
+ assertWebGL2Context(this.gl2);
36
44
  props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});
37
45
  this.initialize(props);
38
-
39
46
  Object.seal(this);
40
47
  }
41
48
 
@@ -63,7 +70,7 @@ export default class Texture3D extends Texture {
63
70
 
64
71
  withParameters(this.gl, parameters, () => {
65
72
  if (ArrayBuffer.isView(data)) {
66
- // @ts-ignore
73
+ // @ts-expect-error
67
74
  this.gl.texImage3D(
68
75
  this.target,
69
76
  level,
@@ -80,7 +87,7 @@ export default class Texture3D extends Texture {
80
87
 
81
88
  if (data instanceof Buffer) {
82
89
  this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);
83
- // @ts-ignore
90
+ // @ts-expect-error
84
91
  this.gl.texImage3D(
85
92
  this.target,
86
93
  level,
@@ -100,9 +107,7 @@ export default class Texture3D extends Texture {
100
107
  this.trackAllocatedMemory(data.byteLength, 'Texture');
101
108
  } else {
102
109
  // NOTE(Tarek): Default to RGBA bytes
103
- // @ts-ignore
104
110
  const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;
105
- // @ts-ignore
106
111
  const channelSize = TYPE_SIZES[this.type] || 1;
107
112
 
108
113
  this.trackAllocatedMemory(
@@ -1,5 +1,7 @@
1
+ import {Device, log} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {log, assertWebGLContext} from '@luma.gl/gltools';
3
+ import WebGLDevice from '../device/webgl-device';
4
+ import {assertWebGLContext} from '../context/context/webgl-checks';
3
5
  import Texture, {TextureProps} from './texture';
4
6
 
5
7
  export type TextureCubeProps = TextureProps & {
@@ -17,10 +19,8 @@ export default class TextureCube extends Texture {
17
19
 
18
20
  props;
19
21
 
20
- constructor(gl: WebGLRenderingContext, props?: TextureCubeProps) {
21
- assertWebGLContext(gl);
22
-
23
- super(gl, Object.assign({}, props, {target: GL.TEXTURE_CUBE_MAP}));
22
+ constructor(device: Device | WebGLRenderingContext, props?: TextureCubeProps) {
23
+ super(device, Object.assign({}, props, {target: GL.TEXTURE_CUBE_MAP}));
24
24
 
25
25
  this.initialize(props);
26
26
 
@@ -37,7 +37,7 @@ export default class TextureCube extends Texture {
37
37
  // Store props for accessors
38
38
  this.props = props;
39
39
 
40
- // @ts-ignore
40
+ // @ts-expect-error
41
41
  this.setCubeMapImageData(props).then(() => {
42
42
  this.loaded = true;
43
43
 
@@ -54,7 +54,7 @@ export default class TextureCube extends Texture {
54
54
 
55
55
  subImage(options: {face: any; data: any; x?: number; y?: number; mipmapLevel?: number}): any {
56
56
  const {face, data, x = 0, y = 0, mipmapLevel = 0} = options;
57
- // @ts-ignore TODO - is this a bug?
57
+ // @ts-expect-error TODO - is this a bug?
58
58
  return this._subImage({target: face, data, x, y, mipmapLevel});
59
59
  }
60
60
 
@@ -1,5 +1,5 @@
1
1
  import GL from '@luma.gl/constants';
2
- import {isWebGL2} from '@luma.gl/gltools';
2
+ import {isWebGL2} from '../context/context/webgl-checks';
3
3
 
4
4
  // const S3TC = 'WEBGL_compressed_texture_s3tc';
5
5
  // const PVRTC = 'WEBGL_compressed_texture_pvrtc';
@@ -1,8 +1,10 @@
1
- import GL from '@luma.gl/constants';
2
- import {isWebGL2, assertWebGL2Context, getWebGL2Context, withParameters, log} from '@luma.gl/gltools';
3
- import {global} from 'probe.gl/env';
4
- import {getKey, getKeyValue} from '../webgl-utils';
1
+ import {Device, log, assert, uid, isPowerOfTwo} from '@luma.gl/api';
5
2
  import {Texture, TextureProps} from '@luma.gl/api';
3
+ import GL from '@luma.gl/constants';
4
+ import {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';
5
+ import {withParameters} from '../context/state-tracker/with-parameters';
6
+ import {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';
7
+ import WebGLDevice from '../device/webgl-device';
6
8
  import Buffer from './webgl-buffer';
7
9
  import {
8
10
  TEXTURE_FORMATS,
@@ -11,20 +13,21 @@ import {
11
13
  isFormatSupported,
12
14
  isLinearFilteringSupported
13
15
  } from './texture-formats';
14
- import {uid, isPowerOfTwo, assert} from '../utils';
15
16
 
16
- export {TextureProps};
17
+ export type {TextureProps};
18
+
19
+ export type TextureSupportOptions = {
20
+ format?: any;
21
+ linearFiltering?: any;
22
+ };
17
23
 
18
24
  // Supported min filters for NPOT texture.
19
25
  const NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];
20
26
 
21
27
  // Polyfill
22
- // Note (Tarek): Do we really need to support this API?
23
- const WebGLBuffer = global.WebGLBuffer || function WebGLBuffer() {};
24
-
25
28
  export default class WEBGLTexture extends Texture {
26
29
  readonly MAX_ATTRIBUTES: number;
27
-
30
+ readonly device: WebGLDevice;
28
31
  readonly gl: WebGLRenderingContext;
29
32
  readonly gl2: WebGL2RenderingContext | null;
30
33
  readonly handle: WebGLTexture;
@@ -39,9 +42,9 @@ export default class WEBGLTexture extends Texture {
39
42
  type = undefined;
40
43
  dataFormat = undefined;
41
44
  border = undefined;
42
- mipmaps = undefined;
45
+ mipmaps: boolean = undefined;
43
46
 
44
- target: number;
47
+ target: GL;
45
48
  textureUnit: number = undefined;
46
49
 
47
50
  // Program.draw() checks the loaded flag of all textures to avoid
@@ -51,17 +54,15 @@ export default class WEBGLTexture extends Texture {
51
54
  _video;
52
55
 
53
56
  static isSupported(
54
- gl: WebGLRenderingContext,
55
- options?: {
56
- format: any;
57
- linearFiltering: any;
58
- }
57
+ device: Device | WebGLRenderingContext,
58
+ options?: TextureSupportOptions
59
59
  ): boolean {
60
+ const webglDevice = WebGLDevice.attach(device);
60
61
  const {format, linearFiltering} = options;
61
62
  let supported = true;
62
63
  if (format) {
63
- supported = supported && isFormatSupported(gl, format);
64
- supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));
64
+ supported = supported && isFormatSupported(webglDevice.gl, format);
65
+ supported = supported && (!linearFiltering || isLinearFilteringSupported(webglDevice.gl, format));
65
66
  }
66
67
  return supported;
67
68
  }
@@ -76,8 +77,8 @@ export default class WEBGLTexture extends Texture {
76
77
  // you must always bind it as a GL_TEXTURE_2D;
77
78
  // attempting to bind it as GL_TEXTURE_1D will give rise to an error
78
79
  // (while run-time).
79
- constructor(gl: WebGLRenderingContext, props: TextureProps) {
80
- super(gl as any, props);
80
+ constructor(device: Device | WebGLRenderingContext, props: TextureProps) {
81
+ super(WebGLDevice.attach(device), props);
81
82
 
82
83
  const {
83
84
  id = uid('texture'),
@@ -104,8 +105,9 @@ export default class WEBGLTexture extends Texture {
104
105
  this.textureUnit = undefined;
105
106
  this.mipmaps = undefined;
106
107
 
107
- this.gl = gl;
108
- this.gl2 = getWebGL2Context(gl);
108
+ this.device = WebGLDevice.attach(device);
109
+ this.gl = this.device.gl;
110
+ this.gl2 = this.device.gl2;
109
111
  this.handle = this.props.handle || this.gl.createTexture();
110
112
  }
111
113
 
@@ -123,7 +125,7 @@ export default class WEBGLTexture extends Texture {
123
125
  return `Texture(${this.id},${this.width}x${this.height})`;
124
126
  }
125
127
 
126
- /* eslint-disable max-len, max-statements */
128
+ // eslint-disable-next-line max-statements
127
129
  initialize(props: TextureProps = {}): this {
128
130
  let data = props.data;
129
131
 
@@ -139,7 +141,7 @@ export default class WEBGLTexture extends Texture {
139
141
  return this;
140
142
  }
141
143
  const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;
142
- // @ts-ignore
144
+ // @ts-expect-error
143
145
  if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {
144
146
  this._video = null; // Declare member before the object is sealed
145
147
  data.addEventListener('loadeddata', () => this.initialize(props));
@@ -231,7 +233,7 @@ export default class WEBGLTexture extends Texture {
231
233
  this._video = {
232
234
  video: data,
233
235
  parameters,
234
- // @ts-ignore
236
+ // @ts-expect-error
235
237
  lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1
236
238
  };
237
239
  }
@@ -242,7 +244,7 @@ export default class WEBGLTexture extends Texture {
242
244
  update(): this {
243
245
  if (this._video) {
244
246
  const {video, parameters, lastTime} = this._video;
245
- // @ts-ignore
247
+ // @ts-expect-error
246
248
  if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {
247
249
  return;
248
250
  }
@@ -312,7 +314,7 @@ export default class WEBGLTexture extends Texture {
312
314
  * @param {GLint} border - must be 0.
313
315
  * @parameters - temporary settings to be applied, can be used to supply pixel store settings.
314
316
  */
315
- /* eslint-disable max-len, max-statements, complexity */
317
+ // eslint-disable-next-line max-statements, complexity
316
318
  setImageData(options) {
317
319
  this.trackDeallocatedMemory('Texture');
318
320
 
@@ -366,7 +368,6 @@ export default class WEBGLTexture extends Texture {
366
368
  case 'typed-array':
367
369
  // Looks like this assert is not necessary, as offset is ignored under WebGL1
368
370
  // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');
369
- // @ts-ignore
370
371
  gl.texImage2D(
371
372
  target,
372
373
  level,
@@ -377,7 +378,7 @@ export default class WEBGLTexture extends Texture {
377
378
  dataFormat,
378
379
  type,
379
380
  data,
380
- // @ts-ignore
381
+ // @ts-expect-error
381
382
  offset
382
383
  );
383
384
  break;
@@ -428,8 +429,7 @@ export default class WEBGLTexture extends Texture {
428
429
 
429
430
  return this;
430
431
  }
431
- /* eslint-enable max-len, max-statements, complexity */
432
-
432
+
433
433
  /**
434
434
  * Redefines an area of an existing texture
435
435
  * Note: does not allocate storage
@@ -515,9 +515,9 @@ export default class WEBGLTexture extends Texture {
515
515
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
516
516
  } else if (ArrayBuffer.isView(data)) {
517
517
  // const gl2 = assertWebGL2Context(this.gl);
518
- // @ts-ignore last offset parameter is ignored under WebGL1
518
+ // @ts-expect-error last offset parameter is ignored under WebGL1
519
519
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);
520
- } else if (data instanceof WebGLBuffer) {
520
+ } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
521
521
  // WebGL2 allows us to create texture directly from a WebGL buffer
522
522
  const gl2 = assertWebGL2Context(this.gl);
523
523
  // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER
@@ -535,8 +535,7 @@ export default class WEBGLTexture extends Texture {
535
535
 
536
536
  this.gl.bindTexture(this.target, null);
537
537
  }
538
- /* eslint-enable max-len, max-statements, complexity */
539
-
538
+
540
539
  /**
541
540
  * Defines a two-dimensional texture image or cube-map texture image with
542
541
  * pixels from the current framebuffer (rather than from client memory).
@@ -606,7 +605,7 @@ export default class WEBGLTexture extends Texture {
606
605
  if (data instanceof Buffer) {
607
606
  return {data: data.handle, dataType: 'buffer'};
608
607
  }
609
- if (data instanceof WebGLBuffer) {
608
+ if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
610
609
  return {data, dataType: 'buffer'};
611
610
  }
612
611
  // Assume data is a browser supported object (ImageData, Canvas, ...)
@@ -752,7 +751,7 @@ export default class WEBGLTexture extends Texture {
752
751
  pname = getKeyValue(this.gl, pname);
753
752
  assert(pname);
754
753
 
755
- // @ts-ignore
754
+ // @ts-expect-error
756
755
  const parameters = this.constructor.PARAMETERS || {};
757
756
 
758
757
  // Use parameter definitions to handle unsupported parameters
@@ -785,7 +784,7 @@ export default class WEBGLTexture extends Texture {
785
784
  const {parameters, keys} = options;
786
785
 
787
786
  // Get parameter definitions for this Resource
788
- // @ts-ignore
787
+ // @ts-expect-error
789
788
  const PARAMETERS = this.constructor.PARAMETERS || {};
790
789
 
791
790
  const isWebgl2 = isWebGL2(this.gl);
@@ -830,7 +829,7 @@ export default class WEBGLTexture extends Texture {
830
829
  pname = getKeyValue(this.gl, pname);
831
830
  assert(pname);
832
831
 
833
- // @ts-ignore
832
+ // @ts-expect-error
834
833
  const parameters = this.constructor.PARAMETERS || {};
835
834
 
836
835
  const parameter = parameters[pname];
@@ -1,8 +1,9 @@
1
+ import {log, isObjectEmpty} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {isWebGL2, assertWebGL2Context, log} from '@luma.gl/gltools';
3
+ import WebGLDevice from '../device/webgl-device';
4
+ import {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';
3
5
  import WebGLResource, {ResourceProps} from './webgl-resource';
4
6
  import Buffer from './webgl-buffer';
5
- import {isObjectEmpty} from '../utils';
6
7
 
7
8
  export type TransformFeedbackProps = ResourceProps & {
8
9
  [key: string]: any;
@@ -21,7 +22,7 @@ export default class TransformFeedback extends WebGLResource<TransformFeedbackPr
21
22
  }
22
23
 
23
24
  constructor(gl: WebGLRenderingContext, props: TransformFeedbackProps = {}) {
24
- super(gl, props, {} as any);
25
+ super(WebGLDevice.attach(gl), props, {} as any);
25
26
  assertWebGL2Context(gl);
26
27
 
27
28
  this.initialize(props);
@@ -74,7 +75,7 @@ export default class TransformFeedback extends WebGLResource<TransformFeedbackPr
74
75
 
75
76
  if (location < 0) {
76
77
  this.unused[locationOrName] = buffer;
77
- log.warn(() => `${this.id} unused varying buffer ${locationOrName}`)();
78
+ log.warn(`${this.id} unused varying buffer ${locationOrName}`)();
78
79
  return this;
79
80
  }
80
81
 
@@ -90,19 +91,19 @@ export default class TransformFeedback extends WebGLResource<TransformFeedbackPr
90
91
  }
91
92
 
92
93
  begin(primitiveMode = GL.POINTS) {
93
- // @ts-ignore
94
+ // @ts-expect-error
94
95
  this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);
95
96
  this._bindBuffers();
96
- // @ts-ignore
97
+ // @ts-expect-error
97
98
  this.gl.beginTransformFeedback(primitiveMode);
98
99
  return this;
99
100
  }
100
101
 
101
102
  end() {
102
- // @ts-ignore
103
+ // @ts-expect-error
103
104
  this.gl.endTransformFeedback();
104
105
  this._unbindBuffers();
105
- // @ts-ignore
106
+ // @ts-expect-error
106
107
  this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);
107
108
  return this;
108
109
  }
@@ -162,10 +163,10 @@ export default class TransformFeedback extends WebGLResource<TransformFeedbackPr
162
163
  _bindBuffer(index, buffer, byteOffset = 0, byteSize?) {
163
164
  const handle = buffer && buffer.handle;
164
165
  if (!handle || byteSize === undefined) {
165
- // @ts-ignore
166
+ // @ts-expect-error
166
167
  this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);
167
168
  } else {
168
- // @ts-ignore
169
+ // @ts-expect-error
169
170
  this.gl.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteSize);
170
171
  }
171
172
  return this;
@@ -174,17 +175,17 @@ export default class TransformFeedback extends WebGLResource<TransformFeedbackPr
174
175
  // RESOURCE METHODS
175
176
 
176
177
  _createHandle() {
177
- // @ts-ignore
178
+ // @ts-expect-error
178
179
  return this.gl.createTransformFeedback();
179
180
  }
180
181
 
181
182
  _deleteHandle() {
182
- // @ts-ignore
183
+ // @ts-expect-error
183
184
  this.gl.deleteTransformFeedback(this.handle);
184
185
  }
185
186
 
186
187
  _bindHandle(handle) {
187
- // @ts-ignore
188
+ // @ts-expect-error
188
189
  this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);
189
190
  }
190
191
  }
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
 
3
+ import {assert} from '@luma.gl/api';
3
4
  import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
4
- import {assert} from '../utils';
5
5
 
6
6
  const ERR_ARGUMENT = 'UniformBufferLayout illegal argument';
7
7
 
@@ -1,13 +1,10 @@
1
- /** @typedef {import('./uniforms')} types */
2
-
1
+ import {log, assert} from '@luma.gl/api';
3
2
  import GL from '@luma.gl/constants';
4
- import {log} from '@luma.gl/gltools';
5
3
  import {Matrix4} from '@math.gl/core';
6
4
 
7
5
  import Framebuffer from './framebuffer';
8
6
  import Renderbuffer from './renderbuffer';
9
7
  import Texture from './texture';
10
- import {assert} from '../utils';
11
8
 
12
9
  type NumberUniformInfo = {
13
10
  type: 'number'
@@ -54,7 +51,6 @@ type Uniforms = {
54
51
  const UNIFORM_SETTERS = {
55
52
  // WEBGL1
56
53
 
57
- /* eslint-disable max-len */
58
54
  [GL.FLOAT]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),
59
55
  [GL.FLOAT_VEC2]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),
60
56
  [GL.FLOAT_VEC3]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),
@@ -169,7 +165,6 @@ const UNIFORM_SETTERS = {
169
165
  [GL.UNSIGNED_INT_SAMPLER_3D]: getSamplerSetter,
170
166
  [GL.UNSIGNED_INT_SAMPLER_CUBE]: getSamplerSetter,
171
167
  [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: getSamplerSetter
172
- /* eslint-enable max-len */
173
168
  };
174
169
 
175
170
  // Pre-allocated typed arrays for temporary conversion
@@ -233,8 +228,7 @@ export function parseUniformName(name: string): {name: string; isArray: boolean,
233
228
  // Add space to source
234
229
  source = source ? `${source} ` : '';
235
230
  // Value could be unprintable so write the object on console
236
- console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line
237
- /* eslint-enable no-console */
231
+ console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line no-console
238
232
  throw new Error(`${source} Bad uniform ${uniformName}`);
239
233
  }
240
234
  }
@@ -248,12 +242,12 @@ export function copyUniform(uniforms: object, key: string, value: any): void {
248
242
  if (Array.isArray(value) || ArrayBuffer.isView(value)) {
249
243
  if (uniforms[key]) {
250
244
  const dest = uniforms[key];
251
- // @ts-ignore
245
+ // @ts-expect-error
252
246
  for (let i = 0, len = value.length; i < len; ++i) {
253
247
  dest[i] = value[i];
254
248
  }
255
249
  } else {
256
- // @ts-ignore
250
+ // @ts-expect-error
257
251
  uniforms[key] = value.slice();
258
252
  }
259
253
  } else {
@@ -1,12 +1,11 @@
1
+ import {assert, getScratchArray, fillArray} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {assertWebGL2Context, isWebGL2} from '@luma.gl/gltools';
3
- import {getBrowser} from 'probe.gl';
3
+ import {getBrowser} from '@probe.gl/env';
4
+ import WebGLDevice from '../device/webgl-device';
5
+ import {assertWebGL2Context, isWebGL2} from '../context/context/webgl-checks';
4
6
  import Program from './program';
5
7
  import WebGLResource, {ResourceProps} from './webgl-resource';
6
8
  import Buffer from './webgl-buffer';
7
- import {getScratchArray, fillArray} from '../utils/array-utils-flat';
8
- import {assert} from '../utils';
9
- import {getLumaContextData} from '../context/luma-context-data';
10
9
 
11
10
  const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
12
11
 
@@ -24,7 +23,7 @@ export type VertexArrayObjectProps = ResourceProps & {
24
23
  export default class VertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
25
24
  private static MAX_ATTRIBUTES: number;
26
25
 
27
- static isSupported(gl: WebGLRenderingContext, options?: VertexArrayObjectProps): boolean {
26
+ static isSupported(gl: WebGLRenderingContext | WebGL2RenderingContext, options?: VertexArrayObjectProps): boolean {
28
27
  if (options?.constantAttributeZero) {
29
28
  return isWebGL2(gl) || getBrowser() === 'Chrome';
30
29
  }
@@ -38,20 +37,17 @@ export default class VertexArrayObject extends WebGLResource<VertexArrayObjectPr
38
37
  * @todo (Tarek): VAOs are now polyfilled. Deprecate this in 9.0
39
38
  */
40
39
  static getDefaultArray(gl: WebGLRenderingContext): VertexArrayObject {
41
- const lumaContextData = getLumaContextData(gl);
42
- lumaContextData.defaultVertexArray = lumaContextData.defaultVertexArray ||
40
+ const webglDevice = WebGLDevice.fromContext(gl);
41
+ webglDevice.defaultVertexArray = webglDevice.defaultVertexArray ||
43
42
  new VertexArrayObject(gl, {handle: null, isDefaultArray: true});
44
- return lumaContextData.defaultVertexArray;
43
+ return webglDevice.defaultVertexArray;
45
44
  }
46
45
 
47
46
  /** Get maximum number of attributes in a vertex array */
48
47
  static getMaxAttributes(gl: WebGLRenderingContext): number {
49
48
  // TODO - should be cached per context
50
- // @ts-ignore
51
49
  VertexArrayObject.MAX_ATTRIBUTES =
52
- // @ts-ignore
53
50
  VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
54
- // @ts-ignore
55
51
  return VertexArrayObject.MAX_ATTRIBUTES;
56
52
  }
57
53
 
@@ -89,7 +85,7 @@ export default class VertexArrayObject extends WebGLResource<VertexArrayObjectPr
89
85
  // Create a VertexArray
90
86
  constructor(gl: WebGLRenderingContext, opts?: VertexArrayObjectProps) {
91
87
  // Use program's id if program but no id is supplied
92
- super(gl, {...opts, id: opts?.id || (opts?.program && opts?.program.id)}, {} as any);
88
+ super(WebGLDevice.attach(gl), {...opts, id: opts?.id || (opts?.program && opts?.program.id)}, {} as any);
93
89
 
94
90
  this.buffer = null;
95
91
  this.bufferValue = null;
@@ -318,7 +314,7 @@ export default class VertexArrayObject extends WebGLResource<VertexArrayObjectPr
318
314
 
319
315
  _deleteHandle(): void {
320
316
  this.gl2.deleteVertexArray(this.handle);
321
- // @ts-ignore
317
+ // @ts-expect-error
322
318
  return [this.elements];
323
319
  // return [this.elements, ...this.buffers];
324
320
  }
@@ -1,11 +1,10 @@
1
+ import {log, assert} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {log} from '@luma.gl/gltools';
3
3
  import Accessor from './accessor';
4
4
  import Buffer from './webgl-buffer';
5
5
  import Program from './program';
6
6
  import ProgramConfiguration from './program-configuration';
7
7
  import VertexArrayObject, {VertexArrayObjectProps} from './vertex-array-object';
8
- import {assert, stubRemovedMethods} from '../utils';
9
8
 
10
9
  const ERR_ATTRIBUTE_TYPE =
11
10
  'VertexArray: attributes must be Buffers or constants (i.e. typed array)';
@@ -19,7 +18,7 @@ export type VertexArrayProps = {
19
18
  id?: string;
20
19
  program?: Program;
21
20
  configuration?: ProgramConfiguration;
22
- attributes?: any[];
21
+ attributes?: Record<string, any>;
23
22
  elements?: any;
24
23
  bindOnUse?: boolean;
25
24
  };
@@ -1,10 +1,11 @@
1
- import GL from '@luma.gl/constants';
2
- import {getWebGL2Context, assertWebGL2Context, log} from '@luma.gl/gltools';
1
+ import {log, assert, checkProps} from '@luma.gl/api';
3
2
  import {Buffer, BufferProps} from '@luma.gl/api';
3
+ import GL from '@luma.gl/constants';
4
+ import {getWebGL2Context, assertWebGL2Context} from '../context/context/webgl-checks';
4
5
  import {AccessorObject} from '../types';
5
6
  import Accessor from './accessor';
6
- import {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils';
7
- import {assert, checkProps} from '../utils';
7
+ import {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';
8
+ import WebGLDevice from '../device/webgl-device';
8
9
 
9
10
  const DEBUG_DATA_LENGTH = 10;
10
11
 
@@ -58,6 +59,7 @@ export type WebGLBufferProps = BufferProps & {
58
59
 
59
60
  /** WebGL Buffer interface */
60
61
  export default class WEBGLBuffer extends Buffer {
62
+ readonly device: WebGLDevice;
61
63
  readonly gl: WebGLRenderingContext;
62
64
  readonly gl2: WebGL2RenderingContext | null;
63
65
  readonly handle: WebGLBuffer;
@@ -77,7 +79,7 @@ export default class WEBGLBuffer extends Buffer {
77
79
  constructor(gl: WebGLRenderingContext, byteLength: number);
78
80
 
79
81
  constructor(gl: WebGLRenderingContext, props = {}) {
80
- super(gl as any, props);
82
+ super(WebGLDevice.attach(gl), props);
81
83
 
82
84
  this.gl = gl;
83
85
  this.gl2 = getWebGL2Context(gl);