@luma.gl/webgl 9.0.0-beta.4 → 9.0.0-beta.6

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 (288) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +297 -155
  3. package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
  4. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.js +73 -67
  6. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/shader-formats.js +53 -46
  8. package/dist/adapter/converters/texture-formats.d.ts +13 -19
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +474 -879
  11. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/vertex-formats.js +53 -61
  13. package/dist/adapter/device-helpers/device-features.d.ts +2 -5
  14. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  15. package/dist/adapter/device-helpers/device-features.js +56 -87
  16. package/dist/adapter/device-helpers/device-limits.d.ts +2 -4
  17. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  18. package/dist/adapter/device-helpers/device-limits.js +88 -83
  19. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  20. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/get-device-info.js +79 -63
  22. package/dist/adapter/device-helpers/webgl-device-features.d.ts +19 -0
  23. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/webgl-device-features.js +86 -0
  25. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  26. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  27. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  28. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  29. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  30. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  31. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  32. package/dist/adapter/helpers/decode-webgl-types.js +88 -76
  33. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  34. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.js +261 -225
  36. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  37. package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
  38. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  39. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  40. package/dist/adapter/helpers/set-uniform.js +68 -82
  41. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  42. package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
  43. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  44. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  45. package/dist/adapter/objects/constants-to-keys.js +19 -12
  46. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  47. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  48. package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
  49. package/dist/adapter/objects/webgl-resource.d.ts +3 -25
  50. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  51. package/dist/adapter/objects/webgl-resource.js +102 -146
  52. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  53. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  54. package/dist/adapter/resources/webgl-buffer.js +161 -119
  55. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  56. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-command-buffer.js +266 -168
  58. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  59. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-command-encoder.js +33 -39
  61. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  62. package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -10
  63. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-framebuffer.js +167 -137
  65. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  66. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  67. package/dist/adapter/resources/webgl-query-set.js +136 -0
  68. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  69. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-render-pass.js +124 -90
  71. package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
  72. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-render-pipeline.js +356 -221
  74. package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
  75. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-sampler.js +43 -33
  77. package/dist/adapter/resources/webgl-shader.d.ts +12 -2
  78. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-shader.js +114 -47
  80. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  81. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  82. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  83. package/dist/adapter/resources/webgl-texture.d.ts +6 -9
  84. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-texture.js +615 -695
  86. package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
  87. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
  89. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  90. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-vertex-array.js +229 -157
  92. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  93. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  94. package/dist/adapter/webgl-canvas-context.js +58 -36
  95. package/dist/adapter/webgl-device.d.ts +34 -40
  96. package/dist/adapter/webgl-device.d.ts.map +1 -1
  97. package/dist/adapter/webgl-device.js +418 -363
  98. package/dist/classic/accessor.d.ts.map +1 -1
  99. package/dist/classic/accessor.js +132 -101
  100. package/dist/classic/clear.d.ts +2 -2
  101. package/dist/classic/clear.d.ts.map +1 -1
  102. package/dist/classic/clear.js +73 -72
  103. package/dist/classic/copy-and-blit.d.ts +1 -1
  104. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  105. package/dist/classic/copy-and-blit.js +175 -175
  106. package/dist/classic/format-utils.d.ts +2 -2
  107. package/dist/classic/format-utils.d.ts.map +1 -1
  108. package/dist/classic/format-utils.js +39 -32
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -81
  111. package/dist/context/context/context-data.d.ts +14 -0
  112. package/dist/context/context/context-data.d.ts.map +1 -0
  113. package/dist/context/context/context-data.js +33 -0
  114. package/dist/context/context/create-browser-context.d.ts +1 -6
  115. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  116. package/dist/context/context/create-browser-context.js +62 -49
  117. package/dist/context/debug/spector.d.ts.map +1 -1
  118. package/dist/context/debug/spector.js +55 -50
  119. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  120. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  121. package/dist/context/debug/webgl-developer-tools.js +104 -77
  122. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  123. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  124. package/dist/context/helpers/create-browser-context.js +67 -0
  125. package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
  126. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  127. package/dist/context/helpers/webgl-context-data.js +21 -0
  128. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  129. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  130. package/dist/context/helpers/webgl-extensions.js +10 -0
  131. package/dist/context/parameters/unified-parameter-api.d.ts +3 -3
  132. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  133. package/dist/context/parameters/unified-parameter-api.js +94 -44
  134. package/dist/context/parameters/webgl-parameter-tables.d.ts +120 -99
  135. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  136. package/dist/context/parameters/webgl-parameter-tables.js +469 -404
  137. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  138. package/dist/context/state-tracker/deep-array-equal.js +19 -14
  139. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  141. package/dist/context/state-tracker/track-context-state.js +188 -123
  142. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  143. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  144. package/dist/context/state-tracker/with-parameters.js +43 -26
  145. package/dist/dist.dev.js +3135 -4142
  146. package/dist/index.cjs +1766 -2717
  147. package/dist/index.cjs.map +7 -0
  148. package/dist/index.d.ts +25 -28
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +16 -5
  151. package/dist/types.d.ts.map +1 -1
  152. package/dist/types.js +3 -1
  153. package/dist.min.js +9 -42
  154. package/package.json +11 -15
  155. package/src/adapter/converters/device-parameters.ts +105 -17
  156. package/src/adapter/converters/sampler-parameters.ts +12 -20
  157. package/src/adapter/converters/shader-formats.ts +47 -22
  158. package/src/adapter/converters/texture-formats.ts +138 -185
  159. package/src/adapter/converters/vertex-formats.ts +3 -3
  160. package/src/adapter/device-helpers/webgl-device-features.ts +101 -0
  161. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
  162. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  163. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  164. package/src/adapter/helpers/get-shader-layout.ts +21 -31
  165. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  166. package/src/adapter/helpers/set-uniform.ts +3 -4
  167. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  168. package/src/adapter/objects/constants-to-keys.ts +3 -2
  169. package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
  170. package/src/adapter/objects/webgl-resource.ts +7 -140
  171. package/src/adapter/resources/webgl-buffer.ts +10 -14
  172. package/src/adapter/resources/webgl-command-buffer.ts +24 -34
  173. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  174. package/src/adapter/resources/webgl-external-texture.ts +5 -5
  175. package/src/adapter/resources/webgl-framebuffer.ts +38 -34
  176. package/src/adapter/resources/webgl-query-set.ts +171 -0
  177. package/src/adapter/resources/webgl-render-pass.ts +24 -15
  178. package/src/adapter/resources/webgl-render-pipeline.ts +138 -70
  179. package/src/adapter/resources/webgl-sampler.ts +7 -10
  180. package/src/adapter/resources/webgl-shader.ts +65 -11
  181. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  182. package/src/adapter/resources/webgl-texture.ts +38 -105
  183. package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
  184. package/src/adapter/resources/webgl-vertex-array.ts +20 -21
  185. package/src/adapter/webgl-canvas-context.ts +7 -11
  186. package/src/adapter/webgl-device.ts +106 -151
  187. package/src/classic/accessor.ts +5 -4
  188. package/src/classic/clear.ts +25 -20
  189. package/src/classic/copy-and-blit.ts +12 -6
  190. package/src/classic/format-utils.ts +2 -1
  191. package/src/classic/typed-array-utils.ts +3 -7
  192. package/src/context/debug/spector.ts +9 -6
  193. package/src/context/debug/webgl-developer-tools.ts +31 -20
  194. package/src/context/{context → helpers}/create-browser-context.ts +9 -33
  195. package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
  196. package/src/context/helpers/webgl-extensions.ts +17 -0
  197. package/src/context/parameters/unified-parameter-api.ts +5 -4
  198. package/src/context/parameters/webgl-parameter-tables.ts +118 -90
  199. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  200. package/src/context/state-tracker/track-context-state.ts +29 -23
  201. package/src/context/state-tracker/with-parameters.ts +7 -2
  202. package/src/index.ts +4 -18
  203. package/src/types.ts +2 -1
  204. package/dist/adapter/converters/device-parameters.js.map +0 -1
  205. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  206. package/dist/adapter/converters/shader-formats.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  210. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  211. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  212. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  213. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  214. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  215. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  216. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  217. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  218. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  219. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  220. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  221. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  222. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  223. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  224. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  225. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  226. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  227. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  228. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  229. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  230. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  231. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  232. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  233. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  234. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  235. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  236. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  237. package/dist/adapter/webgl-device.js.map +0 -1
  238. package/dist/classic/accessor.js.map +0 -1
  239. package/dist/classic/clear.js.map +0 -1
  240. package/dist/classic/copy-and-blit.js.map +0 -1
  241. package/dist/classic/format-utils.js.map +0 -1
  242. package/dist/classic/typed-array-utils.js.map +0 -1
  243. package/dist/context/context/create-browser-context.js.map +0 -1
  244. package/dist/context/context/create-headless-context.d.ts +0 -9
  245. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  246. package/dist/context/context/create-headless-context.js +0 -42
  247. package/dist/context/context/create-headless-context.js.map +0 -1
  248. package/dist/context/context/webgl-checks.d.ts +0 -13
  249. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  250. package/dist/context/context/webgl-checks.js +0 -31
  251. package/dist/context/context/webgl-checks.js.map +0 -1
  252. package/dist/context/debug/spector.js.map +0 -1
  253. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  254. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  255. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  256. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  257. package/dist/context/polyfill/context-data.js +0 -12
  258. package/dist/context/polyfill/context-data.js.map +0 -1
  259. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  260. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  261. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  262. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  263. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  264. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  265. package/dist/context/polyfill/polyfill-context.js +0 -87
  266. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  267. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  268. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  269. package/dist/context/polyfill/polyfill-table.js +0 -137
  270. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  271. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  272. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  273. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  274. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  275. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  276. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  277. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  278. package/dist/index.js.map +0 -1
  279. package/dist/types.js.map +0 -1
  280. package/src/adapter/device-helpers/device-features.ts +0 -161
  281. package/src/adapter/device-helpers/device-limits.ts +0 -155
  282. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  283. package/src/context/context/create-headless-context.ts +0 -51
  284. package/src/context/context/webgl-checks.ts +0 -51
  285. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  286. package/src/context/polyfill/polyfill-context.ts +0 -104
  287. package/src/context/polyfill/polyfill-table.ts +0 -167
  288. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
@@ -1,159 +1,115 @@
1
- import { Resource, assert, uid, stubRemovedMethods } from '@luma.gl/core';
2
- import { isWebGL2, assertWebGLContext } from "../../context/context/webgl-checks.js";
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { Resource, uid, stubRemovedMethods } from '@luma.gl/core';
3
5
  import { WebGLDevice } from "../webgl-device.js";
4
- import { getKeyValue } from "./constants-to-keys.js";
5
6
  const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
7
+ /**
8
+ * Base class for WebGL object wrappers
9
+ */
6
10
  export class WebGLResource extends Resource {
7
- constructor(device, props, defaultProps) {
8
- super(device, props, defaultProps);
9
- this.device = void 0;
10
- this.gl = void 0;
11
- this.gl2 = void 0;
12
- this._handle = void 0;
13
- this._bound = false;
14
- this.byteLength = 0;
15
- this.device = WebGLDevice.attach(device);
16
- const gl = this.device.gl;
17
- assertWebGLContext(gl);
18
- const {
19
- id
20
- } = props || {};
21
- this.gl = gl;
22
- this.gl2 = gl;
23
- this.id = id || uid(this.constructor.name);
24
- this._handle = props === null || props === void 0 ? void 0 : props.handle;
25
- if (this._handle === undefined) {
26
- this._handle = this._createHandle();
11
+ device;
12
+ gl;
13
+ gl2;
14
+ _handle;
15
+ _bound = false;
16
+ // Only meaningful for resources that allocate GPU memory
17
+ byteLength = 0;
18
+ constructor(device, props, defaultProps) {
19
+ super(device, props, defaultProps);
20
+ this.device = WebGLDevice.attach(device);
21
+ const gl = this.device.gl;
22
+ // extends
23
+ const { id } = props || {};
24
+ this.gl = gl;
25
+ this.gl2 = gl;
26
+ this.id = id || uid(this.constructor.name);
27
+ // Set the handle
28
+ // If handle was provided, use it, otherwise create a new handle
29
+ // TODO - Stores the handle with context loss information
30
+ // this.glCount = glGetContextLossCount(this.gl);
31
+ // Default VertexArray needs to be created with null handle, so compare against undefined
32
+ this._handle = props?.handle;
33
+ if (this._handle === undefined) {
34
+ this._handle = this._createHandle();
35
+ }
36
+ this.byteLength = 0;
27
37
  }
28
- this.byteLength = 0;
29
- }
30
- toString() {
31
- return `${this.constructor.name}(${this.id})`;
32
- }
33
- get handle() {
34
- return this._handle;
35
- }
36
- delete() {
37
- let {
38
- deleteChildren = false
39
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
40
- const children = this._handle && this._deleteHandle(this._handle);
41
- if (this._handle) {
42
- this.removeStats();
38
+ toString() {
39
+ return `${this.constructor.name}(${this.id})`;
43
40
  }
44
- this._handle = null;
45
- if (children && deleteChildren) {
46
- children.filter(Boolean).forEach(child => child.destroy());
41
+ get handle() {
42
+ // TODO - Add context loss handling
43
+ // Will regenerate and reinitialize the handle if necessary
44
+ // const glCount = glGetContextLossCount(this.gl);
45
+ // if (this.glCount !== glCount) {
46
+ // this._handle = this._createHandle(this.props);
47
+ // this._glCount = glCount;
48
+ // // Reinitialize object
49
+ // this.initialize(this.props);
50
+ // }
51
+ return this._handle;
47
52
  }
48
- return this;
49
- }
50
- bind() {
51
- let funcOrHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.handle;
52
- if (typeof funcOrHandle !== 'function') {
53
- this._bindHandle(funcOrHandle);
54
- return this;
53
+ delete({ deleteChildren = false } = {}) {
54
+ // Delete this object, and get refs to any children
55
+ // @ts-expect-error
56
+ const children = this._handle && this._deleteHandle(this._handle);
57
+ if (this._handle) {
58
+ this.removeStats();
59
+ }
60
+ this._handle = null;
61
+ // Optionally, recursively delete the children
62
+ // @ts-expect-error
63
+ if (children && deleteChildren) {
64
+ // @ts-expect-error
65
+ children.filter(Boolean).forEach(child => child.destroy());
66
+ }
67
+ return this;
55
68
  }
56
- let value;
57
- if (!this._bound) {
58
- this._bindHandle(this.handle);
59
- this._bound = true;
60
- value = funcOrHandle();
61
- this._bound = false;
62
- this._bindHandle(null);
63
- } else {
64
- value = funcOrHandle();
69
+ bind(funcOrHandle = this.handle) {
70
+ if (typeof funcOrHandle !== 'function') {
71
+ this._bindHandle(funcOrHandle);
72
+ return this;
73
+ }
74
+ let value;
75
+ if (!this._bound) {
76
+ this._bindHandle(this.handle);
77
+ this._bound = true;
78
+ value = funcOrHandle();
79
+ this._bound = false;
80
+ this._bindHandle(null);
81
+ }
82
+ else {
83
+ value = funcOrHandle();
84
+ }
85
+ return value;
65
86
  }
66
- return value;
67
- }
68
- unbind() {
69
- this.bind(null);
70
- }
71
- getParameter(pname) {
72
- let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
73
- pname = getKeyValue(this.gl, pname);
74
- assert(pname);
75
- const parameters = this.constructor.PARAMETERS || {};
76
- const parameter = parameters[pname];
77
- if (parameter) {
78
- const isWebgl2 = isWebGL2(this.gl);
79
- const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
80
- if (!parameterAvailable) {
81
- const webgl1Default = parameter.webgl1;
82
- const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;
83
- const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;
84
- return defaultValue;
85
- }
87
+ unbind() {
88
+ this.bind(null);
86
89
  }
87
- return this._getParameter(pname, props);
88
- }
89
- getParameters() {
90
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
91
- const {
92
- parameters,
93
- keys
94
- } = options;
95
- const PARAMETERS = this.constructor.PARAMETERS || {};
96
- const isWebgl2 = isWebGL2(this.gl);
97
- const values = {};
98
- const parameterKeys = parameters || Object.keys(PARAMETERS);
99
- for (const pname of parameterKeys) {
100
- const parameter = PARAMETERS[pname];
101
- const parameterAvailable = parameter && (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
102
- if (parameterAvailable) {
103
- const key = keys ? this.device.getGLKey(pname) : pname;
104
- values[key] = this.getParameter(pname, options);
105
- if (keys && parameter.type === 'GLenum') {
106
- values[key] = this.device.getGLKey(values[key]);
107
- }
108
- }
90
+ // Install stubs for removed methods
91
+ stubRemovedMethods(className, version, methodNames) {
92
+ return stubRemovedMethods(this, className, version, methodNames);
93
+ }
94
+ // PUBLIC VIRTUAL METHODS
95
+ initialize(props) { }
96
+ // PROTECTED METHODS - These must be overridden by subclass
97
+ _createHandle() {
98
+ throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
99
+ }
100
+ _deleteHandle() {
101
+ throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
102
+ }
103
+ _bindHandle(handle) {
104
+ throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
105
+ }
106
+ _getOptsFromHandle() {
107
+ throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
109
108
  }
110
- return values;
111
- }
112
- setParameter(pname, value) {
113
- pname = getKeyValue(this.gl, pname);
114
- assert(pname);
115
- const parameters = this.constructor.PARAMETERS || {};
116
- const parameter = parameters[pname];
117
- if (parameter) {
118
- const isWebgl2 = isWebGL2(this.gl);
119
- const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
120
- if (!parameterAvailable) {
121
- throw new Error('Parameter not available on this platform');
122
- }
123
- if (parameter.type === 'GLenum') {
124
- value = getKeyValue(value);
125
- }
109
+ _getParameter(pname, props) {
110
+ throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
126
111
  }
127
- this._setParameter(pname, value);
128
- return this;
129
- }
130
- setParameters(parameters) {
131
- for (const pname in parameters) {
132
- this.setParameter(pname, parameters[pname]);
112
+ _setParameter(pname, value) {
113
+ throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
133
114
  }
134
- return this;
135
- }
136
- stubRemovedMethods(className, version, methodNames) {
137
- return stubRemovedMethods(this, className, version, methodNames);
138
- }
139
- initialize(props) {}
140
- _createHandle() {
141
- throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
142
- }
143
- _deleteHandle() {
144
- throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
145
- }
146
- _bindHandle(handle) {
147
- throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
148
- }
149
- _getOptsFromHandle() {
150
- throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
151
- }
152
- _getParameter(pname, props) {
153
- throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
154
- }
155
- _setParameter(pname, value) {
156
- throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
157
- }
158
115
  }
159
- //# sourceMappingURL=webgl-resource.js.map
@@ -1,12 +1,11 @@
1
1
  import type { BufferProps } from '@luma.gl/core';
2
2
  import { Buffer } from '@luma.gl/core';
3
3
  import { GL } from '@luma.gl/constants';
4
- import { WebGLDevice } from '../webgl-device';
4
+ import { WebGLDevice } from "../webgl-device.js";
5
5
  /** WebGL Buffer interface */
6
6
  export declare class WEBGLBuffer extends Buffer {
7
7
  readonly device: WebGLDevice;
8
- readonly gl: WebGLRenderingContext;
9
- readonly gl2: WebGL2RenderingContext | null;
8
+ readonly gl: WebGL2RenderingContext;
10
9
  readonly handle: WebGLBuffer;
11
10
  /** Target in OpenGL defines the type of buffer */
12
11
  readonly glTarget: GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;
@@ -27,6 +26,6 @@ export declare class WEBGLBuffer extends Buffer {
27
26
  /** Asynchronously read data from the buffer */
28
27
  readAsync(byteOffset?: number, byteLength?: number): Promise<Uint8Array>;
29
28
  /** Synchronously read data from the buffer. WebGL only. */
30
- readSyncWebGL2(byteOffset?: number, byteLength?: number): Uint8Array;
29
+ readSyncWebGL(byteOffset?: number, byteLength?: number): Uint8Array;
31
30
  }
32
31
  //# sourceMappingURL=webgl-buffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-buffer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAS,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,6BAA6B;AAC7B,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,cAAc,CAAC;IACjF,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,YAAY,CAAqB;IAE9E,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;gBAEN,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,WAAgB;IA4BxD,sEAAsE;IACtE,aAAa,CACX,IAAI,EAAE,WAAW,GAAG,eAAe,EACnC,UAAU,GAAE,MAAU,EACtB,UAAU,GAAE,MAAqC,GAChD,IAAI;IAgBP,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IA2BpC,OAAO,IAAI,IAAI;IAWf,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI;IAoBnE,+CAA+C;IAChC,SAAS,CAAC,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIlF,2DAA2D;IAClD,cAAc,CAAC,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;CAiBzE"}
1
+ {"version":3,"file":"webgl-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-buffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAS,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,6BAA6B;AAC7B,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,cAAc,CAAC;IACjF,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,YAAY,CAAqB;IAE9E,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;gBAEN,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,WAAgB;IA2BxD,sEAAsE;IACtE,aAAa,CACX,IAAI,EAAE,WAAW,GAAG,eAAe,EACnC,UAAU,GAAE,MAAU,EACtB,UAAU,GAAE,MAAqC,GAChD,IAAI;IAgBP,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IA2BpC,OAAO,IAAI,IAAI;IAWf,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI;IAmBnE,+CAA+C;IAChC,SAAS,CAAC,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIlF,2DAA2D;IAClD,aAAa,CAAC,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;CAexE"}
@@ -1,130 +1,172 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { Buffer, assert } from '@luma.gl/core';
5
+ import { GL } from '@luma.gl/constants';
6
+ /** WebGL Buffer interface */
2
7
  export class WEBGLBuffer extends Buffer {
3
- constructor(device) {
4
- let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
5
- super(device, props);
6
- this.device = void 0;
7
- this.gl = void 0;
8
- this.gl2 = void 0;
9
- this.handle = void 0;
10
- this.glTarget = void 0;
11
- this.glUsage = void 0;
12
- this.glIndexType = 5123;
13
- this.byteLength = void 0;
14
- this.bytesUsed = void 0;
15
- this.device = device;
16
- this.gl = this.device.gl;
17
- this.gl2 = this.device.gl2;
18
- const handle = typeof props === 'object' ? props.handle : undefined;
19
- this.handle = handle || this.gl.createBuffer();
20
- device.setSpectorMetadata(this.handle, {
21
- ...this.props,
22
- data: typeof this.props.data
23
- });
24
- this.glTarget = getWebGLTarget(this.props.usage);
25
- this.glUsage = getWebGLUsage(this.props.usage);
26
- this.glIndexType = this.props.indexType === 'uint32' ? 5125 : 5123;
27
- if (props.data) {
28
- this._initWithData(props.data, props.byteOffset, props.byteLength);
29
- } else {
30
- this._initWithByteLength(props.byteLength || 0);
8
+ device;
9
+ gl;
10
+ handle;
11
+ /** Target in OpenGL defines the type of buffer */
12
+ glTarget;
13
+ /** Usage is a hint on how frequently the buffer will be updates */
14
+ glUsage;
15
+ /** Index type is needed when issuing draw calls, so we pre-compute it */
16
+ glIndexType = GL.UNSIGNED_SHORT;
17
+ /** Number of bytes allocated on the GPU for this buffer */
18
+ byteLength;
19
+ /** Number of bytes used */
20
+ bytesUsed;
21
+ constructor(device, props = {}) {
22
+ super(device, props);
23
+ this.device = device;
24
+ this.gl = this.device.gl;
25
+ const handle = typeof props === 'object' ? props.handle : undefined;
26
+ this.handle = handle || this.gl.createBuffer();
27
+ device.setSpectorMetadata(this.handle, { ...this.props, data: typeof this.props.data });
28
+ // - In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
29
+ // otherwise buffer type will lock to generic (non-element) buffer
30
+ // - In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
31
+ this.glTarget = getWebGLTarget(this.props.usage);
32
+ this.glUsage = getWebGLUsage(this.props.usage);
33
+ this.glIndexType = this.props.indexType === 'uint32' ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;
34
+ // Set data: (re)initializes the buffer
35
+ if (props.data) {
36
+ this._initWithData(props.data, props.byteOffset, props.byteLength);
37
+ }
38
+ else {
39
+ this._initWithByteLength(props.byteLength || 0);
40
+ }
31
41
  }
32
- }
33
- _initWithData(data) {
34
- let byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
35
- let byteLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : data.byteLength + byteOffset;
36
- const glTarget = this.glTarget;
37
- this.gl.bindBuffer(glTarget, this.handle);
38
- this.gl.bufferData(glTarget, byteLength, this.glUsage);
39
- this.gl.bufferSubData(glTarget, byteOffset, data);
40
- this.gl.bindBuffer(glTarget, null);
41
- this.bytesUsed = byteLength;
42
- this.byteLength = byteLength;
43
- this._setDebugData(data, byteOffset, byteLength);
44
- this.trackAllocatedMemory(byteLength);
45
- }
46
- _initWithByteLength(byteLength) {
47
- assert(byteLength >= 0);
48
- let data = byteLength;
49
- if (byteLength === 0) {
50
- data = new Float32Array(0);
42
+ // PRIVATE METHODS
43
+ /** Allocate a new buffer and initialize to contents of typed array */
44
+ _initWithData(data, byteOffset = 0, byteLength = data.byteLength + byteOffset) {
45
+ // const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
46
+ const glTarget = this.glTarget;
47
+ this.gl.bindBuffer(glTarget, this.handle);
48
+ this.gl.bufferData(glTarget, byteLength, this.glUsage);
49
+ this.gl.bufferSubData(glTarget, byteOffset, data);
50
+ this.gl.bindBuffer(glTarget, null);
51
+ this.bytesUsed = byteLength;
52
+ this.byteLength = byteLength;
53
+ this._setDebugData(data, byteOffset, byteLength);
54
+ this.trackAllocatedMemory(byteLength);
51
55
  }
52
- const glTarget = this.glTarget;
53
- this.gl.bindBuffer(glTarget, this.handle);
54
- this.gl.bufferData(glTarget, data, this.glUsage);
55
- this.gl.bindBuffer(glTarget, null);
56
- this.bytesUsed = byteLength;
57
- this.byteLength = byteLength;
58
- this._setDebugData(null, 0, byteLength);
59
- this.trackAllocatedMemory(byteLength);
60
- return this;
61
- }
62
- destroy() {
63
- if (!this.destroyed && this.handle) {
64
- this.removeStats();
65
- this.trackDeallocatedMemory();
66
- this.gl.deleteBuffer(this.handle);
67
- this.destroyed = true;
68
- this.handle = null;
56
+ // Allocate a GPU buffer of specified size.
57
+ _initWithByteLength(byteLength) {
58
+ assert(byteLength >= 0);
59
+ // Workaround needed for Safari (#291):
60
+ // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.
61
+ let data = byteLength;
62
+ if (byteLength === 0) {
63
+ // @ts-expect-error
64
+ data = new Float32Array(0);
65
+ }
66
+ // const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
67
+ const glTarget = this.glTarget;
68
+ this.gl.bindBuffer(glTarget, this.handle);
69
+ this.gl.bufferData(glTarget, data, this.glUsage);
70
+ this.gl.bindBuffer(glTarget, null);
71
+ this.bytesUsed = byteLength;
72
+ this.byteLength = byteLength;
73
+ this._setDebugData(null, 0, byteLength);
74
+ this.trackAllocatedMemory(byteLength);
75
+ return this;
69
76
  }
70
- }
71
- write(data) {
72
- let byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
73
- const srcOffset = 0;
74
- const byteLength = undefined;
75
- const glTarget = this.device.isWebGL2 ? 36663 : this.glTarget;
76
- this.gl.bindBuffer(glTarget, this.handle);
77
- if (srcOffset !== 0 || byteLength !== undefined) {
78
- this.device.assertWebGL2();
79
- this.gl2.bufferSubData(glTarget, byteOffset, data, srcOffset, byteLength);
80
- } else {
81
- this.gl.bufferSubData(glTarget, byteOffset, data);
77
+ destroy() {
78
+ if (!this.destroyed && this.handle) {
79
+ this.removeStats();
80
+ this.trackDeallocatedMemory();
81
+ this.gl.deleteBuffer(this.handle);
82
+ this.destroyed = true;
83
+ // @ts-expect-error
84
+ this.handle = null;
85
+ }
86
+ }
87
+ write(data, byteOffset = 0) {
88
+ const srcOffset = 0;
89
+ const byteLength = undefined; // data.byteLength;
90
+ // Create the buffer - binding it here for the first time locks the type
91
+ // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
92
+ const glTarget = GL.COPY_WRITE_BUFFER;
93
+ this.gl.bindBuffer(glTarget, this.handle);
94
+ // WebGL2: subData supports additional srcOffset and length parameters
95
+ if (srcOffset !== 0 || byteLength !== undefined) {
96
+ this.gl.bufferSubData(glTarget, byteOffset, data, srcOffset, byteLength);
97
+ }
98
+ else {
99
+ this.gl.bufferSubData(glTarget, byteOffset, data);
100
+ }
101
+ this.gl.bindBuffer(glTarget, null);
102
+ this._setDebugData(data, byteOffset, data.byteLength);
103
+ }
104
+ /** Asynchronously read data from the buffer */
105
+ async readAsync(byteOffset = 0, byteLength) {
106
+ return this.readSyncWebGL(byteOffset, byteLength);
107
+ }
108
+ /** Synchronously read data from the buffer. WebGL only. */
109
+ readSyncWebGL(byteOffset = 0, byteLength) {
110
+ byteLength = byteLength ?? this.byteLength - byteOffset;
111
+ const data = new Uint8Array(byteLength);
112
+ const dstOffset = 0;
113
+ // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type
114
+ this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
115
+ this.gl.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
116
+ this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
117
+ // Update local `data` if offsets are 0
118
+ this._setDebugData(data, byteOffset, byteLength);
119
+ return data;
82
120
  }
83
- this.gl.bindBuffer(glTarget, null);
84
- this._setDebugData(data, byteOffset, data.byteLength);
85
- }
86
- async readAsync() {
87
- let byteOffset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
88
- let byteLength = arguments.length > 1 ? arguments[1] : undefined;
89
- return this.readSyncWebGL2(byteOffset, byteLength);
90
- }
91
- readSyncWebGL2() {
92
- var _byteLength;
93
- let byteOffset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
94
- let byteLength = arguments.length > 1 ? arguments[1] : undefined;
95
- this.device.assertWebGL2();
96
- byteLength = (_byteLength = byteLength) !== null && _byteLength !== void 0 ? _byteLength : this.byteLength - byteOffset;
97
- const data = new Uint8Array(byteLength);
98
- const dstOffset = 0;
99
- this.gl.bindBuffer(36662, this.handle);
100
- this.gl2.getBufferSubData(36662, byteOffset, data, dstOffset, byteLength);
101
- this.gl.bindBuffer(36662, null);
102
- this._setDebugData(data, byteOffset, byteLength);
103
- return data;
104
- }
105
121
  }
122
+ /**
123
+ * Returns a WebGL buffer target
124
+ *
125
+ * @param usage
126
+ * static MAP_READ = 0x01;
127
+ * static MAP_WRITE = 0x02;
128
+ * static COPY_SRC = 0x0004;
129
+ * static COPY_DST = 0x0008;
130
+ * static INDEX = 0x0010;
131
+ * static VERTEX = 0x0020;
132
+ * static UNIFORM = 0x0040;
133
+ * static STORAGE = 0x0080;
134
+ * static INDIRECT = 0x0100;
135
+ * static QUERY_RESOLVE = 0x0200;
136
+ *
137
+ * @returns WebGL buffer targe
138
+ *
139
+ * Buffer bind points in WebGL2
140
+ * gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
141
+ * gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
142
+ * gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
143
+ * gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
144
+ * gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
145
+ */
106
146
  function getWebGLTarget(usage) {
107
- if (usage & Buffer.INDEX) {
108
- return 34963;
109
- }
110
- if (usage & Buffer.VERTEX) {
111
- return 34962;
112
- }
113
- if (usage & Buffer.UNIFORM) {
114
- return 35345;
115
- }
116
- return 34962;
147
+ if (usage & Buffer.INDEX) {
148
+ return GL.ELEMENT_ARRAY_BUFFER;
149
+ }
150
+ if (usage & Buffer.VERTEX) {
151
+ return GL.ARRAY_BUFFER;
152
+ }
153
+ if (usage & Buffer.UNIFORM) {
154
+ return GL.UNIFORM_BUFFER;
155
+ }
156
+ // Binding a buffer for the first time locks the type
157
+ // In WebGL2, we can use GL.COPY_WRITE_BUFFER to avoid locking the type
158
+ return GL.ARRAY_BUFFER;
117
159
  }
160
+ /** @todo usage is not passed correctly */
118
161
  function getWebGLUsage(usage) {
119
- if (usage & Buffer.INDEX) {
120
- return 35044;
121
- }
122
- if (usage & Buffer.VERTEX) {
123
- return 35044;
124
- }
125
- if (usage & Buffer.UNIFORM) {
126
- return 35048;
127
- }
128
- return 35044;
162
+ if (usage & Buffer.INDEX) {
163
+ return GL.STATIC_DRAW;
164
+ }
165
+ if (usage & Buffer.VERTEX) {
166
+ return GL.STATIC_DRAW;
167
+ }
168
+ if (usage & Buffer.UNIFORM) {
169
+ return GL.DYNAMIC_DRAW;
170
+ }
171
+ return GL.STATIC_DRAW;
129
172
  }
130
- //# sourceMappingURL=webgl-buffer.js.map
@@ -1,7 +1,7 @@
1
1
  import type { CopyBufferToBufferOptions, CopyBufferToTextureOptions, CopyTextureToBufferOptions, CopyTextureToTextureOptions } from '@luma.gl/core';
2
2
  import { CommandBuffer } from '@luma.gl/core';
3
3
  import { GL } from '@luma.gl/constants';
4
- import { WebGLDevice } from '../webgl-device';
4
+ import { WebGLDevice } from "../webgl-device.js";
5
5
  type CopyBufferToBufferCommand = {
6
6
  name: 'copy-buffer-to-buffer';
7
7
  options: CopyBufferToBufferOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-command-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-buffer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,aAAa,EAAuB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAU5C,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,KAAK,OAAO,GACR,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,CAAC;AAEhC,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAM;gBAEb,MAAM,EAAE,WAAW;IAK/B,cAAc,CAAC,QAAQ,GAAE,OAAO,EAAkB;CAkBnD;AAwQD,wBAAgB,oBAAoB,CAAC,MAAM,KAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAmB1D;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAcjD"}
1
+ {"version":3,"file":"webgl-command-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-buffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,aAAa,EAAuB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAU5C,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,KAAK,OAAO,GACR,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,CAAC;AAEhC,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAM;gBAEb,MAAM,EAAE,WAAW;IAK/B,cAAc,CAAC,QAAQ,GAAE,OAAO,EAAkB;CAkBnD;AA6PD,wBAAgB,oBAAoB,CAAC,MAAM,KAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAmB1D;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAcjD"}