@luma.gl/webgl 9.0.0-alpha.46 → 9.0.0-alpha.48
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.
- package/LICENSE +34 -0
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +73 -40
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +60 -61
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/shader-formats.js +12 -13
- package/dist/adapter/converters/shader-formats.js.map +1 -1
- package/dist/adapter/converters/texture-formats.js +179 -180
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +20 -21
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +2 -2
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +53 -54
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +23 -12
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.js +31 -32
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +29 -30
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -4
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +40 -41
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.js +38 -39
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +5 -6
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +14 -15
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +25 -26
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +22 -23
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +2 -3
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +7 -8
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +2 -3
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +3 -4
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +27 -28
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +5 -11
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.js +16 -13
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.d.ts +2 -2
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.js +5 -6
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.js +4 -5
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/copy-and-blit.js +16 -17
- package/dist/classic/copy-and-blit.js.map +1 -1
- package/dist/classic/format-utils.js +14 -15
- package/dist/classic/format-utils.js.map +1 -1
- package/dist/classic/typed-array-utils.d.ts +2 -0
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +18 -19
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +0 -1
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +256 -257
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +34 -35
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +9 -10
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -17
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/dist.dev.js +987 -2700
- package/dist/index.cjs +390 -267
- package/dist.min.js +39 -28
- package/package.json +5 -5
- package/src/adapter/converters/device-parameters.ts +40 -25
- package/src/adapter/device-helpers/get-device-info.ts +36 -8
- package/src/adapter/helpers/parse-shader-compiler-log.ts +21 -7
- package/src/adapter/resources/webgl-transform-feedback.ts +13 -16
- package/src/adapter/resources/webgl-vertex-array.ts +4 -3
- package/src/adapter/webgl-device.ts +3 -2
- package/src/classic/typed-array-utils.ts +2 -0
|
@@ -1,28 +1,27 @@
|
|
|
1
|
-
import { GL } from '@luma.gl/constants';
|
|
2
1
|
import { getWebGL2Context } from "../../context/context/webgl-checks.js";
|
|
3
2
|
export function getDeviceLimits(gl) {
|
|
4
3
|
const gl2 = getWebGL2Context(gl);
|
|
5
4
|
return {
|
|
6
5
|
maxTextureDimension1D: 0,
|
|
7
|
-
maxTextureDimension2D: gl.getParameter(
|
|
8
|
-
maxTextureDimension3D: gl2 ? gl2.getParameter(
|
|
9
|
-
maxTextureArrayLayers: gl2 ? gl2.getParameter(
|
|
6
|
+
maxTextureDimension2D: gl.getParameter(3379),
|
|
7
|
+
maxTextureDimension3D: gl2 ? gl2.getParameter(32883) : 0,
|
|
8
|
+
maxTextureArrayLayers: gl2 ? gl2.getParameter(35071) : 0,
|
|
10
9
|
maxBindGroups: 1,
|
|
11
10
|
maxDynamicUniformBuffersPerPipelineLayout: 0,
|
|
12
11
|
maxDynamicStorageBuffersPerPipelineLayout: 0,
|
|
13
|
-
maxSampledTexturesPerShaderStage: gl.getParameter(
|
|
14
|
-
maxSamplersPerShaderStage: gl.getParameter(
|
|
12
|
+
maxSampledTexturesPerShaderStage: gl.getParameter(35660),
|
|
13
|
+
maxSamplersPerShaderStage: gl.getParameter(35661),
|
|
15
14
|
maxStorageBuffersPerShaderStage: 0,
|
|
16
15
|
maxStorageTexturesPerShaderStage: 0,
|
|
17
|
-
maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(
|
|
18
|
-
maxUniformBufferBindingSize: gl2 ? gl2.getParameter(
|
|
16
|
+
maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(35375) : 0,
|
|
17
|
+
maxUniformBufferBindingSize: gl2 ? gl2.getParameter(35376) : 0,
|
|
19
18
|
maxStorageBufferBindingSize: 0,
|
|
20
|
-
minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(
|
|
19
|
+
minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(35380) : 0,
|
|
21
20
|
minStorageBufferOffsetAlignment: 0,
|
|
22
21
|
maxVertexBuffers: 0,
|
|
23
|
-
maxVertexAttributes: gl.getParameter(
|
|
22
|
+
maxVertexAttributes: gl.getParameter(34921),
|
|
24
23
|
maxVertexBufferArrayStride: 2048,
|
|
25
|
-
maxInterStageShaderComponents: gl2 ? gl2.getParameter(
|
|
24
|
+
maxInterStageShaderComponents: gl2 ? gl2.getParameter(35659) : 0,
|
|
26
25
|
maxComputeWorkgroupStorageSize: 0,
|
|
27
26
|
maxComputeInvocationsPerWorkgroup: 0,
|
|
28
27
|
maxComputeWorkgroupSizeX: 0,
|
|
@@ -40,49 +39,49 @@ export function getWebGLLimits(gl) {
|
|
|
40
39
|
return gl2 ? gl2.getParameter(pname) : defaultValue || 0;
|
|
41
40
|
}
|
|
42
41
|
return {
|
|
43
|
-
[
|
|
44
|
-
[
|
|
45
|
-
[
|
|
46
|
-
[
|
|
47
|
-
[
|
|
48
|
-
[
|
|
49
|
-
[
|
|
50
|
-
[
|
|
51
|
-
[
|
|
52
|
-
[
|
|
53
|
-
[
|
|
54
|
-
[
|
|
55
|
-
[
|
|
56
|
-
[
|
|
57
|
-
[
|
|
58
|
-
[
|
|
59
|
-
[
|
|
60
|
-
[
|
|
61
|
-
[
|
|
62
|
-
[
|
|
63
|
-
[
|
|
64
|
-
[
|
|
65
|
-
[
|
|
66
|
-
[
|
|
67
|
-
[
|
|
68
|
-
[
|
|
69
|
-
[
|
|
70
|
-
[
|
|
71
|
-
[
|
|
72
|
-
[
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
76
|
-
[
|
|
77
|
-
[
|
|
78
|
-
[
|
|
79
|
-
[
|
|
80
|
-
[
|
|
81
|
-
[
|
|
82
|
-
[
|
|
83
|
-
[
|
|
84
|
-
[
|
|
85
|
-
[
|
|
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)
|
|
86
85
|
};
|
|
87
86
|
}
|
|
88
87
|
//# sourceMappingURL=device-limits.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-limits.js","names":["GL","getWebGL2Context","getDeviceLimits","gl","gl2","maxTextureDimension1D","maxTextureDimension2D","getParameter","MAX_TEXTURE_SIZE","maxTextureDimension3D","MAX_3D_TEXTURE_SIZE","maxTextureArrayLayers","MAX_ARRAY_TEXTURE_LAYERS","maxBindGroups","maxDynamicUniformBuffersPerPipelineLayout","maxDynamicStorageBuffersPerPipelineLayout","maxSampledTexturesPerShaderStage","MAX_VERTEX_TEXTURE_IMAGE_UNITS","maxSamplersPerShaderStage","MAX_COMBINED_TEXTURE_IMAGE_UNITS","maxStorageBuffersPerShaderStage","maxStorageTexturesPerShaderStage","maxUniformBuffersPerShaderStage","MAX_UNIFORM_BUFFER_BINDINGS","maxUniformBufferBindingSize","MAX_UNIFORM_BLOCK_SIZE","maxStorageBufferBindingSize","minUniformBufferOffsetAlignment","UNIFORM_BUFFER_OFFSET_ALIGNMENT","minStorageBufferOffsetAlignment","maxVertexBuffers","maxVertexAttributes","MAX_VERTEX_ATTRIBS","maxVertexBufferArrayStride","maxInterStageShaderComponents","MAX_VARYING_COMPONENTS","maxComputeWorkgroupStorageSize","maxComputeInvocationsPerWorkgroup","maxComputeWorkgroupSizeX","maxComputeWorkgroupSizeY","maxComputeWorkgroupSizeZ","maxComputeWorkgroupsPerDimension","getWebGLLimits","get","pname","get2","defaultValue","ALIASED_LINE_WIDTH_RANGE","ALIASED_POINT_SIZE_RANGE","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_TEXTURE_IMAGE_UNITS","MAX_RENDERBUFFER_SIZE","MAX_VARYING_VECTORS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VIEWPORT_DIMS","MAX_TEXTURE_MAX_ANISOTROPY_EXT","MAX_CLIENT_WAIT_TIMEOUT_WEBGL","MAX_COLOR_ATTACHMENTS","MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS","MAX_COMBINED_UNIFORM_BLOCKS","MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS","MAX_DRAW_BUFFERS","MAX_ELEMENT_INDEX","MAX_ELEMENTS_INDICES","MAX_ELEMENTS_VERTICES","MAX_FRAGMENT_INPUT_COMPONENTS","MAX_FRAGMENT_UNIFORM_BLOCKS","MAX_FRAGMENT_UNIFORM_COMPONENTS","MAX_SAMPLES","MAX_SERVER_WAIT_TIMEOUT","MAX_TEXTURE_LOD_BIAS","MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS","MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS","MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS","MAX_VERTEX_OUTPUT_COMPONENTS","MAX_VERTEX_UNIFORM_BLOCKS","MAX_VERTEX_UNIFORM_COMPONENTS","MIN_PROGRAM_TEXEL_OFFSET","MAX_PROGRAM_TEXEL_OFFSET"],"sources":["../../../src/adapter/device-helpers/device-limits.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {DeviceLimits} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {getWebGL2Context} from '../../context/context/webgl-checks';\n\n/** Populate a WebGPU style device limits */\nexport function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits {\n const gl2: WebGL2RenderingContext | null = getWebGL2Context(gl);\n return {\n maxTextureDimension1D: 0, // WebGL does not support 1D textures\n maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),\n maxTextureDimension3D: gl2 ? gl2.getParameter(GL.MAX_3D_TEXTURE_SIZE) : 0,\n maxTextureArrayLayers: gl2 ? gl2.getParameter(GL.MAX_ARRAY_TEXTURE_LAYERS) : 0,\n maxBindGroups: 1, // TBD\n maxDynamicUniformBuffersPerPipelineLayout: 0, // TBD\n maxDynamicStorageBuffersPerPipelineLayout: 0, // TBD\n maxSampledTexturesPerShaderStage: gl.getParameter(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // TBD\n maxSamplersPerShaderStage: gl.getParameter(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n maxStorageBuffersPerShaderStage: 0, // TBD\n maxStorageTexturesPerShaderStage: 0, // TBD\n maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BUFFER_BINDINGS) : 0,\n maxUniformBufferBindingSize: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BLOCK_SIZE) : 0,\n maxStorageBufferBindingSize: 0,\n minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) : 0,\n minStorageBufferOffsetAlignment: 0, // TBD\n maxVertexBuffers: 0,\n maxVertexAttributes: gl.getParameter(GL.MAX_VERTEX_ATTRIBS),\n maxVertexBufferArrayStride: 2048, // TBD, this is just the default value from WebGPU\n maxInterStageShaderComponents: gl2 ? gl2.getParameter(GL.MAX_VARYING_COMPONENTS) : 0,\n maxComputeWorkgroupStorageSize: 0, // WebGL does not support compute shaders\n maxComputeInvocationsPerWorkgroup: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeX: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeY: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeZ: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupsPerDimension: 0, // WebGL does not support compute shaders\n }\n}\n\n/** WebGL context limits */\nexport type WebGLLimits = {\n [GL.ALIASED_LINE_WIDTH_RANGE]: [number, number];\n [GL.ALIASED_POINT_SIZE_RANGE]: [number, number];\n [GL.MAX_TEXTURE_SIZE]: number;\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: number;\n [GL.MAX_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_RENDERBUFFER_SIZE]: number;\n [GL.MAX_VARYING_VECTORS]: number;\n [GL.MAX_VERTEX_ATTRIBS]: number;\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: number;\n [GL.MAX_VIEWPORT_DIMS]: [number, number];\n\n // Extensions\n [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: number;\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: number;\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: number;\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: number;\n [GL.MAX_COLOR_ATTACHMENTS]: number;\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: number;\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: number;\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: number;\n [GL.MAX_DRAW_BUFFERS]: number;\n [GL.MAX_ELEMENT_INDEX]: number;\n [GL.MAX_ELEMENTS_INDICES]: number;\n [GL.MAX_ELEMENTS_VERTICES]: number;\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: number;\n [GL.MAX_SAMPLES]: number;\n [GL.MAX_SERVER_WAIT_TIMEOUT]: number;\n [GL.MAX_TEXTURE_LOD_BIAS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: number;\n [GL.MAX_UNIFORM_BLOCK_SIZE]: number;\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: number;\n [GL.MAX_VARYING_COMPONENTS]: number;\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: number;\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: number;\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: number;\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: number;\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: number;\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: number;\n};\n\n\nexport function getWebGLLimits(gl: WebGLRenderingContext): WebGLLimits {\n const gl2 = getWebGL2Context(gl);\n function get<T = number>(pname: number): T {\n return gl.getParameter(pname) as T;\n }\n function get2(pname: number, defaultValue?: number): number;\n function get2<T>(pname: number, defaultValue: T): T;\n function get2<T>(pname: number, defaultValue: T): T {\n return gl2 ? gl2.getParameter(pname) as T : (defaultValue || 0) as T;\n }\n // function getMaxAnistropy() {\n // const extension = gl.getExtension('EXT_texture_filter_anisotropic');\n // }\n return {\n [GL.ALIASED_LINE_WIDTH_RANGE]: get(GL.ALIASED_LINE_WIDTH_RANGE),\n [GL.ALIASED_POINT_SIZE_RANGE]: get(GL.ALIASED_POINT_SIZE_RANGE),\n [GL.MAX_TEXTURE_SIZE]: get(GL.MAX_TEXTURE_SIZE),\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: get(GL.MAX_CUBE_MAP_TEXTURE_SIZE), // GLint\n [GL.MAX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: get(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_RENDERBUFFER_SIZE]: get(GL.MAX_RENDERBUFFER_SIZE), // GLint\n [GL.MAX_VARYING_VECTORS]: get(GL.MAX_VARYING_VECTORS), // GLint\n [GL.MAX_VERTEX_ATTRIBS]: get(GL.MAX_VERTEX_ATTRIBS), // GLint\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: get(GL.MAX_VERTEX_UNIFORM_VECTORS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: get(GL.MAX_FRAGMENT_UNIFORM_VECTORS), // GLint\n [GL.MAX_VIEWPORT_DIMS]: get(GL.MAX_VIEWPORT_DIMS),\n\n // Extensions\n [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: get(GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT), // getMaxAnistropy(),\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: get2(GL.MAX_3D_TEXTURE_SIZE), // GLint\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: get2(GL.MAX_ARRAY_TEXTURE_LAYERS), // GLint\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: get2(GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL), // GLint64\n [GL.MAX_COLOR_ATTACHMENTS]: get2(GL.MAX_COLOR_ATTACHMENTS), // GLint\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS), // GLint64\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: get2(GL.MAX_COMBINED_UNIFORM_BLOCKS), // GLint\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS), // GLint64\n [GL.MAX_DRAW_BUFFERS]: get2(GL.MAX_DRAW_BUFFERS), // GLint\n [GL.MAX_ELEMENT_INDEX]: get2(GL.MAX_ELEMENT_INDEX), // GLint64\n [GL.MAX_ELEMENTS_INDICES]: get2(GL.MAX_ELEMENTS_INDICES), // GLint\n [GL.MAX_ELEMENTS_VERTICES]: get2(GL.MAX_ELEMENTS_VERTICES), // GLint\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: get2(GL.MAX_FRAGMENT_INPUT_COMPONENTS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: get2(GL.MAX_FRAGMENT_UNIFORM_BLOCKS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_FRAGMENT_UNIFORM_COMPONENTS), // GLint\n [GL.MAX_SAMPLES]: get2(GL.MAX_SAMPLES), // GLint\n [GL.MAX_SERVER_WAIT_TIMEOUT]: get2(GL.MAX_SERVER_WAIT_TIMEOUT), // GLint64\n [GL.MAX_TEXTURE_LOD_BIAS]: get2(GL.MAX_TEXTURE_LOD_BIAS), // GLfloat\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS), // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS), // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS), // GLint\n [GL.MAX_UNIFORM_BLOCK_SIZE]: get2(GL.MAX_UNIFORM_BLOCK_SIZE), // GLint64\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: get2(GL.MAX_UNIFORM_BUFFER_BINDINGS), // GLint\n [GL.MAX_VARYING_COMPONENTS]: get2(GL.MAX_VARYING_COMPONENTS), // GLint\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: get2(GL.MAX_VERTEX_OUTPUT_COMPONENTS), // GLint\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: get2(GL.MAX_VERTEX_UNIFORM_BLOCKS), // GLint\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_VERTEX_UNIFORM_COMPONENTS), // GLint\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: get2(GL.MIN_PROGRAM_TEXEL_OFFSET), // GLint\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: get2(GL.MAX_PROGRAM_TEXEL_OFFSET), // GLint\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: get2(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) // GLint\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"device-limits.js","names":["getWebGL2Context","getDeviceLimits","gl","gl2","maxTextureDimension1D","maxTextureDimension2D","getParameter","maxTextureDimension3D","maxTextureArrayLayers","maxBindGroups","maxDynamicUniformBuffersPerPipelineLayout","maxDynamicStorageBuffersPerPipelineLayout","maxSampledTexturesPerShaderStage","maxSamplersPerShaderStage","maxStorageBuffersPerShaderStage","maxStorageTexturesPerShaderStage","maxUniformBuffersPerShaderStage","maxUniformBufferBindingSize","maxStorageBufferBindingSize","minUniformBufferOffsetAlignment","minStorageBufferOffsetAlignment","maxVertexBuffers","maxVertexAttributes","maxVertexBufferArrayStride","maxInterStageShaderComponents","maxComputeWorkgroupStorageSize","maxComputeInvocationsPerWorkgroup","maxComputeWorkgroupSizeX","maxComputeWorkgroupSizeY","maxComputeWorkgroupSizeZ","maxComputeWorkgroupsPerDimension","getWebGLLimits","get","pname","get2","defaultValue"],"sources":["../../../src/adapter/device-helpers/device-limits.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {DeviceLimits} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {getWebGL2Context} from '../../context/context/webgl-checks';\n\n/** Populate a WebGPU style device limits */\nexport function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits {\n const gl2: WebGL2RenderingContext | null = getWebGL2Context(gl);\n return {\n maxTextureDimension1D: 0, // WebGL does not support 1D textures\n maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),\n maxTextureDimension3D: gl2 ? gl2.getParameter(GL.MAX_3D_TEXTURE_SIZE) : 0,\n maxTextureArrayLayers: gl2 ? gl2.getParameter(GL.MAX_ARRAY_TEXTURE_LAYERS) : 0,\n maxBindGroups: 1, // TBD\n maxDynamicUniformBuffersPerPipelineLayout: 0, // TBD\n maxDynamicStorageBuffersPerPipelineLayout: 0, // TBD\n maxSampledTexturesPerShaderStage: gl.getParameter(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // TBD\n maxSamplersPerShaderStage: gl.getParameter(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n maxStorageBuffersPerShaderStage: 0, // TBD\n maxStorageTexturesPerShaderStage: 0, // TBD\n maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BUFFER_BINDINGS) : 0,\n maxUniformBufferBindingSize: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BLOCK_SIZE) : 0,\n maxStorageBufferBindingSize: 0,\n minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) : 0,\n minStorageBufferOffsetAlignment: 0, // TBD\n maxVertexBuffers: 0,\n maxVertexAttributes: gl.getParameter(GL.MAX_VERTEX_ATTRIBS),\n maxVertexBufferArrayStride: 2048, // TBD, this is just the default value from WebGPU\n maxInterStageShaderComponents: gl2 ? gl2.getParameter(GL.MAX_VARYING_COMPONENTS) : 0,\n maxComputeWorkgroupStorageSize: 0, // WebGL does not support compute shaders\n maxComputeInvocationsPerWorkgroup: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeX: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeY: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupSizeZ: 0, // WebGL does not support compute shaders\n maxComputeWorkgroupsPerDimension: 0, // WebGL does not support compute shaders\n }\n}\n\n/** WebGL context limits */\nexport type WebGLLimits = {\n [GL.ALIASED_LINE_WIDTH_RANGE]: [number, number];\n [GL.ALIASED_POINT_SIZE_RANGE]: [number, number];\n [GL.MAX_TEXTURE_SIZE]: number;\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: number;\n [GL.MAX_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: number;\n [GL.MAX_RENDERBUFFER_SIZE]: number;\n [GL.MAX_VARYING_VECTORS]: number;\n [GL.MAX_VERTEX_ATTRIBS]: number;\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: number;\n [GL.MAX_VIEWPORT_DIMS]: [number, number];\n\n // Extensions\n [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: number;\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: number;\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: number;\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: number;\n [GL.MAX_COLOR_ATTACHMENTS]: number;\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: number;\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: number;\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: number;\n [GL.MAX_DRAW_BUFFERS]: number;\n [GL.MAX_ELEMENT_INDEX]: number;\n [GL.MAX_ELEMENTS_INDICES]: number;\n [GL.MAX_ELEMENTS_VERTICES]: number;\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: number;\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: number;\n [GL.MAX_SAMPLES]: number;\n [GL.MAX_SERVER_WAIT_TIMEOUT]: number;\n [GL.MAX_TEXTURE_LOD_BIAS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: number;\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: number;\n [GL.MAX_UNIFORM_BLOCK_SIZE]: number;\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: number;\n [GL.MAX_VARYING_COMPONENTS]: number;\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: number;\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: number;\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: number;\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: number;\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: number;\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: number;\n};\n\n\nexport function getWebGLLimits(gl: WebGLRenderingContext): WebGLLimits {\n const gl2 = getWebGL2Context(gl);\n function get<T = number>(pname: number): T {\n return gl.getParameter(pname) as T;\n }\n function get2(pname: number, defaultValue?: number): number;\n function get2<T>(pname: number, defaultValue: T): T;\n function get2<T>(pname: number, defaultValue: T): T {\n return gl2 ? gl2.getParameter(pname) as T : (defaultValue || 0) as T;\n }\n // function getMaxAnistropy() {\n // const extension = gl.getExtension('EXT_texture_filter_anisotropic');\n // }\n return {\n [GL.ALIASED_LINE_WIDTH_RANGE]: get(GL.ALIASED_LINE_WIDTH_RANGE),\n [GL.ALIASED_POINT_SIZE_RANGE]: get(GL.ALIASED_POINT_SIZE_RANGE),\n [GL.MAX_TEXTURE_SIZE]: get(GL.MAX_TEXTURE_SIZE),\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: get(GL.MAX_CUBE_MAP_TEXTURE_SIZE), // GLint\n [GL.MAX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: get(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS), // GLint\n [GL.MAX_RENDERBUFFER_SIZE]: get(GL.MAX_RENDERBUFFER_SIZE), // GLint\n [GL.MAX_VARYING_VECTORS]: get(GL.MAX_VARYING_VECTORS), // GLint\n [GL.MAX_VERTEX_ATTRIBS]: get(GL.MAX_VERTEX_ATTRIBS), // GLint\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: get(GL.MAX_VERTEX_UNIFORM_VECTORS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: get(GL.MAX_FRAGMENT_UNIFORM_VECTORS), // GLint\n [GL.MAX_VIEWPORT_DIMS]: get(GL.MAX_VIEWPORT_DIMS),\n\n // Extensions\n [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: get(GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT), // getMaxAnistropy(),\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: get2(GL.MAX_3D_TEXTURE_SIZE), // GLint\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: get2(GL.MAX_ARRAY_TEXTURE_LAYERS), // GLint\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: get2(GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL), // GLint64\n [GL.MAX_COLOR_ATTACHMENTS]: get2(GL.MAX_COLOR_ATTACHMENTS), // GLint\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS), // GLint64\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: get2(GL.MAX_COMBINED_UNIFORM_BLOCKS), // GLint\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS), // GLint64\n [GL.MAX_DRAW_BUFFERS]: get2(GL.MAX_DRAW_BUFFERS), // GLint\n [GL.MAX_ELEMENT_INDEX]: get2(GL.MAX_ELEMENT_INDEX), // GLint64\n [GL.MAX_ELEMENTS_INDICES]: get2(GL.MAX_ELEMENTS_INDICES), // GLint\n [GL.MAX_ELEMENTS_VERTICES]: get2(GL.MAX_ELEMENTS_VERTICES), // GLint\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: get2(GL.MAX_FRAGMENT_INPUT_COMPONENTS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: get2(GL.MAX_FRAGMENT_UNIFORM_BLOCKS), // GLint\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_FRAGMENT_UNIFORM_COMPONENTS), // GLint\n [GL.MAX_SAMPLES]: get2(GL.MAX_SAMPLES), // GLint\n [GL.MAX_SERVER_WAIT_TIMEOUT]: get2(GL.MAX_SERVER_WAIT_TIMEOUT), // GLint64\n [GL.MAX_TEXTURE_LOD_BIAS]: get2(GL.MAX_TEXTURE_LOD_BIAS), // GLfloat\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS), // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS), // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS), // GLint\n [GL.MAX_UNIFORM_BLOCK_SIZE]: get2(GL.MAX_UNIFORM_BLOCK_SIZE), // GLint64\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: get2(GL.MAX_UNIFORM_BUFFER_BINDINGS), // GLint\n [GL.MAX_VARYING_COMPONENTS]: get2(GL.MAX_VARYING_COMPONENTS), // GLint\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: get2(GL.MAX_VERTEX_OUTPUT_COMPONENTS), // GLint\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: get2(GL.MAX_VERTEX_UNIFORM_BLOCKS), // GLint\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_VERTEX_UNIFORM_COMPONENTS), // GLint\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: get2(GL.MIN_PROGRAM_TEXEL_OFFSET), // GLint\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: get2(GL.MAX_PROGRAM_TEXEL_OFFSET), // GLint\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: get2(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) // GLint\n };\n}\n"],"mappings":"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"}
|
|
@@ -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,
|
|
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,CAqCnE"}
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
import { GL } from '@luma.gl/constants';
|
|
2
1
|
import { isWebGL2 } from "../../context/context/webgl-checks.js";
|
|
3
2
|
export function getDeviceInfo(gl) {
|
|
4
|
-
const vendorMasked = gl.getParameter(
|
|
5
|
-
const rendererMasked = gl.getParameter(
|
|
3
|
+
const vendorMasked = gl.getParameter(7936);
|
|
4
|
+
const rendererMasked = gl.getParameter(7937);
|
|
6
5
|
const ext = gl.getExtension('WEBGL_debug_renderer_info');
|
|
7
|
-
const vendorUnmasked = gl.getParameter(ext ? ext.UNMASKED_VENDOR_WEBGL :
|
|
8
|
-
const rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL :
|
|
6
|
+
const vendorUnmasked = gl.getParameter(ext ? ext.UNMASKED_VENDOR_WEBGL : 7936);
|
|
7
|
+
const rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL : 7937);
|
|
9
8
|
const vendor = vendorUnmasked || vendorMasked;
|
|
10
9
|
const renderer = rendererUnmasked || rendererMasked;
|
|
10
|
+
const version = gl.getParameter(7938);
|
|
11
11
|
const gpu = identifyGPUVendor(vendor, renderer);
|
|
12
|
+
const gpuBackend = identifyGPUBackend(vendor, renderer);
|
|
13
|
+
const shadingLanguage = 'glsl';
|
|
14
|
+
const shadingLanguageVersion = isWebGL2(gl) ? 300 : 100;
|
|
12
15
|
return {
|
|
13
16
|
type: isWebGL2(gl) ? 'webgl2' : 'webgl',
|
|
14
17
|
gpu,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
18
|
+
gpuBackend,
|
|
19
|
+
vendor,
|
|
20
|
+
renderer,
|
|
21
|
+
version,
|
|
22
|
+
shadingLanguage,
|
|
23
|
+
shadingLanguageVersion
|
|
22
24
|
};
|
|
23
25
|
}
|
|
24
26
|
function identifyGPUVendor(vendor, renderer) {
|
|
@@ -39,4 +41,13 @@ function identifyGPUVendor(vendor, renderer) {
|
|
|
39
41
|
}
|
|
40
42
|
return 'unknown';
|
|
41
43
|
}
|
|
44
|
+
function identifyGPUBackend(vendor, renderer) {
|
|
45
|
+
if (/ANGLE/i.exec(vendor) || /ANGLE/i.exec(renderer)) {
|
|
46
|
+
return 'angle';
|
|
47
|
+
}
|
|
48
|
+
if (/Metal/i.exec(vendor) || /Metal/i.exec(renderer)) {
|
|
49
|
+
return 'metal';
|
|
50
|
+
}
|
|
51
|
+
return 'unknown';
|
|
52
|
+
}
|
|
42
53
|
//# sourceMappingURL=get-device-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-device-info.js","names":["
|
|
1
|
+
{"version":3,"file":"get-device-info.js","names":["isWebGL2","getDeviceInfo","gl","vendorMasked","getParameter","rendererMasked","ext","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","vendor","renderer","version","gpu","identifyGPUVendor","gpuBackend","identifyGPUBackend","shadingLanguage","shadingLanguageVersion","type","exec"],"sources":["../../../src/adapter/device-helpers/get-device-info.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {DeviceInfo} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\n\n/** @returns strings identifying the GPU vendor and driver. */\nexport function getDeviceInfo(gl: WebGLRenderingContext): DeviceInfo {\n // \"Masked\" info is always available, but don't contain much useful information\n const vendorMasked = gl.getParameter(GL.VENDOR);\n const rendererMasked = gl.getParameter(GL.RENDERER);\n\n // If we are lucky, unmasked info is available\n // https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n const vendorUnmasked = gl.getParameter(ext ? ext.UNMASKED_VENDOR_WEBGL : GL.VENDOR);\n const rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL : GL.RENDERER);\n const vendor = vendorUnmasked || vendorMasked;\n const renderer = rendererUnmasked || rendererMasked;\n\n // Driver version\n const version = gl.getParameter(GL.VERSION) as string;\n\n // \"Sniff\" the GPU type and backend from the info. This works best if unmasked info is available.\n const gpu = identifyGPUVendor(vendor, renderer);\n const gpuBackend = identifyGPUBackend(vendor, renderer);\n\n // Determine GLSL version\n // For now, skip parsing of the long version string, just use context type below to deduce version\n // const version = gl.getParameter(GL.SHADING_LANGUAGE_VERSION) as string;\n // const shadingLanguageVersion = parseGLSLVersion(version);\n const shadingLanguage = 'glsl';\n const shadingLanguageVersion = isWebGL2(gl) ? 300 : 100\n\n return {\n type: isWebGL2(gl) ? 'webgl2' : 'webgl',\n gpu,\n gpuBackend,\n vendor,\n renderer,\n version,\n shadingLanguage,\n shadingLanguageVersion\n };\n}\n\n/** \"Sniff\" the GPU type from the info. This works best if unmasked info is available. */\nfunction identifyGPUVendor(vendor: string, renderer: string): 'nvidia' | 'intel' | 'apple' | 'amd' | 'software' | 'unknown' {\n if ((/NVIDIA/i.exec(vendor)) || (/NVIDIA/i.exec(renderer))) {\n return 'nvidia';\n }\n if ((/INTEL/i.exec(vendor)) || (/INTEL/i.exec(renderer))) {\n return 'intel';\n }\n if ((/Apple/i.exec(vendor)) || (/Apple/i.exec(renderer))) {\n return 'apple';\n }\n if (\n (/AMD/i.exec(vendor)) ||\n (/AMD/i.exec(renderer)) ||\n (/ATI/i.exec(vendor)) ||\n (/ATI/i.exec(renderer))\n ) {\n return 'amd';\n }\n if ((/SwiftShader/i.exec(vendor)) || (/SwiftShader/i.exec(renderer))) {\n return 'software';\n }\n \n return 'unknown';\n}\n\n/** \"Sniff\" the GPU backend from the info. This works best if unmasked info is available. */\nfunction identifyGPUBackend(vendor: string, renderer: string): 'angle' | 'metal' | 'unknown' {\n if ((/ANGLE/i.exec(vendor)) || (/ANGLE/i.exec(renderer))) {\n return 'angle';\n }\n if ((/Metal/i.exec(vendor)) || (/Metal/i.exec(renderer))) {\n return 'metal';\n }\n \n return 'unknown';\n}\n"],"mappings":"SAKQA,QAAQ;AAGhB,OAAO,SAASC,aAAaA,CAACC,EAAyB,EAAc;EAEnE,MAAMC,YAAY,GAAGD,EAAE,CAACE,YAAY,KAAU,CAAC;EAC/C,MAAMC,cAAc,GAAGH,EAAE,CAACE,YAAY,KAAY,CAAC;EAInD,MAAME,GAAG,GAAGJ,EAAE,CAACK,YAAY,CAAC,2BAA2B,CAAC;EACxD,MAAMC,cAAc,GAAGN,EAAE,CAACE,YAAY,CAACE,GAAG,GAAGA,GAAG,CAACG,qBAAqB,OAAY,CAAC;EACnF,MAAMC,gBAAgB,GAAGR,EAAE,CAACE,YAAY,CAACE,GAAG,GAAGA,GAAG,CAACK,uBAAuB,OAAc,CAAC;EACzF,MAAMC,MAAM,GAAGJ,cAAc,IAAIL,YAAY;EAC7C,MAAMU,QAAQ,GAAGH,gBAAgB,IAAIL,cAAc;EAGnD,MAAMS,OAAO,GAAGZ,EAAE,CAACE,YAAY,KAAW,CAAW;EAGrD,MAAMW,GAAG,GAAGC,iBAAiB,CAACJ,MAAM,EAAEC,QAAQ,CAAC;EAC/C,MAAMI,UAAU,GAAGC,kBAAkB,CAACN,MAAM,EAAEC,QAAQ,CAAC;EAMvD,MAAMM,eAAe,GAAG,MAAM;EAC9B,MAAMC,sBAAsB,GAAGpB,QAAQ,CAACE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG;EAEvD,OAAO;IACLmB,IAAI,EAAErB,QAAQ,CAACE,EAAE,CAAC,GAAG,QAAQ,GAAG,OAAO;IACvCa,GAAG;IACHE,UAAU;IACVL,MAAM;IACNC,QAAQ;IACRC,OAAO;IACPK,eAAe;IACfC;EACF,CAAC;AACH;AAGA,SAASJ,iBAAiBA,CAACJ,MAAc,EAAEC,QAAgB,EAAiE;EAC1H,IAAK,SAAS,CAACS,IAAI,CAACV,MAAM,CAAC,IAAM,SAAS,CAACU,IAAI,CAACT,QAAQ,CAAE,EAAE;IAC1D,OAAO,QAAQ;EACjB;EACA,IAAK,QAAQ,CAACS,IAAI,CAACV,MAAM,CAAC,IAAM,QAAQ,CAACU,IAAI,CAACT,QAAQ,CAAE,EAAE;IACxD,OAAO,OAAO;EAChB;EACA,IAAK,QAAQ,CAACS,IAAI,CAACV,MAAM,CAAC,IAAM,QAAQ,CAACU,IAAI,CAACT,QAAQ,CAAE,EAAE;IACxD,OAAO,OAAO;EAChB;EACA,IACG,MAAM,CAACS,IAAI,CAACV,MAAM,CAAC,IACnB,MAAM,CAACU,IAAI,CAACT,QAAQ,CAAE,IACtB,MAAM,CAACS,IAAI,CAACV,MAAM,CAAE,IACpB,MAAM,CAACU,IAAI,CAACT,QAAQ,CAAE,EACvB;IACA,OAAO,KAAK;EACd;EACA,IAAK,cAAc,CAACS,IAAI,CAACV,MAAM,CAAC,IAAM,cAAc,CAACU,IAAI,CAACT,QAAQ,CAAE,EAAE;IACpE,OAAO,UAAU;EACnB;EAEA,OAAO,SAAS;AAClB;AAGA,SAASK,kBAAkBA,CAACN,MAAc,EAAEC,QAAgB,EAAiC;EAC3F,IAAK,QAAQ,CAACS,IAAI,CAACV,MAAM,CAAC,IAAM,QAAQ,CAACU,IAAI,CAACT,QAAQ,CAAE,EAAE;IACxD,OAAO,OAAO;EAChB;EACA,IAAK,QAAQ,CAACS,IAAI,CAACV,MAAM,CAAC,IAAM,QAAQ,CAACU,IAAI,CAACT,QAAQ,CAAE,EAAE;IACxD,OAAO,OAAO;EAChB;EAEA,OAAO,SAAS;AAClB"}
|
|
@@ -1,34 +1,33 @@
|
|
|
1
|
-
import { GL } from '@luma.gl/constants';
|
|
2
1
|
export function isSamplerUniform(type) {
|
|
3
2
|
return SAMPLER_TYPES.includes(type);
|
|
4
3
|
}
|
|
5
|
-
const SAMPLER_TYPES = [
|
|
4
|
+
const SAMPLER_TYPES = [35678, 35680, 35679, 35682, 36289, 36292, 36293, 36298, 36299, 36300, 36303, 36306, 36307, 36308, 36311];
|
|
6
5
|
const COMPOSITE_GL_TYPES = {
|
|
7
|
-
[
|
|
8
|
-
[
|
|
9
|
-
[
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
21
|
-
[
|
|
22
|
-
[
|
|
23
|
-
[
|
|
24
|
-
[
|
|
25
|
-
[
|
|
26
|
-
[
|
|
27
|
-
[
|
|
28
|
-
[
|
|
29
|
-
[
|
|
30
|
-
[
|
|
31
|
-
[
|
|
6
|
+
[5126]: [5126, 1, 'float', 'f32', 'float32'],
|
|
7
|
+
[35664]: [5126, 2, 'vec2', 'vec2<f32>', 'float32x2'],
|
|
8
|
+
[35665]: [5126, 3, 'vec3', 'vec3<f32>', 'float32x3'],
|
|
9
|
+
[35666]: [5126, 4, 'vec4', 'vec4<f32>', 'float32x4'],
|
|
10
|
+
[5124]: [5124, 1, 'int', 'i32', 'sint32'],
|
|
11
|
+
[35667]: [5124, 2, 'ivec2', 'vec2<i32>', 'sint32x2'],
|
|
12
|
+
[35668]: [5124, 3, 'ivec3', 'vec3<i32>', 'sint32x3'],
|
|
13
|
+
[35669]: [5124, 4, 'ivec4', 'vec4<i32>', 'sint32x4'],
|
|
14
|
+
[5125]: [5125, 1, 'uint', 'u32', 'uint32'],
|
|
15
|
+
[36294]: [5125, 2, 'uvec2', 'vec2<u32>', 'uint32x2'],
|
|
16
|
+
[36295]: [5125, 3, 'uvec3', 'vec3<u32>', 'uint32x3'],
|
|
17
|
+
[36296]: [5125, 4, 'uvec4', 'vec4<u32>', 'uint32x4'],
|
|
18
|
+
[35670]: [5126, 1, 'bool', 'f32', 'float32'],
|
|
19
|
+
[35671]: [5126, 2, 'bvec2', 'vec2<f32>', 'float32x2'],
|
|
20
|
+
[35672]: [5126, 3, 'bvec3', 'vec3<f32>', 'float32x3'],
|
|
21
|
+
[35673]: [5126, 4, 'bvec4', 'vec4<f32>', 'float32x4'],
|
|
22
|
+
[35674]: [5126, 8, 'mat2', 'mat2x2<f32>'],
|
|
23
|
+
[35685]: [5126, 8, 'mat2x3', 'mat2x3<f32>'],
|
|
24
|
+
[35686]: [5126, 8, 'mat2x4', 'mat2x4<f32>'],
|
|
25
|
+
[35687]: [5126, 12, 'mat3x2', 'mat3x2<f32>'],
|
|
26
|
+
[35675]: [5126, 12, 'mat3', 'mat3x3<f32>'],
|
|
27
|
+
[35688]: [5126, 12, 'mat3x4', 'mat3x4<f32>'],
|
|
28
|
+
[35689]: [5126, 16, 'mat4x2', 'mat4x2<f32>'],
|
|
29
|
+
[35690]: [5126, 16, 'mat4x3', 'mat4x3<f32>'],
|
|
30
|
+
[35676]: [5126, 16, 'mat4', 'mat4x4<f32>']
|
|
32
31
|
};
|
|
33
32
|
export function decodeGLUniformType(glUniformType) {
|
|
34
33
|
const typeAndSize = COMPOSITE_GL_TYPES[glUniformType];
|
|
@@ -68,11 +67,11 @@ export function decomposeCompositeGLDataType(compositeGLDataType) {
|
|
|
68
67
|
}
|
|
69
68
|
export function getCompositeGLDataType(type, components) {
|
|
70
69
|
switch (type) {
|
|
71
|
-
case
|
|
72
|
-
case
|
|
73
|
-
case
|
|
74
|
-
case
|
|
75
|
-
type =
|
|
70
|
+
case 5120:
|
|
71
|
+
case 5121:
|
|
72
|
+
case 5122:
|
|
73
|
+
case 5123:
|
|
74
|
+
type = 5126;
|
|
76
75
|
break;
|
|
77
76
|
default:
|
|
78
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode-webgl-types.js","names":["GL","isSamplerUniform","type","SAMPLER_TYPES","includes","SAMPLER_2D","SAMPLER_CUBE","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","COMPOSITE_GL_TYPES","FLOAT","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","INT","INT_VEC2","INT_VEC3","INT_VEC4","UNSIGNED_INT","UNSIGNED_INT_VEC2","UNSIGNED_INT_VEC3","UNSIGNED_INT_VEC4","BOOL","BOOL_VEC2","BOOL_VEC3","BOOL_VEC4","FLOAT_MAT2","FLOAT_MAT2x3","FLOAT_MAT2x4","FLOAT_MAT3x2","FLOAT_MAT3","FLOAT_MAT3x4","FLOAT_MAT4x2","FLOAT_MAT4x3","FLOAT_MAT4","decodeGLUniformType","glUniformType","typeAndSize","Error","glType","components","format","decodeGLAttributeType","glAttributeType","shaderType","vertexFormat","attributeType","decomposeCompositeGLDataType","compositeGLDataType","getCompositeGLDataType","BYTE","UNSIGNED_BYTE","SHORT","UNSIGNED_SHORT","compType","compComponents","name","Number"],"sources":["../../../src/adapter/helpers/decode-webgl-types.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {ShaderUniformType, ShaderAttributeType, VertexFormat} from '@luma.gl/core';\nimport {GL, GLUniformType, GLSamplerType, GLCompositeType, GLDataType} from '@luma.gl/constants';\n\n/** Check is uniform is of sampler type */\nexport function isSamplerUniform(type: GLUniformType): boolean {\n return SAMPLER_TYPES.includes(type as GLSamplerType);\n}\n\nconst SAMPLER_TYPES: GLSamplerType[] = [\n GL.SAMPLER_2D,\n GL.SAMPLER_CUBE,\n GL.SAMPLER_3D,\n GL.SAMPLER_2D_SHADOW,\n GL.SAMPLER_2D_ARRAY,\n GL.SAMPLER_2D_ARRAY_SHADOW,\n GL.SAMPLER_CUBE_SHADOW,\n GL.INT_SAMPLER_2D,\n GL.INT_SAMPLER_3D,\n GL.INT_SAMPLER_CUBE,\n GL.INT_SAMPLER_2D_ARRAY,\n GL.UNSIGNED_INT_SAMPLER_2D,\n GL.UNSIGNED_INT_SAMPLER_3D,\n GL.UNSIGNED_INT_SAMPLER_CUBE,\n GL.UNSIGNED_INT_SAMPLER_2D_ARRAY\n];\n\n// Composite types table\nconst COMPOSITE_GL_TYPES: Record<\n GLCompositeType,\n [GLDataType, number, string, ShaderUniformType, VertexFormat?]\n> = {\n [GL.FLOAT]: [GL.FLOAT, 1, 'float', 'f32', 'float32'],\n [GL.FLOAT_VEC2]: [GL.FLOAT, 2, 'vec2', 'vec2<f32>', 'float32x2'],\n [GL.FLOAT_VEC3]: [GL.FLOAT, 3, 'vec3', 'vec3<f32>', 'float32x3'],\n [GL.FLOAT_VEC4]: [GL.FLOAT, 4, 'vec4', 'vec4<f32>', 'float32x4'],\n\n [GL.INT]: [GL.INT, 1, 'int', 'i32', 'sint32'],\n [GL.INT_VEC2]: [GL.INT, 2, 'ivec2', 'vec2<i32>', 'sint32x2'],\n [GL.INT_VEC3]: [GL.INT, 3, 'ivec3', 'vec3<i32>', 'sint32x3'],\n [GL.INT_VEC4]: [GL.INT, 4, 'ivec4', 'vec4<i32>', 'sint32x4'],\n\n [GL.UNSIGNED_INT]: [GL.UNSIGNED_INT, 1, 'uint', 'u32', 'uint32'],\n [GL.UNSIGNED_INT_VEC2]: [GL.UNSIGNED_INT, 2, 'uvec2', 'vec2<u32>', 'uint32x2'],\n [GL.UNSIGNED_INT_VEC3]: [GL.UNSIGNED_INT, 3, 'uvec3', 'vec3<u32>', 'uint32x3'],\n [GL.UNSIGNED_INT_VEC4]: [GL.UNSIGNED_INT, 4, 'uvec4', 'vec4<u32>', 'uint32x4'],\n\n [GL.BOOL]: [GL.FLOAT, 1, 'bool', 'f32', 'float32'],\n [GL.BOOL_VEC2]: [GL.FLOAT, 2, 'bvec2', 'vec2<f32>', 'float32x2'],\n [GL.BOOL_VEC3]: [GL.FLOAT, 3, 'bvec3', 'vec3<f32>', 'float32x3'],\n [GL.BOOL_VEC4]: [GL.FLOAT, 4, 'bvec4', 'vec4<f32>', 'float32x4'],\n\n // TODO - are sizes/components below correct?\n [GL.FLOAT_MAT2]: [GL.FLOAT, 8, 'mat2', 'mat2x2<f32>'], // 4\n [GL.FLOAT_MAT2x3]: [GL.FLOAT, 8, 'mat2x3', 'mat2x3<f32>'], // 6\n [GL.FLOAT_MAT2x4]: [GL.FLOAT, 8, 'mat2x4', 'mat2x4<f32>'], // 8\n\n [GL.FLOAT_MAT3x2]: [GL.FLOAT, 12, 'mat3x2', 'mat3x2<f32>'], // 6\n [GL.FLOAT_MAT3]: [GL.FLOAT, 12, 'mat3', 'mat3x3<f32>'], // 9\n [GL.FLOAT_MAT3x4]: [GL.FLOAT, 12, 'mat3x4', 'mat3x4<f32>'], // 12\n\n [GL.FLOAT_MAT4x2]: [GL.FLOAT, 16, 'mat4x2', 'mat4x2<f32>'], // 8\n [GL.FLOAT_MAT4x3]: [GL.FLOAT, 16, 'mat4x3', 'mat4x3<f32>'], // 12\n [GL.FLOAT_MAT4]: [GL.FLOAT, 16, 'mat4', 'mat4x4<f32>'] // 16\n};\n\n/** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */\nexport function decodeGLUniformType(\n glUniformType: GL\n): {format: ShaderUniformType; components: number; glType: GLDataType} {\n const typeAndSize = COMPOSITE_GL_TYPES[glUniformType];\n if (!typeAndSize) {\n throw new Error('uniform');\n }\n const [glType, components, , format] = typeAndSize;\n return {format, components, glType};\n}\n\n/** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */\nexport function decodeGLAttributeType(glAttributeType: GL): {\n attributeType: ShaderAttributeType;\n vertexFormat: VertexFormat;\n components: number;\n // glType: GLDataType;\n} {\n const typeAndSize = COMPOSITE_GL_TYPES[glAttributeType];\n if (!typeAndSize) {\n throw new Error('attribute')\n }\n const [, components, , shaderType, vertexFormat] = typeAndSize;\n // TODO sanity - if (shaderType.startsWith('mat' ...))\n const attributeType = shaderType as unknown as ShaderAttributeType\n return {attributeType, vertexFormat, components}; // , glType};\n}\n\n/** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */\nexport function decomposeCompositeGLDataType(\n compositeGLDataType: GLCompositeType\n): {type: GLDataType; components: number} | null {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLDataType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLDataType(type: GL, components): {glType: GLDataType; name: string} | null {\n switch (type) {\n case GL.BYTE:\n case GL.UNSIGNED_BYTE:\n case GL.SHORT:\n case GL.UNSIGNED_SHORT:\n type = GL.FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType: Number(glType), name};\n }\n }\n return null;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"decode-webgl-types.js","names":["isSamplerUniform","type","SAMPLER_TYPES","includes","COMPOSITE_GL_TYPES","decodeGLUniformType","glUniformType","typeAndSize","Error","glType","components","format","decodeGLAttributeType","glAttributeType","shaderType","vertexFormat","attributeType","decomposeCompositeGLDataType","compositeGLDataType","getCompositeGLDataType","compType","compComponents","name","Number"],"sources":["../../../src/adapter/helpers/decode-webgl-types.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {ShaderUniformType, ShaderAttributeType, VertexFormat} from '@luma.gl/core';\nimport {GL, GLUniformType, GLSamplerType, GLCompositeType, GLDataType} from '@luma.gl/constants';\n\n/** Check is uniform is of sampler type */\nexport function isSamplerUniform(type: GLUniformType): boolean {\n return SAMPLER_TYPES.includes(type as GLSamplerType);\n}\n\nconst SAMPLER_TYPES: GLSamplerType[] = [\n GL.SAMPLER_2D,\n GL.SAMPLER_CUBE,\n GL.SAMPLER_3D,\n GL.SAMPLER_2D_SHADOW,\n GL.SAMPLER_2D_ARRAY,\n GL.SAMPLER_2D_ARRAY_SHADOW,\n GL.SAMPLER_CUBE_SHADOW,\n GL.INT_SAMPLER_2D,\n GL.INT_SAMPLER_3D,\n GL.INT_SAMPLER_CUBE,\n GL.INT_SAMPLER_2D_ARRAY,\n GL.UNSIGNED_INT_SAMPLER_2D,\n GL.UNSIGNED_INT_SAMPLER_3D,\n GL.UNSIGNED_INT_SAMPLER_CUBE,\n GL.UNSIGNED_INT_SAMPLER_2D_ARRAY\n];\n\n// Composite types table\nconst COMPOSITE_GL_TYPES: Record<\n GLCompositeType,\n [GLDataType, number, string, ShaderUniformType, VertexFormat?]\n> = {\n [GL.FLOAT]: [GL.FLOAT, 1, 'float', 'f32', 'float32'],\n [GL.FLOAT_VEC2]: [GL.FLOAT, 2, 'vec2', 'vec2<f32>', 'float32x2'],\n [GL.FLOAT_VEC3]: [GL.FLOAT, 3, 'vec3', 'vec3<f32>', 'float32x3'],\n [GL.FLOAT_VEC4]: [GL.FLOAT, 4, 'vec4', 'vec4<f32>', 'float32x4'],\n\n [GL.INT]: [GL.INT, 1, 'int', 'i32', 'sint32'],\n [GL.INT_VEC2]: [GL.INT, 2, 'ivec2', 'vec2<i32>', 'sint32x2'],\n [GL.INT_VEC3]: [GL.INT, 3, 'ivec3', 'vec3<i32>', 'sint32x3'],\n [GL.INT_VEC4]: [GL.INT, 4, 'ivec4', 'vec4<i32>', 'sint32x4'],\n\n [GL.UNSIGNED_INT]: [GL.UNSIGNED_INT, 1, 'uint', 'u32', 'uint32'],\n [GL.UNSIGNED_INT_VEC2]: [GL.UNSIGNED_INT, 2, 'uvec2', 'vec2<u32>', 'uint32x2'],\n [GL.UNSIGNED_INT_VEC3]: [GL.UNSIGNED_INT, 3, 'uvec3', 'vec3<u32>', 'uint32x3'],\n [GL.UNSIGNED_INT_VEC4]: [GL.UNSIGNED_INT, 4, 'uvec4', 'vec4<u32>', 'uint32x4'],\n\n [GL.BOOL]: [GL.FLOAT, 1, 'bool', 'f32', 'float32'],\n [GL.BOOL_VEC2]: [GL.FLOAT, 2, 'bvec2', 'vec2<f32>', 'float32x2'],\n [GL.BOOL_VEC3]: [GL.FLOAT, 3, 'bvec3', 'vec3<f32>', 'float32x3'],\n [GL.BOOL_VEC4]: [GL.FLOAT, 4, 'bvec4', 'vec4<f32>', 'float32x4'],\n\n // TODO - are sizes/components below correct?\n [GL.FLOAT_MAT2]: [GL.FLOAT, 8, 'mat2', 'mat2x2<f32>'], // 4\n [GL.FLOAT_MAT2x3]: [GL.FLOAT, 8, 'mat2x3', 'mat2x3<f32>'], // 6\n [GL.FLOAT_MAT2x4]: [GL.FLOAT, 8, 'mat2x4', 'mat2x4<f32>'], // 8\n\n [GL.FLOAT_MAT3x2]: [GL.FLOAT, 12, 'mat3x2', 'mat3x2<f32>'], // 6\n [GL.FLOAT_MAT3]: [GL.FLOAT, 12, 'mat3', 'mat3x3<f32>'], // 9\n [GL.FLOAT_MAT3x4]: [GL.FLOAT, 12, 'mat3x4', 'mat3x4<f32>'], // 12\n\n [GL.FLOAT_MAT4x2]: [GL.FLOAT, 16, 'mat4x2', 'mat4x2<f32>'], // 8\n [GL.FLOAT_MAT4x3]: [GL.FLOAT, 16, 'mat4x3', 'mat4x3<f32>'], // 12\n [GL.FLOAT_MAT4]: [GL.FLOAT, 16, 'mat4', 'mat4x4<f32>'] // 16\n};\n\n/** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */\nexport function decodeGLUniformType(\n glUniformType: GL\n): {format: ShaderUniformType; components: number; glType: GLDataType} {\n const typeAndSize = COMPOSITE_GL_TYPES[glUniformType];\n if (!typeAndSize) {\n throw new Error('uniform');\n }\n const [glType, components, , format] = typeAndSize;\n return {format, components, glType};\n}\n\n/** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */\nexport function decodeGLAttributeType(glAttributeType: GL): {\n attributeType: ShaderAttributeType;\n vertexFormat: VertexFormat;\n components: number;\n // glType: GLDataType;\n} {\n const typeAndSize = COMPOSITE_GL_TYPES[glAttributeType];\n if (!typeAndSize) {\n throw new Error('attribute')\n }\n const [, components, , shaderType, vertexFormat] = typeAndSize;\n // TODO sanity - if (shaderType.startsWith('mat' ...))\n const attributeType = shaderType as unknown as ShaderAttributeType\n return {attributeType, vertexFormat, components}; // , glType};\n}\n\n/** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */\nexport function decomposeCompositeGLDataType(\n compositeGLDataType: GLCompositeType\n): {type: GLDataType; components: number} | null {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLDataType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLDataType(type: GL, components): {glType: GLDataType; name: string} | null {\n switch (type) {\n case GL.BYTE:\n case GL.UNSIGNED_BYTE:\n case GL.SHORT:\n case GL.UNSIGNED_SHORT:\n type = GL.FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType: Number(glType), name};\n }\n }\n return null;\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { GL } from '@luma.gl/constants';
|
|
2
1
|
import { isWebGL2 } from "../../context/context/webgl-checks.js";
|
|
3
2
|
import { Accessor } from "../../classic/accessor.js";
|
|
4
3
|
import { decodeGLUniformType, decodeGLAttributeType, isSamplerUniform } from "./decode-webgl-types.js";
|
|
@@ -56,7 +55,7 @@ export function getShaderLayout(gl, program) {
|
|
|
56
55
|
}
|
|
57
56
|
function readAttributeDeclarations(gl, program) {
|
|
58
57
|
const attributes = [];
|
|
59
|
-
const count = gl.getProgramParameter(program,
|
|
58
|
+
const count = gl.getProgramParameter(program, 35721);
|
|
60
59
|
for (let index = 0; index < count; index++) {
|
|
61
60
|
const activeInfo = gl.getActiveAttrib(program, index);
|
|
62
61
|
if (!activeInfo) {
|
|
@@ -89,7 +88,7 @@ function readVaryings(gl, program) {
|
|
|
89
88
|
}
|
|
90
89
|
const gl2 = gl;
|
|
91
90
|
const varyings = [];
|
|
92
|
-
const count = gl.getProgramParameter(program,
|
|
91
|
+
const count = gl.getProgramParameter(program, 35971);
|
|
93
92
|
for (let location = 0; location < count; location++) {
|
|
94
93
|
const activeInfo = gl2.getTransformFeedbackVarying(program, location);
|
|
95
94
|
if (!activeInfo) {
|
|
@@ -120,7 +119,7 @@ function readVaryings(gl, program) {
|
|
|
120
119
|
}
|
|
121
120
|
function readUniformBindings(gl, program) {
|
|
122
121
|
const uniforms = [];
|
|
123
|
-
const uniformCount = gl.getProgramParameter(program,
|
|
122
|
+
const uniformCount = gl.getProgramParameter(program, 35718);
|
|
124
123
|
for (let i = 0; i < uniformCount; i++) {
|
|
125
124
|
const activeInfo = gl.getActiveUniform(program, i);
|
|
126
125
|
if (!activeInfo) {
|
|
@@ -166,22 +165,22 @@ function readUniformBlocks(gl, program) {
|
|
|
166
165
|
const gl2 = gl;
|
|
167
166
|
const getBlockParameter = (blockIndex, pname) => gl2.getActiveUniformBlockParameter(program, blockIndex, pname);
|
|
168
167
|
const uniformBlocks = [];
|
|
169
|
-
const blockCount = gl2.getProgramParameter(program,
|
|
168
|
+
const blockCount = gl2.getProgramParameter(program, 35382);
|
|
170
169
|
for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
|
|
171
170
|
const blockInfo = {
|
|
172
171
|
name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
|
|
173
|
-
location: getBlockParameter(blockIndex,
|
|
174
|
-
byteLength: getBlockParameter(blockIndex,
|
|
175
|
-
vertex: getBlockParameter(blockIndex,
|
|
176
|
-
fragment: getBlockParameter(blockIndex,
|
|
177
|
-
uniformCount: getBlockParameter(blockIndex,
|
|
172
|
+
location: getBlockParameter(blockIndex, 35391),
|
|
173
|
+
byteLength: getBlockParameter(blockIndex, 35392),
|
|
174
|
+
vertex: getBlockParameter(blockIndex, 35396),
|
|
175
|
+
fragment: getBlockParameter(blockIndex, 35398),
|
|
176
|
+
uniformCount: getBlockParameter(blockIndex, 35394),
|
|
178
177
|
uniforms: []
|
|
179
178
|
};
|
|
180
|
-
const uniformIndices = getBlockParameter(blockIndex,
|
|
181
|
-
const uniformType = gl2.getActiveUniforms(program, uniformIndices,
|
|
182
|
-
const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices,
|
|
183
|
-
const uniformOffset = gl2.getActiveUniforms(program, uniformIndices,
|
|
184
|
-
const uniformStride = gl2.getActiveUniforms(program, uniformIndices,
|
|
179
|
+
const uniformIndices = getBlockParameter(blockIndex, 35395) || [];
|
|
180
|
+
const uniformType = gl2.getActiveUniforms(program, uniformIndices, 35383);
|
|
181
|
+
const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, 35384);
|
|
182
|
+
const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, 35387);
|
|
183
|
+
const uniformStride = gl2.getActiveUniforms(program, uniformIndices, 35388);
|
|
185
184
|
for (let i = 0; i < blockInfo.uniformCount; ++i) {
|
|
186
185
|
const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
|
|
187
186
|
if (!activeInfo) {
|
|
@@ -202,21 +201,21 @@ function readUniformBlocks(gl, program) {
|
|
|
202
201
|
return uniformBlocks;
|
|
203
202
|
}
|
|
204
203
|
const SAMPLER_UNIFORMS_GL_TO_GPU = {
|
|
205
|
-
[
|
|
206
|
-
[
|
|
207
|
-
[
|
|
208
|
-
[
|
|
209
|
-
[
|
|
210
|
-
[
|
|
211
|
-
[
|
|
212
|
-
[
|
|
213
|
-
[
|
|
214
|
-
[
|
|
215
|
-
[
|
|
216
|
-
[
|
|
217
|
-
[
|
|
218
|
-
[
|
|
219
|
-
[
|
|
204
|
+
[35678]: ['2d', 'float'],
|
|
205
|
+
[35680]: ['cube', 'float'],
|
|
206
|
+
[35679]: ['3d', 'float'],
|
|
207
|
+
[35682]: ['3d', 'depth'],
|
|
208
|
+
[36289]: ['2d-array', 'float'],
|
|
209
|
+
[36292]: ['2d-array', 'depth'],
|
|
210
|
+
[36293]: ['cube', 'float'],
|
|
211
|
+
[36298]: ['2d', 'sint'],
|
|
212
|
+
[36299]: ['3d', 'sint'],
|
|
213
|
+
[36300]: ['cube', 'sint'],
|
|
214
|
+
[36303]: ['2d-array', 'uint'],
|
|
215
|
+
[36306]: ['2d', 'uint'],
|
|
216
|
+
[36307]: ['3d', 'uint'],
|
|
217
|
+
[36308]: ['cube', 'uint'],
|
|
218
|
+
[36311]: ['2d-array', 'uint']
|
|
220
219
|
};
|
|
221
220
|
function getSamplerInfo(type) {
|
|
222
221
|
const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
|