@luma.gl/webgl 9.0.0-beta.3 → 9.0.0-beta.5

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 (237) hide show
  1. package/dist/adapter/converters/device-parameters.js +240 -158
  2. package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
  3. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/sampler-parameters.js +73 -68
  5. package/dist/adapter/converters/shader-formats.js +33 -46
  6. package/dist/adapter/converters/texture-formats.d.ts +9 -18
  7. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  8. package/dist/adapter/converters/texture-formats.js +454 -871
  9. package/dist/adapter/converters/vertex-formats.js +52 -61
  10. package/dist/adapter/device-helpers/device-features.d.ts +2 -5
  11. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  12. package/dist/adapter/device-helpers/device-features.js +56 -87
  13. package/dist/adapter/device-helpers/device-limits.d.ts +2 -4
  14. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  15. package/dist/adapter/device-helpers/device-limits.js +88 -83
  16. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  17. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  18. package/dist/adapter/device-helpers/get-device-info.js +79 -63
  19. package/dist/adapter/device-helpers/webgl-device-features.d.ts +6 -0
  20. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  21. package/dist/adapter/device-helpers/webgl-device-features.js +52 -0
  22. package/dist/adapter/device-helpers/webgl-device-info.d.ts +4 -0
  23. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/webgl-device-info.js +87 -0
  25. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +50 -0
  26. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  27. package/dist/adapter/device-helpers/webgl-device-limits.js +92 -0
  28. package/dist/adapter/helpers/decode-webgl-types.js +87 -76
  29. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  30. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-layout.js +261 -226
  32. package/dist/adapter/helpers/parse-shader-compiler-log.js +46 -37
  33. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  34. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  35. package/dist/adapter/helpers/set-uniform.js +67 -82
  36. package/dist/adapter/helpers/webgl-topology-utils.js +77 -93
  37. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  38. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  39. package/dist/adapter/objects/constants-to-keys.js +18 -12
  40. package/dist/adapter/objects/webgl-renderbuffer.js +76 -80
  41. package/dist/adapter/objects/webgl-resource.d.ts +1 -1
  42. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  43. package/dist/adapter/objects/webgl-resource.js +204 -154
  44. package/dist/adapter/resources/webgl-buffer.d.ts +2 -3
  45. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  46. package/dist/adapter/resources/webgl-buffer.js +160 -119
  47. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-command-buffer.js +268 -171
  49. package/dist/adapter/resources/webgl-command-encoder.js +32 -40
  50. package/dist/adapter/resources/webgl-external-texture.js +92 -1
  51. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  52. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgl-framebuffer.js +167 -139
  54. package/dist/adapter/resources/webgl-render-pass.js +121 -95
  55. package/dist/adapter/resources/webgl-render-pipeline.d.ts +11 -1
  56. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-render-pipeline.js +378 -228
  58. package/dist/adapter/resources/webgl-sampler.d.ts +0 -2
  59. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-sampler.js +43 -34
  61. package/dist/adapter/resources/webgl-shader.d.ts +10 -1
  62. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgl-shader.js +106 -45
  64. package/dist/adapter/resources/webgl-texture.d.ts +2 -6
  65. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-texture.js +614 -699
  67. package/dist/adapter/resources/webgl-transform-feedback.d.ts +1 -1
  68. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  69. package/dist/adapter/resources/webgl-transform-feedback.js +143 -145
  70. package/dist/adapter/resources/webgl-vertex-array.d.ts +1 -1
  71. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  72. package/dist/adapter/resources/webgl-vertex-array.js +229 -158
  73. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  74. package/dist/adapter/webgl-canvas-context.js +58 -37
  75. package/dist/adapter/webgl-device.d.ts +7 -15
  76. package/dist/adapter/webgl-device.d.ts.map +1 -1
  77. package/dist/adapter/webgl-device.js +440 -381
  78. package/dist/classic/accessor.js +132 -102
  79. package/dist/classic/clear.d.ts +2 -2
  80. package/dist/classic/clear.d.ts.map +1 -1
  81. package/dist/classic/clear.js +73 -73
  82. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  83. package/dist/classic/copy-and-blit.js +176 -177
  84. package/dist/classic/format-utils.d.ts +2 -2
  85. package/dist/classic/format-utils.js +38 -32
  86. package/dist/classic/typed-array-utils.js +95 -81
  87. package/dist/context/{polyfill → context}/context-data.d.ts +2 -1
  88. package/dist/context/context/context-data.d.ts.map +1 -0
  89. package/dist/context/context/context-data.js +33 -0
  90. package/dist/context/context/create-browser-context.d.ts +1 -6
  91. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  92. package/dist/context/context/create-browser-context.js +62 -49
  93. package/dist/context/debug/spector.js +54 -50
  94. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  95. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  96. package/dist/context/debug/webgl-developer-tools.js +102 -76
  97. package/dist/context/parameters/unified-parameter-api.d.ts +3 -3
  98. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  99. package/dist/context/parameters/unified-parameter-api.js +95 -46
  100. package/dist/context/parameters/webgl-parameter-tables.d.ts +110 -99
  101. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  102. package/dist/context/parameters/webgl-parameter-tables.js +456 -404
  103. package/dist/context/state-tracker/deep-array-equal.js +18 -14
  104. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  105. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  106. package/dist/context/state-tracker/track-context-state.js +190 -126
  107. package/dist/context/state-tracker/with-parameters.d.ts +1 -1
  108. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  109. package/dist/context/state-tracker/with-parameters.js +45 -29
  110. package/dist/dist.dev.js +2568 -3786
  111. package/dist/index.cjs +1346 -2464
  112. package/dist/index.cjs.map +7 -0
  113. package/dist/index.d.ts +2 -5
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +36 -26
  116. package/dist/types.js +2 -1
  117. package/dist.min.js +9 -42
  118. package/package.json +11 -15
  119. package/src/adapter/converters/device-parameters.ts +0 -1
  120. package/src/adapter/converters/sampler-parameters.ts +0 -17
  121. package/src/adapter/converters/texture-formats.ts +86 -154
  122. package/src/adapter/device-helpers/webgl-device-features.ts +69 -0
  123. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +3 -4
  124. package/src/adapter/device-helpers/{device-limits.ts → webgl-device-limits.ts} +25 -23
  125. package/src/adapter/helpers/get-shader-layout.ts +17 -28
  126. package/src/adapter/helpers/set-uniform.ts +1 -3
  127. package/src/adapter/objects/constants-to-keys.ts +1 -1
  128. package/src/adapter/objects/webgl-renderbuffer.ts +4 -4
  129. package/src/adapter/objects/webgl-resource.ts +3 -18
  130. package/src/adapter/resources/webgl-buffer.ts +6 -11
  131. package/src/adapter/resources/webgl-command-buffer.ts +20 -30
  132. package/src/adapter/resources/webgl-external-texture.ts +2 -3
  133. package/src/adapter/resources/webgl-framebuffer.ts +4 -5
  134. package/src/adapter/resources/webgl-render-pass.ts +7 -7
  135. package/src/adapter/resources/webgl-render-pipeline.ts +106 -31
  136. package/src/adapter/resources/webgl-sampler.ts +5 -9
  137. package/src/adapter/resources/webgl-shader.ts +57 -10
  138. package/src/adapter/resources/webgl-texture.ts +29 -103
  139. package/src/adapter/resources/webgl-transform-feedback.ts +14 -15
  140. package/src/adapter/resources/webgl-vertex-array.ts +16 -18
  141. package/src/adapter/webgl-canvas-context.ts +1 -7
  142. package/src/adapter/webgl-device.ts +18 -67
  143. package/src/classic/clear.ts +13 -14
  144. package/src/classic/copy-and-blit.ts +1 -2
  145. package/src/context/context/context-data.ts +44 -0
  146. package/src/context/context/create-browser-context.ts +7 -32
  147. package/src/context/debug/webgl-developer-tools.ts +6 -8
  148. package/src/context/parameters/unified-parameter-api.ts +3 -3
  149. package/src/context/parameters/webgl-parameter-tables.ts +66 -75
  150. package/src/context/state-tracker/track-context-state.ts +18 -17
  151. package/src/context/state-tracker/with-parameters.ts +1 -1
  152. package/src/index.ts +2 -17
  153. package/dist/adapter/converters/device-parameters.js.map +0 -1
  154. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  155. package/dist/adapter/converters/shader-formats.js.map +0 -1
  156. package/dist/adapter/converters/texture-formats.js.map +0 -1
  157. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  158. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  159. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  160. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  161. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  162. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  163. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  164. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  165. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  166. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  167. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  168. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  169. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  170. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  171. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  172. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  173. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  174. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  175. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  176. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  177. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  178. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  179. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  180. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  181. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  182. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  183. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  184. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  185. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  186. package/dist/adapter/webgl-device.js.map +0 -1
  187. package/dist/classic/accessor.js.map +0 -1
  188. package/dist/classic/clear.js.map +0 -1
  189. package/dist/classic/copy-and-blit.js.map +0 -1
  190. package/dist/classic/format-utils.js.map +0 -1
  191. package/dist/classic/typed-array-utils.js.map +0 -1
  192. package/dist/context/context/create-browser-context.js.map +0 -1
  193. package/dist/context/context/create-headless-context.d.ts +0 -9
  194. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  195. package/dist/context/context/create-headless-context.js +0 -42
  196. package/dist/context/context/create-headless-context.js.map +0 -1
  197. package/dist/context/context/webgl-checks.d.ts +0 -13
  198. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  199. package/dist/context/context/webgl-checks.js +0 -31
  200. package/dist/context/context/webgl-checks.js.map +0 -1
  201. package/dist/context/debug/spector.js.map +0 -1
  202. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  203. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  204. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  205. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  206. package/dist/context/polyfill/context-data.js +0 -12
  207. package/dist/context/polyfill/context-data.js.map +0 -1
  208. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  209. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  210. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  211. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  212. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  213. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  214. package/dist/context/polyfill/polyfill-context.js +0 -87
  215. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  216. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  217. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  218. package/dist/context/polyfill/polyfill-table.js +0 -137
  219. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  220. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  221. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  222. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  223. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  224. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  225. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  226. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  227. package/dist/index.js.map +0 -1
  228. package/dist/types.js.map +0 -1
  229. package/src/adapter/device-helpers/device-features.ts +0 -161
  230. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  231. package/src/context/context/create-headless-context.ts +0 -51
  232. package/src/context/context/webgl-checks.ts +0 -51
  233. package/src/context/polyfill/context-data.ts +0 -30
  234. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  235. package/src/context/polyfill/polyfill-context.ts +0 -104
  236. package/src/context/polyfill/polyfill-table.ts +0 -167
  237. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
@@ -1,66 +1,57 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+ import { GL } from '@luma.gl/constants';
4
+ /** Get vertex format from GL constants */
1
5
  export function getVertexFormatFromGL(type, components) {
2
- const base = getVertexTypeFromGL(type);
3
- switch (components) {
4
- case 1:
5
- return base;
6
- case 2:
7
- return `${base}x2`;
8
- case 3:
9
- return `${base}x3`;
10
- case 4:
11
- return `${base}x4`;
12
- }
13
- throw new Error(String(components));
6
+ const base = getVertexTypeFromGL(type);
7
+ // prettier-ignore
8
+ switch (components) {
9
+ // @ts-expect-error TODO deal with lack of formats
10
+ case 1: return base;
11
+ case 2: return `${base}x2`;
12
+ // @ts-expect-error TODO deal with lack of formats
13
+ case 3: return `${base}x3`;
14
+ case 4: return `${base}x4`;
15
+ }
16
+ // @ts-ignore unreachable
17
+ throw new Error(String(components));
14
18
  }
15
- export function getVertexTypeFromGL(type) {
16
- let normalized = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
17
- switch (type) {
18
- case 5124:
19
- return normalized ? 'sint32' : 'sint32';
20
- case 5125:
21
- return normalized ? 'uint32' : 'uint32';
22
- case 5122:
23
- return normalized ? 'sint16' : 'unorm16';
24
- case 5123:
25
- return normalized ? 'uint16' : 'unorm16';
26
- case 5120:
27
- return normalized ? 'sint8' : 'snorm16';
28
- case 5121:
29
- return normalized ? 'uint8' : 'unorm8';
30
- case 5126:
31
- return 'float32';
32
- case 5131:
33
- return 'float16';
34
- }
35
- throw new Error(String(type));
19
+ /** Get data type from GL constants */
20
+ export function getVertexTypeFromGL(type, normalized = false) {
21
+ // prettier-ignore
22
+ switch (type) {
23
+ // WebGPU does not support normalized 32 bit integer attributes
24
+ case GL.INT: return normalized ? 'sint32' : 'sint32';
25
+ case GL.UNSIGNED_INT: return normalized ? 'uint32' : 'uint32';
26
+ case GL.SHORT: return normalized ? 'sint16' : 'unorm16';
27
+ case GL.UNSIGNED_SHORT: return normalized ? 'uint16' : 'unorm16';
28
+ case GL.BYTE: return normalized ? 'sint8' : 'snorm16';
29
+ case GL.UNSIGNED_BYTE: return normalized ? 'uint8' : 'unorm8';
30
+ case GL.FLOAT: return 'float32';
31
+ case GL.HALF_FLOAT: return 'float16';
32
+ }
33
+ // @ts-ignore unreachable
34
+ throw new Error(String(type));
36
35
  }
37
36
  export function getGLFromVertexType(dataType) {
38
- switch (dataType) {
39
- case 'uint8':
40
- return 5121;
41
- case 'sint8':
42
- return 5120;
43
- case 'unorm8':
44
- return 5121;
45
- case 'snorm8':
46
- return 5120;
47
- case 'uint16':
48
- return 5123;
49
- case 'sint16':
50
- return 5122;
51
- case 'unorm16':
52
- return 5123;
53
- case 'snorm16':
54
- return 5122;
55
- case 'uint32':
56
- return 5125;
57
- case 'sint32':
58
- return 5124;
59
- case 'float16':
60
- return 5131;
61
- case 'float32':
62
- return 5126;
63
- }
64
- throw new Error(String(dataType));
37
+ // prettier-ignore
38
+ switch (dataType) {
39
+ case 'uint8': return GL.UNSIGNED_BYTE;
40
+ case 'sint8': return GL.BYTE;
41
+ case 'unorm8': return GL.UNSIGNED_BYTE;
42
+ case 'snorm8': return GL.BYTE;
43
+ case 'uint16': return GL.UNSIGNED_SHORT;
44
+ case 'sint16': return GL.SHORT;
45
+ case 'unorm16': return GL.UNSIGNED_SHORT;
46
+ case 'snorm16': return GL.SHORT;
47
+ case 'uint32': return GL.UNSIGNED_INT;
48
+ case 'sint32': return GL.INT;
49
+ // WebGPU does not support normalized 32 bit integer attributes
50
+ // case 'unorm32': return GL.UNSIGNED_INT;
51
+ // case 'snorm32': return GL.INT;
52
+ case 'float16': return GL.HALF_FLOAT;
53
+ case 'float32': return GL.FLOAT;
54
+ }
55
+ // @ts-ignore unreachable
56
+ throw new Error(String(dataType));
65
57
  }
66
- //# sourceMappingURL=vertex-formats.js.map
@@ -1,9 +1,6 @@
1
1
  import { DeviceFeature } from '@luma.gl/core';
2
2
  /** Get WebGPU style feature strings */
3
- export declare function getDeviceFeatures(gl: WebGLRenderingContext): Set<DeviceFeature>;
3
+ export declare function getDeviceFeatures(gl: WebGL2RenderingContext): Set<DeviceFeature>;
4
4
  /** Extract all WebGL features */
5
- export declare function getWebGLFeatures(gl: WebGLRenderingContext): Set<DeviceFeature>;
6
- export declare function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName: any, opts?: {
7
- behavior?: any;
8
- }): any;
5
+ export declare function getWebGLFeatures(gl: WebGL2RenderingContext): Set<DeviceFeature>;
9
6
  //# sourceMappingURL=device-features.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"device-features.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/device-features.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAK5C,uCAAuC;AACvC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,GAAG,GAAG,CAAC,aAAa,CAAC,CAiB/E;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,qBAAqB,GAAG,GAAG,CAAC,aAAa,CAAC,CAe9E;AAgDD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,qBAAqB,EAAE,aAAa,KAAA,EAAE,IAAI,GAAE;IAAC,QAAQ,CAAC,MAAA;CAAM,OAsBvG"}
1
+ {"version":3,"file":"device-features.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/device-features.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAG5C,uCAAuC;AACvC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,sBAAsB,GAAG,GAAG,CAAC,aAAa,CAAC,CAiBhF;AAED,iCAAiC;AACjC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,sBAAsB,GAAG,GAAG,CAAC,aAAa,CAAC,CAe/E"}
@@ -1,96 +1,65 @@
1
- import { isWebGL2 } from "../../context/context/webgl-checks.js";
2
- import { isOldIE } from "./is-old-ie.js";
3
- import { getTextureFeatures, _checkFloat32ColorAttachment } from "../converters/texture-formats.js";
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+ import { getTextureFeatures } from '../converters/texture-formats';
4
+ /** Get WebGPU style feature strings */
4
5
  export function getDeviceFeatures(gl) {
5
- const features = getWebGLFeatures(gl);
6
- for (const textureFeature of getTextureFeatures(gl)) {
7
- features.add(textureFeature);
8
- }
9
- return features;
6
+ const features = getWebGLFeatures(gl);
7
+ // texture features
8
+ // features.add('texture-compression-bc');
9
+ for (const textureFeature of getTextureFeatures(gl)) {
10
+ features.add(textureFeature);
11
+ }
12
+ // TODO
13
+ // features.add('depth-clip-control'); // GPUPrimitiveState.clampDepth
14
+ // features.add('depth24unorm-stencil8'); // GPUTextureFormat 'depth24unorm-stencil8'.
15
+ // features.add('depth32float-stencil8'); // GPUTextureFormat 'depth32float-stencil8'.
16
+ // features.add('timestamp-query'); // GPUQueryType "timestamp-query"
17
+ // "indirect-first-instance"
18
+ return features;
10
19
  }
20
+ /** Extract all WebGL features */
11
21
  export function getWebGLFeatures(gl) {
12
- gl.getExtension('EXT_color_buffer_float');
13
- gl.getExtension('WEBGL_color_buffer_float');
14
- gl.getExtension('EXT_float_blend');
15
- const features = new Set();
16
- for (const feature of Object.keys(WEBGL_FEATURES)) {
17
- if (isFeatureSupported(gl, feature)) {
18
- features.add(feature);
22
+ // Enables EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend
23
+ gl.getExtension('EXT_color_buffer_float');
24
+ gl.getExtension('WEBGL_color_buffer_float');
25
+ gl.getExtension('EXT_float_blend');
26
+ const features = new Set(WEBGL_ALWAYS_FEATURES);
27
+ for (const feature of Object.keys(WEBGL_FEATURES)) {
28
+ // @ts-expect-error
29
+ if (isFeatureSupported(gl, feature)) {
30
+ // @ts-expect-error
31
+ features.add(feature);
32
+ }
19
33
  }
20
- }
21
- return features;
34
+ return features;
22
35
  }
23
36
  function isFeatureSupported(gl, feature) {
24
- const featureInfo = WEBGL_FEATURES[feature];
25
- if (!featureInfo) {
26
- return false;
27
- }
28
- const [webgl1Feature, webgl2Feature] = featureInfo || [];
29
- const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;
30
- if (typeof featureDefinition === 'boolean') {
31
- return featureDefinition;
32
- }
33
- switch (feature) {
34
- case 'texture-renderable-rgba32float-webgl':
35
- return isWebGL2(gl) ? Boolean(gl.getExtension(featureDefinition)) : _checkFloat32ColorAttachment(gl);
36
- case 'glsl-derivatives':
37
- return canCompileGLSLExtension(gl, featureDefinition);
38
- case 'glsl-frag-data':
39
- return canCompileGLSLExtension(gl, featureDefinition, {
40
- behavior: 'require'
41
- });
42
- case 'glsl-frag-depth':
43
- return canCompileGLSLExtension(gl, featureDefinition);
44
- default:
45
- return Boolean(gl.getExtension(featureDefinition));
46
- }
47
- }
48
- const compiledGLSLExtensions = {};
49
- export function canCompileGLSLExtension(gl, extensionName) {
50
- let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
51
- if (!isOldIE(opts)) {
52
- return true;
53
- }
54
- if (extensionName in compiledGLSLExtensions) {
55
- return compiledGLSLExtensions[extensionName];
56
- }
57
- const behavior = opts.behavior || 'enable';
58
- const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
59
- const shader = gl.createShader(35633);
60
- if (!shader) {
61
- throw new Error('shader');
62
- }
63
- gl.shaderSource(shader, source);
64
- gl.compileShader(shader);
65
- const canCompile = gl.getShaderParameter(shader, 35713);
66
- gl.deleteShader(shader);
67
- compiledGLSLExtensions[extensionName] = canCompile;
68
- return canCompile;
37
+ const featureInfo = WEBGL_FEATURES[feature];
38
+ if (!featureInfo) {
39
+ return false;
40
+ }
41
+ // Get extension name from table
42
+ const featureDefinition = featureInfo;
43
+ // Check if the value is dependent on checking one or more extensions
44
+ if (typeof featureDefinition === 'boolean') {
45
+ return featureDefinition;
46
+ }
47
+ return Boolean(gl.getExtension(featureDefinition));
69
48
  }
49
+ const WEBGL_ALWAYS_FEATURES = ['webgl', 'glsl', 'transform-feedback-webgl'];
50
+ /**
51
+ * Defines luma.gl "feature" names and semantics
52
+ * when value is 'string' it is the name of the extension that enables this feature
53
+ */
70
54
  const WEBGL_FEATURES = {
71
- 'webgl': [true, true],
72
- 'webgl2': [false, true],
73
- 'timer-query-webgl': ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],
74
- 'transform-feedback-webgl2': [false, true],
75
- 'vertex-array-object-webgl1': ['OES_vertex_array_object', true],
76
- 'instanced-rendering-webgl1': ['ANGLE_instanced_arrays', true],
77
- 'multiple-render-targets-webgl1': ['WEBGL_draw_buffers', true],
78
- 'index-uint32-webgl1': ['OES_element_index_uint', true],
79
- 'blend-minmax-webgl1': ['EXT_blend_minmax', true],
80
- 'texture-blend-float-webgl1': ['EXT_float_blend', 'EXT_float_blend'],
81
- 'texture-formats-srgb-webgl1': ['EXT_sRGB', true],
82
- 'texture-formats-depth-webgl1': ['WEBGL_depth_texture', true],
83
- 'texture-formats-float32-webgl1': ['OES_texture_float', true],
84
- 'texture-formats-float16-webgl1': ['OES_texture_half_float', true],
85
- 'texture-filter-linear-float32-webgl': ['OES_texture_float_linear', 'OES_texture_float_linear'],
86
- 'texture-filter-linear-float16-webgl': ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],
87
- 'texture-filter-anisotropic-webgl': ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],
88
- 'texture-renderable-rgba32float-webgl': ['WEBGL_color_buffer_float', 'EXT_color_buffer_float'],
89
- 'texture-renderable-float32-webgl': [false, 'EXT_color_buffer_float'],
90
- 'texture-renderable-float16-webgl': ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],
91
- 'glsl-frag-data': ['WEBGL_draw_buffers', true],
92
- 'glsl-frag-depth': ['EXT_frag_depth', true],
93
- 'glsl-derivatives': ['OES_standard_derivatives', true],
94
- 'glsl-texture-lod': ['EXT_shader_texture_lod', true]
55
+ 'timer-query-webgl': 'EXT_disjoint_timer_query_webgl2',
56
+ 'transform-feedback-webgl': true,
57
+ // WEBGL1 SUPPORT
58
+ 'texture-blend-float-webgl': 'EXT_float_blend',
59
+ 'float32-filterable-linear-webgl': 'OES_texture_float_linear',
60
+ 'float16-filterable-linear-webgl': 'OES_texture_half_float_linear',
61
+ 'texture-filterable-anisotropic-webgl': 'EXT_texture_filter_anisotropic',
62
+ // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS
63
+ 'float32-renderable-webgl': 'EXT_color_buffer_float',
64
+ 'float16-renderable-webgl': 'EXT_color_buffer_half_float',
95
65
  };
96
- //# sourceMappingURL=device-features.js.map
@@ -1,7 +1,7 @@
1
1
  import type { DeviceLimits } from '@luma.gl/core';
2
2
  import { GL } from '@luma.gl/constants';
3
3
  /** Populate a WebGPU style device limits */
4
- export declare function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits;
4
+ export declare function getDeviceLimits(gl: WebGL2RenderingContext): DeviceLimits;
5
5
  /** WebGL context limits */
6
6
  export type WebGLLimits = {
7
7
  [GL.ALIASED_LINE_WIDTH_RANGE]: [number, number];
@@ -20,7 +20,6 @@ export type WebGLLimits = {
20
20
  [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: number;
21
21
  [GL.MAX_3D_TEXTURE_SIZE]: number;
22
22
  [GL.MAX_ARRAY_TEXTURE_LAYERS]: number;
23
- [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: number;
24
23
  [GL.MAX_COLOR_ATTACHMENTS]: number;
25
24
  [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: number;
26
25
  [GL.MAX_COMBINED_UNIFORM_BLOCKS]: number;
@@ -33,7 +32,6 @@ export type WebGLLimits = {
33
32
  [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: number;
34
33
  [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: number;
35
34
  [GL.MAX_SAMPLES]: number;
36
- [GL.MAX_SERVER_WAIT_TIMEOUT]: number;
37
35
  [GL.MAX_TEXTURE_LOD_BIAS]: number;
38
36
  [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: number;
39
37
  [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: number;
@@ -48,5 +46,5 @@ export type WebGLLimits = {
48
46
  [GL.MAX_PROGRAM_TEXEL_OFFSET]: number;
49
47
  [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: number;
50
48
  };
51
- export declare function getWebGLLimits(gl: WebGLRenderingContext): WebGLLimits;
49
+ export declare function getWebGLLimits(gl: WebGL2RenderingContext): WebGLLimits;
52
50
  //# sourceMappingURL=device-limits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"device-limits.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/device-limits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-limits.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/device-limits.ts"],"names":[],"mappings":"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"}
@@ -1,87 +1,92 @@
1
- import { getWebGL2Context } from "../../context/context/webgl-checks.js";
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+ import { GL } from '@luma.gl/constants';
4
+ /** Populate a WebGPU style device limits */
2
5
  export function getDeviceLimits(gl) {
3
- const gl2 = getWebGL2Context(gl);
4
- return {
5
- maxTextureDimension1D: 0,
6
- maxTextureDimension2D: gl.getParameter(3379),
7
- maxTextureDimension3D: gl2 ? gl2.getParameter(32883) : 0,
8
- maxTextureArrayLayers: gl2 ? gl2.getParameter(35071) : 0,
9
- maxBindGroups: 1,
10
- maxDynamicUniformBuffersPerPipelineLayout: 0,
11
- maxDynamicStorageBuffersPerPipelineLayout: 0,
12
- maxSampledTexturesPerShaderStage: gl.getParameter(35660),
13
- maxSamplersPerShaderStage: gl.getParameter(35661),
14
- maxStorageBuffersPerShaderStage: 0,
15
- maxStorageTexturesPerShaderStage: 0,
16
- maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(35375) : 0,
17
- maxUniformBufferBindingSize: gl2 ? gl2.getParameter(35376) : 0,
18
- maxStorageBufferBindingSize: 0,
19
- minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(35380) : 0,
20
- minStorageBufferOffsetAlignment: 0,
21
- maxVertexBuffers: 0,
22
- maxVertexAttributes: gl.getParameter(34921),
23
- maxVertexBufferArrayStride: 2048,
24
- maxInterStageShaderComponents: gl2 ? gl2.getParameter(35659) : 0,
25
- maxComputeWorkgroupStorageSize: 0,
26
- maxComputeInvocationsPerWorkgroup: 0,
27
- maxComputeWorkgroupSizeX: 0,
28
- maxComputeWorkgroupSizeY: 0,
29
- maxComputeWorkgroupSizeZ: 0,
30
- maxComputeWorkgroupsPerDimension: 0
31
- };
6
+ return {
7
+ maxTextureDimension1D: 0, // WebGL does not support 1D textures
8
+ maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),
9
+ maxTextureDimension3D: gl.getParameter(GL.MAX_3D_TEXTURE_SIZE),
10
+ maxTextureArrayLayers: gl.getParameter(GL.MAX_ARRAY_TEXTURE_LAYERS),
11
+ maxBindGroups: 1, // TBD - if we emulate bind groups we could support any number...
12
+ maxDynamicUniformBuffersPerPipelineLayout: 0, // TBD
13
+ maxDynamicStorageBuffersPerPipelineLayout: 0, // TBD
14
+ maxSampledTexturesPerShaderStage: gl.getParameter(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // TBD
15
+ maxSamplersPerShaderStage: gl.getParameter(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),
16
+ maxStorageBuffersPerShaderStage: 0, // TBD
17
+ maxStorageTexturesPerShaderStage: 0, // TBD
18
+ maxUniformBuffersPerShaderStage: gl.getParameter(GL.MAX_UNIFORM_BUFFER_BINDINGS),
19
+ maxUniformBufferBindingSize: gl.getParameter(GL.MAX_UNIFORM_BLOCK_SIZE),
20
+ maxStorageBufferBindingSize: 0,
21
+ minUniformBufferOffsetAlignment: gl.getParameter(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT),
22
+ minStorageBufferOffsetAlignment: 0, // TBD
23
+ maxVertexBuffers: 0,
24
+ maxVertexAttributes: gl.getParameter(GL.MAX_VERTEX_ATTRIBS),
25
+ maxVertexBufferArrayStride: 2048, // TBD, this is just the default value from WebGPU
26
+ maxInterStageShaderComponents: gl.getParameter(GL.MAX_VARYING_COMPONENTS),
27
+ maxComputeWorkgroupStorageSize: 0, // WebGL does not support compute shaders
28
+ maxComputeInvocationsPerWorkgroup: 0, // WebGL does not support compute shaders
29
+ maxComputeWorkgroupSizeX: 0, // WebGL does not support compute shaders
30
+ maxComputeWorkgroupSizeY: 0, // WebGL does not support compute shaders
31
+ maxComputeWorkgroupSizeZ: 0, // WebGL does not support compute shaders
32
+ maxComputeWorkgroupsPerDimension: 0 // WebGL does not support compute shaders
33
+ };
32
34
  }
33
35
  export function getWebGLLimits(gl) {
34
- const gl2 = getWebGL2Context(gl);
35
- function get(pname) {
36
- return gl.getParameter(pname);
37
- }
38
- function get2(pname, defaultValue) {
39
- return gl2 ? gl2.getParameter(pname) : defaultValue || 0;
40
- }
41
- return {
42
- [33902]: get(33902),
43
- [33901]: get(33901),
44
- [3379]: get(3379),
45
- [34076]: get(34076),
46
- [34930]: get(34930),
47
- [35661]: get(35661),
48
- [35660]: get(35660),
49
- [34024]: get(34024),
50
- [36348]: get(36348),
51
- [34921]: get(34921),
52
- [36347]: get(36347),
53
- [36349]: get(36349),
54
- [3386]: get(3386),
55
- [34047]: get(34047),
56
- [32883]: get2(32883),
57
- [35071]: get2(35071),
58
- [37447]: get2(37447),
59
- [36063]: get2(36063),
60
- [35379]: get2(35379),
61
- [35374]: get2(35374),
62
- [35377]: get2(35377),
63
- [34852]: get2(34852),
64
- [36203]: get2(36203),
65
- [33001]: get2(33001),
66
- [33000]: get2(33000),
67
- [37157]: get2(37157),
68
- [35373]: get2(35373),
69
- [35657]: get2(35657),
70
- [36183]: get2(36183),
71
- [37137]: get2(37137),
72
- [34045]: get2(34045),
73
- [35978]: get2(35978),
74
- [35979]: get2(35979),
75
- [35968]: get2(35968),
76
- [35376]: get2(35376),
77
- [35375]: get2(35375),
78
- [35659]: get2(35659),
79
- [37154]: get2(37154),
80
- [35371]: get2(35371),
81
- [35658]: get2(35658),
82
- [35076]: get2(35076),
83
- [35077]: get2(35077),
84
- [35380]: get2(35380)
85
- };
36
+ function get(pname) {
37
+ return gl.getParameter(pname);
38
+ }
39
+ function get2(pname, defaultValue) {
40
+ return gl.getParameter(pname) || defaultValue;
41
+ }
42
+ // function getMaxAnistropy() {
43
+ // const extension = gl.getExtension('EXT_texture_filter_anisotropic');
44
+ // }
45
+ return {
46
+ [GL.ALIASED_LINE_WIDTH_RANGE]: get(GL.ALIASED_LINE_WIDTH_RANGE),
47
+ [GL.ALIASED_POINT_SIZE_RANGE]: get(GL.ALIASED_POINT_SIZE_RANGE),
48
+ [GL.MAX_TEXTURE_SIZE]: get(GL.MAX_TEXTURE_SIZE),
49
+ [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: get(GL.MAX_CUBE_MAP_TEXTURE_SIZE), // GLint
50
+ [GL.MAX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_TEXTURE_IMAGE_UNITS), // GLint
51
+ [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: get(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS), // GLint
52
+ [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // GLint
53
+ [GL.MAX_RENDERBUFFER_SIZE]: get(GL.MAX_RENDERBUFFER_SIZE), // GLint
54
+ [GL.MAX_VARYING_VECTORS]: get(GL.MAX_VARYING_VECTORS), // GLint
55
+ [GL.MAX_VERTEX_ATTRIBS]: get(GL.MAX_VERTEX_ATTRIBS), // GLint
56
+ [GL.MAX_VERTEX_UNIFORM_VECTORS]: get(GL.MAX_VERTEX_UNIFORM_VECTORS), // GLint
57
+ [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: get(GL.MAX_FRAGMENT_UNIFORM_VECTORS), // GLint
58
+ [GL.MAX_VIEWPORT_DIMS]: get(GL.MAX_VIEWPORT_DIMS),
59
+ // Extensions
60
+ [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: get(GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT), // getMaxAnistropy(),
61
+ // WebGL2 Limits
62
+ [GL.MAX_3D_TEXTURE_SIZE]: get2(GL.MAX_3D_TEXTURE_SIZE), // GLint
63
+ [GL.MAX_ARRAY_TEXTURE_LAYERS]: get2(GL.MAX_ARRAY_TEXTURE_LAYERS), // GLint
64
+ // [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: get2(GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL), // GLint64
65
+ [GL.MAX_COLOR_ATTACHMENTS]: get2(GL.MAX_COLOR_ATTACHMENTS), // GLint
66
+ [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS), // GLint64
67
+ [GL.MAX_COMBINED_UNIFORM_BLOCKS]: get2(GL.MAX_COMBINED_UNIFORM_BLOCKS), // GLint
68
+ [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS), // GLint64
69
+ [GL.MAX_DRAW_BUFFERS]: get2(GL.MAX_DRAW_BUFFERS), // GLint
70
+ [GL.MAX_ELEMENT_INDEX]: get2(GL.MAX_ELEMENT_INDEX), // GLint64
71
+ [GL.MAX_ELEMENTS_INDICES]: get2(GL.MAX_ELEMENTS_INDICES), // GLint
72
+ [GL.MAX_ELEMENTS_VERTICES]: get2(GL.MAX_ELEMENTS_VERTICES), // GLint
73
+ [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: get2(GL.MAX_FRAGMENT_INPUT_COMPONENTS), // GLint
74
+ [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: get2(GL.MAX_FRAGMENT_UNIFORM_BLOCKS), // GLint
75
+ [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_FRAGMENT_UNIFORM_COMPONENTS), // GLint
76
+ [GL.MAX_SAMPLES]: get2(GL.MAX_SAMPLES), // GLint
77
+ // [GL.MAX_SERVER_WAIT_TIMEOUT]: get2(GL.MAX_SERVER_WAIT_TIMEOUT), // GLint64
78
+ [GL.MAX_TEXTURE_LOD_BIAS]: get2(GL.MAX_TEXTURE_LOD_BIAS), // GLfloat
79
+ [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS), // GLint
80
+ [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS), // GLint
81
+ [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS), // GLint
82
+ [GL.MAX_UNIFORM_BLOCK_SIZE]: get2(GL.MAX_UNIFORM_BLOCK_SIZE), // GLint64
83
+ [GL.MAX_UNIFORM_BUFFER_BINDINGS]: get2(GL.MAX_UNIFORM_BUFFER_BINDINGS), // GLint
84
+ [GL.MAX_VARYING_COMPONENTS]: get2(GL.MAX_VARYING_COMPONENTS), // GLint
85
+ [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: get2(GL.MAX_VERTEX_OUTPUT_COMPONENTS), // GLint
86
+ [GL.MAX_VERTEX_UNIFORM_BLOCKS]: get2(GL.MAX_VERTEX_UNIFORM_BLOCKS), // GLint
87
+ [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_VERTEX_UNIFORM_COMPONENTS), // GLint
88
+ [GL.MIN_PROGRAM_TEXEL_OFFSET]: get2(GL.MIN_PROGRAM_TEXEL_OFFSET), // GLint
89
+ [GL.MAX_PROGRAM_TEXEL_OFFSET]: get2(GL.MAX_PROGRAM_TEXEL_OFFSET), // GLint
90
+ [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: get2(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) // GLint
91
+ };
86
92
  }
87
- //# sourceMappingURL=device-limits.js.map
@@ -1,4 +1,4 @@
1
1
  import { DeviceInfo } from '@luma.gl/core';
2
2
  /** @returns strings identifying the GPU vendor and driver. */
3
- export declare function getDeviceInfo(gl: WebGLRenderingContext): DeviceInfo;
3
+ export declare function getDeviceInfo(gl: WebGL2RenderingContext): DeviceInfo;
4
4
  //# sourceMappingURL=get-device-info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-device-info.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/get-device-info.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAIzC,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,EAAE,EAAE,qBAAqB,GAAG,UAAU,CAuCnE"}
1
+ {"version":3,"file":"get-device-info.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/get-device-info.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAGzC,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,EAAE,EAAE,sBAAsB,GAAG,UAAU,CAuCpE"}