@luma.gl/core 9.2.6 → 9.3.0-alpha.11
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/dist/adapter/canvas-context.d.ts +6 -162
- package/dist/adapter/canvas-context.d.ts.map +1 -1
- package/dist/adapter/canvas-context.js +5 -419
- package/dist/adapter/canvas-context.js.map +1 -1
- package/dist/adapter/canvas-observer.d.ts +32 -0
- package/dist/adapter/canvas-observer.d.ts.map +1 -0
- package/dist/adapter/canvas-observer.js +90 -0
- package/dist/adapter/canvas-observer.js.map +1 -0
- package/dist/adapter/canvas-surface.d.ts +150 -0
- package/dist/adapter/canvas-surface.d.ts.map +1 -0
- package/dist/adapter/canvas-surface.js +392 -0
- package/dist/adapter/canvas-surface.js.map +1 -0
- package/dist/adapter/device.d.ts +81 -16
- package/dist/adapter/device.d.ts.map +1 -1
- package/dist/adapter/device.js +193 -11
- package/dist/adapter/device.js.map +1 -1
- package/dist/adapter/luma.d.ts.map +1 -1
- package/dist/adapter/luma.js +2 -1
- package/dist/adapter/luma.js.map +1 -1
- package/dist/adapter/presentation-context.d.ts +11 -0
- package/dist/adapter/presentation-context.d.ts.map +1 -0
- package/dist/adapter/presentation-context.js +12 -0
- package/dist/adapter/presentation-context.js.map +1 -0
- package/dist/adapter/resources/buffer.d.ts +1 -1
- package/dist/adapter/resources/buffer.d.ts.map +1 -1
- package/dist/adapter/resources/buffer.js +14 -6
- package/dist/adapter/resources/buffer.js.map +1 -1
- package/dist/adapter/resources/command-buffer.d.ts +3 -1
- package/dist/adapter/resources/command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/command-buffer.js +3 -1
- package/dist/adapter/resources/command-buffer.js.map +1 -1
- package/dist/adapter/resources/command-encoder.d.ts +30 -7
- package/dist/adapter/resources/command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/command-encoder.js +68 -2
- package/dist/adapter/resources/command-encoder.js.map +1 -1
- package/dist/adapter/resources/compute-pipeline.d.ts +2 -2
- package/dist/adapter/resources/compute-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/fence.d.ts +16 -0
- package/dist/adapter/resources/fence.d.ts.map +1 -0
- package/dist/adapter/resources/fence.js +17 -0
- package/dist/adapter/resources/fence.js.map +1 -0
- package/dist/adapter/resources/framebuffer.d.ts +1 -1
- package/dist/adapter/resources/framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/framebuffer.js +15 -12
- package/dist/adapter/resources/framebuffer.js.map +1 -1
- package/dist/adapter/resources/query-set.d.ts +17 -1
- package/dist/adapter/resources/query-set.d.ts.map +1 -1
- package/dist/adapter/resources/query-set.js.map +1 -1
- package/dist/adapter/resources/render-pipeline.d.ts +28 -10
- package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/render-pipeline.js +21 -2
- package/dist/adapter/resources/render-pipeline.js.map +1 -1
- package/dist/adapter/resources/resource.d.ts +13 -0
- package/dist/adapter/resources/resource.d.ts.map +1 -1
- package/dist/adapter/resources/resource.js +243 -14
- package/dist/adapter/resources/resource.js.map +1 -1
- package/dist/adapter/resources/shader.js +27 -25
- package/dist/adapter/resources/shader.js.map +1 -1
- package/dist/adapter/resources/shared-render-pipeline.d.ts +22 -0
- package/dist/adapter/resources/shared-render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/shared-render-pipeline.js +25 -0
- package/dist/adapter/resources/shared-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/texture-view.d.ts +1 -1
- package/dist/adapter/resources/texture-view.d.ts.map +1 -1
- package/dist/adapter/resources/texture.d.ts +168 -28
- package/dist/adapter/resources/texture.d.ts.map +1 -1
- package/dist/adapter/resources/texture.js +284 -25
- package/dist/adapter/resources/texture.js.map +1 -1
- package/dist/adapter/types/attachments.d.ts +1 -1
- package/dist/adapter/types/attachments.d.ts.map +1 -1
- package/dist/adapter/types/buffer-layout.d.ts +1 -1
- package/dist/adapter/types/buffer-layout.d.ts.map +1 -1
- package/dist/adapter/types/parameters.d.ts +3 -1
- package/dist/adapter/types/parameters.d.ts.map +1 -1
- package/dist/adapter/types/parameters.js +1 -0
- package/dist/adapter/types/parameters.js.map +1 -1
- package/dist/adapter/types/shader-layout.d.ts +10 -6
- package/dist/adapter/types/shader-layout.d.ts.map +1 -1
- package/dist/adapter/types/uniforms.d.ts +6 -0
- package/dist/adapter/types/uniforms.d.ts.map +1 -1
- package/dist/adapter-utils/bind-groups.d.ts +9 -0
- package/dist/adapter-utils/bind-groups.d.ts.map +1 -0
- package/dist/adapter-utils/bind-groups.js +41 -0
- package/dist/adapter-utils/bind-groups.js.map +1 -0
- package/dist/adapter-utils/format-compiler-log.d.ts.map +1 -1
- package/dist/adapter-utils/format-compiler-log.js +23 -15
- package/dist/adapter-utils/format-compiler-log.js.map +1 -1
- package/dist/adapter-utils/get-attribute-from-layouts.d.ts +2 -2
- package/dist/adapter-utils/get-attribute-from-layouts.d.ts.map +1 -1
- package/dist/adapter-utils/get-attribute-from-layouts.js +6 -6
- package/dist/adapter-utils/get-attribute-from-layouts.js.map +1 -1
- package/dist/dist.dev.js +2734 -644
- package/dist/dist.min.js +10 -9
- package/dist/factories/bind-group-factory.d.ts +20 -0
- package/dist/factories/bind-group-factory.d.ts.map +1 -0
- package/dist/factories/bind-group-factory.js +88 -0
- package/dist/factories/bind-group-factory.js.map +1 -0
- package/dist/factories/core-module-state.d.ts +7 -0
- package/dist/factories/core-module-state.d.ts.map +1 -0
- package/dist/{shadertypes/data-types/shader-types.js → factories/core-module-state.js} +1 -1
- package/dist/factories/core-module-state.js.map +1 -0
- package/dist/factories/pipeline-factory.d.ts +54 -0
- package/dist/factories/pipeline-factory.d.ts.map +1 -0
- package/dist/factories/pipeline-factory.js +270 -0
- package/dist/factories/pipeline-factory.js.map +1 -0
- package/dist/factories/shader-factory.d.ts +20 -0
- package/dist/factories/shader-factory.d.ts.map +1 -0
- package/dist/factories/shader-factory.js +84 -0
- package/dist/factories/shader-factory.js.map +1 -0
- package/dist/index.cjs +2447 -534
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +30 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/portable/shader-block-writer.d.ts +51 -0
- package/dist/portable/shader-block-writer.d.ts.map +1 -0
- package/dist/portable/shader-block-writer.js +185 -0
- package/dist/portable/shader-block-writer.js.map +1 -0
- package/dist/portable/uniform-block.d.ts +1 -1
- package/dist/portable/uniform-block.d.ts.map +1 -1
- package/dist/portable/uniform-store.d.ts +55 -24
- package/dist/portable/uniform-store.d.ts.map +1 -1
- package/dist/portable/uniform-store.js +73 -25
- package/dist/portable/uniform-store.js.map +1 -1
- package/dist/shadertypes/data-types/data-type-decoder.d.ts +20 -0
- package/dist/shadertypes/data-types/data-type-decoder.d.ts.map +1 -0
- package/dist/shadertypes/data-types/data-type-decoder.js +79 -0
- package/dist/shadertypes/data-types/data-type-decoder.js.map +1 -0
- package/dist/shadertypes/data-types/data-types.d.ts +31 -12
- package/dist/shadertypes/data-types/data-types.d.ts.map +1 -1
- package/dist/shadertypes/data-types/decode-data-types.d.ts.map +1 -1
- package/dist/shadertypes/data-types/decode-data-types.js +4 -3
- package/dist/shadertypes/data-types/decode-data-types.js.map +1 -1
- package/dist/{image-utils → shadertypes/image-types}/image-types.d.ts +0 -6
- package/dist/shadertypes/image-types/image-types.d.ts.map +1 -0
- package/dist/shadertypes/image-types/image-types.js.map +1 -0
- package/dist/shadertypes/shader-types/shader-block-layout.d.ts +72 -0
- package/dist/shadertypes/shader-types/shader-block-layout.d.ts.map +1 -0
- package/dist/shadertypes/shader-types/shader-block-layout.js +209 -0
- package/dist/shadertypes/shader-types/shader-block-layout.js.map +1 -0
- package/dist/shadertypes/shader-types/shader-type-decoder.d.ts +41 -0
- package/dist/shadertypes/shader-types/shader-type-decoder.d.ts.map +1 -0
- package/dist/shadertypes/{data-types/decode-shader-types.js → shader-types/shader-type-decoder.js} +43 -4
- package/dist/shadertypes/shader-types/shader-type-decoder.js.map +1 -0
- package/dist/shadertypes/shader-types/shader-types.d.ts +101 -0
- package/dist/shadertypes/shader-types/shader-types.d.ts.map +1 -0
- package/dist/shadertypes/shader-types/shader-types.js +30 -0
- package/dist/shadertypes/shader-types/shader-types.js.map +1 -0
- package/dist/shadertypes/texture-types/pixel-utils.d.ts.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/pixel-utils.js +4 -4
- package/dist/shadertypes/texture-types/pixel-utils.js.map +1 -0
- package/dist/shadertypes/texture-types/texture-format-decoder.d.ts +36 -0
- package/dist/shadertypes/texture-types/texture-format-decoder.d.ts.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/texture-format-decoder.js +110 -38
- package/dist/shadertypes/texture-types/texture-format-decoder.js.map +1 -0
- package/dist/shadertypes/texture-types/texture-format-generics.d.ts +34 -0
- package/dist/shadertypes/texture-types/texture-format-generics.d.ts.map +1 -0
- package/dist/shadertypes/texture-types/texture-format-generics.js.map +1 -0
- package/dist/shadertypes/texture-types/texture-format-table.d.ts.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/texture-format-table.js +12 -11
- package/dist/shadertypes/texture-types/texture-format-table.js.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/texture-formats.d.ts +51 -17
- package/dist/shadertypes/texture-types/texture-formats.d.ts.map +1 -0
- package/dist/shadertypes/{textures → texture-types}/texture-formats.js +1 -0
- package/dist/shadertypes/texture-types/texture-formats.js.map +1 -0
- package/dist/shadertypes/texture-types/texture-layout.d.ts +5 -0
- package/dist/shadertypes/texture-types/texture-layout.d.ts.map +1 -0
- package/dist/shadertypes/texture-types/texture-layout.js +41 -0
- package/dist/shadertypes/texture-types/texture-layout.js.map +1 -0
- package/dist/shadertypes/vertex-types/vertex-format-decoder.d.ts +24 -0
- package/dist/shadertypes/vertex-types/vertex-format-decoder.d.ts.map +1 -0
- package/dist/shadertypes/vertex-types/vertex-format-decoder.js +144 -0
- package/dist/shadertypes/vertex-types/vertex-format-decoder.js.map +1 -0
- package/dist/shadertypes/vertex-types/vertex-formats.d.ts +50 -0
- package/dist/shadertypes/vertex-types/vertex-formats.d.ts.map +1 -0
- package/dist/shadertypes/vertex-types/vertex-formats.js.map +1 -0
- package/dist/utils/array-equal.d.ts +1 -1
- package/dist/utils/array-equal.d.ts.map +1 -1
- package/dist/utils/array-equal.js +15 -9
- package/dist/utils/array-equal.js.map +1 -1
- package/dist/utils/assert.d.ts +5 -0
- package/dist/utils/assert.d.ts.map +1 -0
- package/dist/utils/assert.js +17 -0
- package/dist/utils/assert.js.map +1 -0
- package/dist/utils/stats-manager.d.ts.map +1 -1
- package/dist/utils/stats-manager.js +61 -1
- package/dist/utils/stats-manager.js.map +1 -1
- package/package.json +6 -6
- package/src/adapter/canvas-context.ts +7 -556
- package/src/adapter/canvas-observer.ts +130 -0
- package/src/adapter/canvas-surface.ts +521 -0
- package/src/adapter/device.ts +311 -25
- package/src/adapter/luma.ts +1 -0
- package/src/adapter/presentation-context.ts +16 -0
- package/src/adapter/resources/buffer.ts +13 -5
- package/src/adapter/resources/command-buffer.ts +4 -2
- package/src/adapter/resources/command-encoder.ts +101 -10
- package/src/adapter/resources/compute-pipeline.ts +2 -2
- package/src/adapter/resources/fence.ts +32 -0
- package/src/adapter/resources/framebuffer.ts +16 -13
- package/src/adapter/resources/query-set.ts +17 -1
- package/src/adapter/resources/render-pipeline.ts +52 -16
- package/src/adapter/resources/resource.ts +289 -14
- package/src/adapter/resources/shader.ts +28 -28
- package/src/adapter/resources/shared-render-pipeline.ts +40 -0
- package/src/adapter/resources/texture-view.ts +1 -1
- package/src/adapter/resources/texture.ts +427 -49
- package/src/adapter/types/attachments.ts +1 -1
- package/src/adapter/types/buffer-layout.ts +1 -1
- package/src/adapter/types/parameters.ts +4 -1
- package/src/adapter/types/shader-layout.ts +15 -9
- package/src/adapter/types/uniforms.ts +12 -0
- package/src/adapter-utils/bind-groups.ts +71 -0
- package/src/adapter-utils/format-compiler-log.ts +23 -15
- package/src/adapter-utils/get-attribute-from-layouts.ts +8 -11
- package/src/factories/bind-group-factory.ts +157 -0
- package/src/factories/core-module-state.ts +11 -0
- package/src/factories/pipeline-factory.ts +328 -0
- package/src/factories/shader-factory.ts +103 -0
- package/src/index.ts +70 -26
- package/src/portable/shader-block-writer.ts +254 -0
- package/src/portable/uniform-block.ts +1 -1
- package/src/portable/uniform-store.ts +98 -40
- package/src/shadertypes/data-types/data-type-decoder.ts +105 -0
- package/src/shadertypes/data-types/data-types.ts +100 -48
- package/src/shadertypes/data-types/decode-data-types.ts +4 -3
- package/src/{image-utils → shadertypes/image-types}/image-types.ts +0 -7
- package/src/shadertypes/shader-types/shader-block-layout.ts +340 -0
- package/src/shadertypes/{data-types/decode-shader-types.ts → shader-types/shader-type-decoder.ts} +88 -14
- package/src/shadertypes/shader-types/shader-types.ts +207 -0
- package/src/shadertypes/{textures → texture-types}/pixel-utils.ts +4 -4
- package/src/shadertypes/{textures → texture-types}/texture-format-decoder.ts +167 -46
- package/src/shadertypes/{textures → texture-types}/texture-format-generics.ts +42 -48
- package/src/shadertypes/{textures → texture-types}/texture-format-table.ts +12 -11
- package/src/shadertypes/{textures → texture-types}/texture-formats.ts +73 -17
- package/src/shadertypes/texture-types/texture-layout.ts +60 -0
- package/src/shadertypes/vertex-types/vertex-format-decoder.ts +175 -0
- package/src/shadertypes/vertex-types/vertex-formats.ts +196 -0
- package/src/utils/array-equal.ts +21 -9
- package/src/utils/assert.ts +18 -0
- package/src/utils/stats-manager.ts +76 -2
- package/dist/image-utils/image-types.d.ts.map +0 -1
- package/dist/image-utils/image-types.js.map +0 -1
- package/dist/portable/uniform-buffer-layout.d.ts +0 -28
- package/dist/portable/uniform-buffer-layout.d.ts.map +0 -1
- package/dist/portable/uniform-buffer-layout.js +0 -96
- package/dist/portable/uniform-buffer-layout.js.map +0 -1
- package/dist/shadertypes/data-types/decode-shader-types.d.ts +0 -17
- package/dist/shadertypes/data-types/decode-shader-types.d.ts.map +0 -1
- package/dist/shadertypes/data-types/decode-shader-types.js.map +0 -1
- package/dist/shadertypes/data-types/shader-types.d.ts +0 -45
- package/dist/shadertypes/data-types/shader-types.d.ts.map +0 -1
- package/dist/shadertypes/data-types/shader-types.js.map +0 -1
- package/dist/shadertypes/textures/pixel-utils.d.ts.map +0 -1
- package/dist/shadertypes/textures/pixel-utils.js.map +0 -1
- package/dist/shadertypes/textures/texture-format-decoder.d.ts +0 -18
- package/dist/shadertypes/textures/texture-format-decoder.d.ts.map +0 -1
- package/dist/shadertypes/textures/texture-format-decoder.js.map +0 -1
- package/dist/shadertypes/textures/texture-format-generics.d.ts +0 -33
- package/dist/shadertypes/textures/texture-format-generics.d.ts.map +0 -1
- package/dist/shadertypes/textures/texture-format-generics.js.map +0 -1
- package/dist/shadertypes/textures/texture-format-table.d.ts.map +0 -1
- package/dist/shadertypes/textures/texture-format-table.js.map +0 -1
- package/dist/shadertypes/textures/texture-formats.d.ts.map +0 -1
- package/dist/shadertypes/textures/texture-formats.js.map +0 -1
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.d.ts +0 -18
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.d.ts.map +0 -1
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.js +0 -100
- package/dist/shadertypes/vertex-arrays/decode-vertex-format.js.map +0 -1
- package/dist/shadertypes/vertex-arrays/vertex-formats.d.ts +0 -27
- package/dist/shadertypes/vertex-arrays/vertex-formats.d.ts.map +0 -1
- package/dist/shadertypes/vertex-arrays/vertex-formats.js.map +0 -1
- package/src/portable/uniform-buffer-layout.ts +0 -118
- package/src/shadertypes/data-types/shader-types.ts +0 -87
- package/src/shadertypes/vertex-arrays/decode-vertex-format.ts +0 -124
- package/src/shadertypes/vertex-arrays/vertex-formats.ts +0 -91
- /package/dist/{image-utils → shadertypes/image-types}/image-types.js +0 -0
- /package/dist/shadertypes/{textures → texture-types}/pixel-utils.d.ts +0 -0
- /package/dist/shadertypes/{textures → texture-types}/texture-format-generics.js +0 -0
- /package/dist/shadertypes/{textures → texture-types}/texture-format-table.d.ts +0 -0
- /package/dist/shadertypes/{vertex-arrays → vertex-types}/vertex-formats.js +0 -0
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
// import type {TypedArray} from '@math.gl/types';
|
|
6
6
|
import {Device} from '../device';
|
|
7
7
|
import {Resource, ResourceProps} from './resource';
|
|
8
|
+
import {QuerySet} from './query-set';
|
|
8
9
|
import {Buffer} from './buffer';
|
|
9
10
|
import {Texture} from './texture';
|
|
10
|
-
import {QuerySet} from './query-set';
|
|
11
11
|
import type {RenderPass, RenderPassProps} from './render-pass';
|
|
12
12
|
import type {ComputePass, ComputePassProps} from './compute-pass';
|
|
13
13
|
import type {CommandBuffer, CommandBufferProps} from './command-buffer';
|
|
@@ -27,11 +27,11 @@ export type CopyBufferToTextureOptions = {
|
|
|
27
27
|
byteOffset?: number;
|
|
28
28
|
destinationTexture: Texture;
|
|
29
29
|
mipLevel?: number; // = 0;
|
|
30
|
-
origin?: [number, number, number]
|
|
30
|
+
origin?: [number, number, number];
|
|
31
31
|
aspect?: 'all' | 'stencil-only' | 'depth-only';
|
|
32
32
|
bytesPerRow: number;
|
|
33
33
|
rowsPerImage: number;
|
|
34
|
-
size: [number, number, number]
|
|
34
|
+
size: [number, number, number];
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
export type CopyTextureToBufferOptions = {
|
|
@@ -49,7 +49,7 @@ export type CopyTextureToBufferOptions = {
|
|
|
49
49
|
width?: number;
|
|
50
50
|
height?: number;
|
|
51
51
|
depthOrArrayLayers?: number;
|
|
52
|
-
origin?: number
|
|
52
|
+
origin?: [number, number, number];
|
|
53
53
|
|
|
54
54
|
/** Destination buffer */
|
|
55
55
|
destinationBuffer: Buffer;
|
|
@@ -74,7 +74,7 @@ export type CopyTextureToTextureOptions = {
|
|
|
74
74
|
/** Mip-map level of the texture to copy to/from. (Default 0) */
|
|
75
75
|
mipLevel?: number;
|
|
76
76
|
/** Defines the origin of the copy - the minimum corner of the texture sub-region to copy from. */
|
|
77
|
-
origin?: number
|
|
77
|
+
origin?: [number, number, number];
|
|
78
78
|
/** Defines which aspects of the {@link GPUImageCopyTexture#texture} to copy to/from. */
|
|
79
79
|
aspect?: 'all' | 'stencil-only' | 'depth-only';
|
|
80
80
|
|
|
@@ -83,7 +83,7 @@ export type CopyTextureToTextureOptions = {
|
|
|
83
83
|
/** Mip-map level of the texture to copy to/from. (Default 0) */
|
|
84
84
|
destinationMipLevel?: number;
|
|
85
85
|
/** Defines the origin of the copy - the minimum corner of the texture sub-region to copy to. */
|
|
86
|
-
destinationOrigin?: number
|
|
86
|
+
destinationOrigin?: [number, number, number];
|
|
87
87
|
/** Defines which aspects of the {@link GPUImageCopyTexture#texture} to copy to/from. */
|
|
88
88
|
destinationAspect?: 'all' | 'stencil-only' | 'depth-only';
|
|
89
89
|
|
|
@@ -113,7 +113,7 @@ export type ClearTextureOptions = {
|
|
|
113
113
|
// size?: number;
|
|
114
114
|
// };
|
|
115
115
|
|
|
116
|
-
// export type
|
|
116
|
+
// export type TextureWriteOptions = {
|
|
117
117
|
// destination: Texture;
|
|
118
118
|
// mipLevel?: number; // = 0;
|
|
119
119
|
// origin?: [number, number, number] | number[];
|
|
@@ -128,18 +128,34 @@ export type ClearTextureOptions = {
|
|
|
128
128
|
|
|
129
129
|
export type CommandEncoderProps = ResourceProps & {
|
|
130
130
|
measureExecutionTime?: boolean;
|
|
131
|
+
timeProfilingQuerySet?: QuerySet | null;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
type PassWithTimestamps = {
|
|
135
|
+
timestampQuerySet?: QuerySet;
|
|
136
|
+
beginTimestampIndex?: number;
|
|
137
|
+
endTimestampIndex?: number;
|
|
131
138
|
};
|
|
132
139
|
|
|
133
140
|
/**
|
|
134
|
-
*
|
|
141
|
+
* Records commands onto a single backend command encoder and can finish them into one command
|
|
142
|
+
* buffer. Resource helpers invoked through a CommandEncoder must record onto that encoder rather
|
|
143
|
+
* than allocating hidden encoders or submitting work eagerly.
|
|
135
144
|
*/
|
|
136
145
|
export abstract class CommandEncoder extends Resource<CommandEncoderProps> {
|
|
137
146
|
override get [Symbol.toStringTag](): string {
|
|
138
147
|
return 'CommandEncoder';
|
|
139
148
|
}
|
|
140
149
|
|
|
150
|
+
protected _timeProfilingQuerySet: QuerySet | null = null;
|
|
151
|
+
protected _timeProfilingSlotCount: number = 0;
|
|
152
|
+
_gpuTimeMs?: number;
|
|
153
|
+
|
|
141
154
|
constructor(device: Device, props: CommandEncoderProps) {
|
|
142
155
|
super(device, props, CommandEncoder.defaultProps);
|
|
156
|
+
this._timeProfilingQuerySet = props.timeProfilingQuerySet ?? null;
|
|
157
|
+
this._timeProfilingSlotCount = 0;
|
|
158
|
+
this._gpuTimeMs = undefined;
|
|
143
159
|
}
|
|
144
160
|
|
|
145
161
|
/** Completes recording of the commands sequence */
|
|
@@ -166,7 +182,7 @@ export abstract class CommandEncoder extends Resource<CommandEncoderProps> {
|
|
|
166
182
|
/** Add a command that clears a texture mip level. */
|
|
167
183
|
// abstract clearTexture(options: ClearTextureOptions): void;
|
|
168
184
|
|
|
169
|
-
// abstract readTexture(options:
|
|
185
|
+
// abstract readTexture(options: TextureReadOptions): Promise<TypedArray>;
|
|
170
186
|
|
|
171
187
|
/** Reads results from a query set into a GPU buffer. Values are 64 bits so byteLength must be querySet.props.count * 8 */
|
|
172
188
|
abstract resolveQuerySet(
|
|
@@ -179,6 +195,80 @@ export abstract class CommandEncoder extends Resource<CommandEncoderProps> {
|
|
|
179
195
|
}
|
|
180
196
|
): void;
|
|
181
197
|
|
|
198
|
+
/**
|
|
199
|
+
* Reads all resolved timestamp pairs on the current profiler query set and caches the sum
|
|
200
|
+
* as milliseconds on this encoder.
|
|
201
|
+
*/
|
|
202
|
+
async resolveTimeProfilingQuerySet(): Promise<void> {
|
|
203
|
+
this._gpuTimeMs = undefined;
|
|
204
|
+
|
|
205
|
+
if (!this._timeProfilingQuerySet) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const pairCount = Math.floor(this._timeProfilingSlotCount / 2);
|
|
210
|
+
if (pairCount <= 0) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const queryCount = pairCount * 2;
|
|
215
|
+
const results = await this._timeProfilingQuerySet.readResults({
|
|
216
|
+
firstQuery: 0,
|
|
217
|
+
queryCount
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
let totalDurationNanoseconds = 0n;
|
|
221
|
+
for (let queryIndex = 0; queryIndex < queryCount; queryIndex += 2) {
|
|
222
|
+
totalDurationNanoseconds += results[queryIndex + 1] - results[queryIndex];
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
this._gpuTimeMs = Number(totalDurationNanoseconds) / 1e6;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/** Returns the number of query slots consumed by automatic pass profiling on this encoder. */
|
|
229
|
+
getTimeProfilingSlotCount(): number {
|
|
230
|
+
return this._timeProfilingSlotCount;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
getTimeProfilingQuerySet(): QuerySet | null {
|
|
234
|
+
return this._timeProfilingQuerySet;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** Internal helper for auto-assigning timestamp slots to render/compute passes on this encoder. */
|
|
238
|
+
protected _applyTimeProfilingToPassProps<P extends PassWithTimestamps>(props?: P): P {
|
|
239
|
+
const passProps = (props || {}) as P;
|
|
240
|
+
|
|
241
|
+
if (!this._supportsTimestampQueries() || !this._timeProfilingQuerySet) {
|
|
242
|
+
return passProps;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (
|
|
246
|
+
passProps.timestampQuerySet !== undefined ||
|
|
247
|
+
passProps.beginTimestampIndex !== undefined ||
|
|
248
|
+
passProps.endTimestampIndex !== undefined
|
|
249
|
+
) {
|
|
250
|
+
return passProps;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const beginTimestampIndex = this._timeProfilingSlotCount;
|
|
254
|
+
if (beginTimestampIndex + 1 >= this._timeProfilingQuerySet.props.count) {
|
|
255
|
+
return passProps;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
this._timeProfilingSlotCount += 2;
|
|
259
|
+
|
|
260
|
+
return {
|
|
261
|
+
...passProps,
|
|
262
|
+
timestampQuerySet: this._timeProfilingQuerySet,
|
|
263
|
+
beginTimestampIndex,
|
|
264
|
+
endTimestampIndex: beginTimestampIndex + 1
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
protected _supportsTimestampQueries(): boolean {
|
|
269
|
+
return this.device.features.has('timestamp-query');
|
|
270
|
+
}
|
|
271
|
+
|
|
182
272
|
/** Begins a labeled debug group containing subsequent commands */
|
|
183
273
|
abstract pushDebugGroup(groupLabel: string): void;
|
|
184
274
|
/** Ends the labeled debug group most recently started by pushDebugGroup() */
|
|
@@ -192,6 +282,7 @@ export abstract class CommandEncoder extends Resource<CommandEncoderProps> {
|
|
|
192
282
|
|
|
193
283
|
static override defaultProps: Required<CommandEncoderProps> = {
|
|
194
284
|
...Resource.defaultProps,
|
|
195
|
-
measureExecutionTime: undefined
|
|
285
|
+
measureExecutionTime: undefined!,
|
|
286
|
+
timeProfilingQuerySet: undefined!
|
|
196
287
|
};
|
|
197
288
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
import {Resource, ResourceProps} from './resource';
|
|
6
|
-
import type {ComputeShaderLayout,
|
|
6
|
+
import type {ComputeShaderLayout, Bindings, BindingsByGroup} from '../types/shader-layout';
|
|
7
7
|
import type {Device} from '../device';
|
|
8
8
|
import type {Shader} from './shader';
|
|
9
9
|
|
|
@@ -43,7 +43,7 @@ export abstract class ComputePipeline extends Resource<ComputePipelineProps> {
|
|
|
43
43
|
* @todo Use renderpass.setBindings() ?
|
|
44
44
|
* @todo Do we want to expose BindGroups in the API and remove this?
|
|
45
45
|
*/
|
|
46
|
-
abstract setBindings(bindings:
|
|
46
|
+
abstract setBindings(bindings: Bindings | BindingsByGroup): void;
|
|
47
47
|
|
|
48
48
|
static override defaultProps: Required<ComputePipelineProps> = {
|
|
49
49
|
...Resource.defaultProps,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {Device} from '../device';
|
|
6
|
+
import {Resource, type ResourceProps} from './resource';
|
|
7
|
+
|
|
8
|
+
export type FenceProps = ResourceProps;
|
|
9
|
+
|
|
10
|
+
/** Synchronization primitive that resolves when GPU work is completed */
|
|
11
|
+
export abstract class Fence extends Resource<FenceProps> {
|
|
12
|
+
static override defaultProps: Required<FenceProps> = {
|
|
13
|
+
...Resource.defaultProps
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
override get [Symbol.toStringTag](): string {
|
|
17
|
+
return 'Fence';
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Promise that resolves when the fence is signaled */
|
|
21
|
+
abstract readonly signaled: Promise<void>;
|
|
22
|
+
|
|
23
|
+
constructor(device: Device, props: FenceProps = {}) {
|
|
24
|
+
super(device, props, Fence.defaultProps);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Destroy the fence and release any resources */
|
|
28
|
+
abstract override destroy(): void;
|
|
29
|
+
|
|
30
|
+
/** Check if the fence has been signaled */
|
|
31
|
+
abstract isSignaled(): boolean;
|
|
32
|
+
}
|
|
@@ -6,7 +6,7 @@ import type {
|
|
|
6
6
|
TextureFormatColor,
|
|
7
7
|
TextureFormatDepthStencil,
|
|
8
8
|
TextureFormat
|
|
9
|
-
} from '../../shadertypes/
|
|
9
|
+
} from '../../shadertypes/texture-types/texture-formats';
|
|
10
10
|
import type {Device} from '../device';
|
|
11
11
|
import {Resource, ResourceProps} from './resource';
|
|
12
12
|
import {Texture} from './texture';
|
|
@@ -56,7 +56,12 @@ export abstract class Framebuffer extends Resource<FramebufferProps> {
|
|
|
56
56
|
const depthStencilAttachment =
|
|
57
57
|
this.depthStencilAttachment && this.depthStencilAttachment.texture.clone(size);
|
|
58
58
|
|
|
59
|
-
return this.device.createFramebuffer({
|
|
59
|
+
return this.device.createFramebuffer({
|
|
60
|
+
...this.props,
|
|
61
|
+
...size,
|
|
62
|
+
colorAttachments,
|
|
63
|
+
depthStencilAttachment
|
|
64
|
+
});
|
|
60
65
|
}
|
|
61
66
|
|
|
62
67
|
/**
|
|
@@ -146,17 +151,15 @@ export abstract class Framebuffer extends Resource<FramebufferProps> {
|
|
|
146
151
|
* and destroys existing textures if owned
|
|
147
152
|
*/
|
|
148
153
|
protected resizeAttachments(width: number, height: number): void {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
}
|
|
154
|
+
this.colorAttachments.forEach((colorAttachment, i) => {
|
|
155
|
+
const resizedTexture = colorAttachment.texture.clone({
|
|
156
|
+
width,
|
|
157
|
+
height
|
|
158
|
+
});
|
|
159
|
+
this.destroyAttachedResource(colorAttachment);
|
|
160
|
+
this.colorAttachments[i] = resizedTexture.view;
|
|
161
|
+
this.attachResource(resizedTexture.view);
|
|
162
|
+
});
|
|
160
163
|
|
|
161
164
|
if (this.depthStencilAttachment) {
|
|
162
165
|
const resizedTexture = this.depthStencilAttachment.texture.clone({
|
|
@@ -16,7 +16,8 @@ export type QuerySetProps = ResourceProps & {
|
|
|
16
16
|
/**
|
|
17
17
|
* The type of query set
|
|
18
18
|
* occlusion - query the number of fragment samples that pass all the per-fragment tests for a set of drawing commands, including scissor, sample mask, alpha to coverage, stencil, and depth tests
|
|
19
|
-
* timestamp - query the GPU timestamp counter
|
|
19
|
+
* timestamp - query the GPU timestamp counter. Timestamp queries are available if the
|
|
20
|
+
* `timestamp-query` feature is present.
|
|
20
21
|
*/
|
|
21
22
|
type: 'occlusion' | 'timestamp';
|
|
22
23
|
/** The number of queries managed by the query set */
|
|
@@ -38,4 +39,19 @@ export abstract class QuerySet extends Resource<QuerySetProps> {
|
|
|
38
39
|
type: undefined!,
|
|
39
40
|
count: undefined!
|
|
40
41
|
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Returns true if the requested result has been captured and can be read without blocking.
|
|
45
|
+
* Backends may implement this conservatively.
|
|
46
|
+
*/
|
|
47
|
+
abstract isResultAvailable(queryIndex?: number): boolean;
|
|
48
|
+
|
|
49
|
+
/** Reads query results as 64-bit values. */
|
|
50
|
+
abstract readResults(options?: {firstQuery?: number; queryCount?: number}): Promise<bigint[]>;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Reads a timestamp duration in milliseconds between a begin and end query index.
|
|
54
|
+
* Portable duration profiling requires adjacent indices that identify one logical pair.
|
|
55
|
+
*/
|
|
56
|
+
abstract readTimestampDuration(beginIndex: number, endIndex: number): Promise<number>;
|
|
41
57
|
}
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
import type {Device} from '../device';
|
|
6
|
-
import type {UniformValue} from '../types/uniforms';
|
|
7
6
|
import type {PrimitiveTopology, RenderPipelineParameters} from '../types/parameters';
|
|
8
|
-
import type {ShaderLayout,
|
|
7
|
+
import type {ShaderLayout, Bindings, BindingsByGroup} from '../types/shader-layout';
|
|
9
8
|
import type {BufferLayout} from '../types/buffer-layout';
|
|
10
9
|
import type {
|
|
11
10
|
TextureFormatColor,
|
|
12
11
|
TextureFormatDepthStencil
|
|
13
|
-
} from '@luma.gl/core/shadertypes/
|
|
12
|
+
} from '@luma.gl/core/shadertypes/texture-types/texture-formats';
|
|
14
13
|
import type {Shader} from './shader';
|
|
14
|
+
import type {SharedRenderPipeline} from './shared-render-pipeline';
|
|
15
15
|
import type {RenderPass} from './render-pass';
|
|
16
16
|
import {Resource, ResourceProps} from './resource';
|
|
17
17
|
import {VertexArray} from './vertex-array';
|
|
@@ -51,12 +51,22 @@ export type RenderPipelineProps = ResourceProps & {
|
|
|
51
51
|
/** Parameters that are controlled by pipeline */
|
|
52
52
|
parameters?: RenderPipelineParameters;
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
/** Transform feedback varyings captured when linking a WebGL render pipeline. WebGL only. */
|
|
55
|
+
varyings?: string[];
|
|
56
|
+
/** Transform feedback buffer mode used when linking a WebGL render pipeline. WebGL only. */
|
|
57
|
+
bufferMode?: number;
|
|
58
|
+
|
|
59
|
+
/** Some applications intentionally supply unused attributes and bindings, and want to disable warnings */
|
|
60
|
+
disableWarnings?: boolean;
|
|
61
|
+
|
|
62
|
+
/** Internal hook for backend-specific shared pipeline implementations. */
|
|
63
|
+
_sharedRenderPipeline?: SharedRenderPipeline;
|
|
55
64
|
|
|
65
|
+
// Dynamic bindings (TODO - pipelines should be immutable, move to RenderPass)
|
|
56
66
|
/** Buffers, Textures, Samplers for the shader bindings */
|
|
57
|
-
bindings?:
|
|
58
|
-
/**
|
|
59
|
-
|
|
67
|
+
bindings?: Bindings;
|
|
68
|
+
/** Bindings grouped by bind-group index */
|
|
69
|
+
bindGroups?: BindingsByGroup;
|
|
60
70
|
};
|
|
61
71
|
|
|
62
72
|
/**
|
|
@@ -78,19 +88,34 @@ export abstract class RenderPipeline extends Resource<RenderPipelineProps> {
|
|
|
78
88
|
linkStatus: 'pending' | 'success' | 'error' = 'pending';
|
|
79
89
|
/** The hash of the pipeline */
|
|
80
90
|
hash: string = '';
|
|
91
|
+
/** Optional shared backend implementation */
|
|
92
|
+
sharedRenderPipeline: SharedRenderPipeline | null = null;
|
|
93
|
+
|
|
94
|
+
/** Whether shader or pipeline compilation/linking is still in progress */
|
|
95
|
+
get isPending(): boolean {
|
|
96
|
+
return (
|
|
97
|
+
this.linkStatus === 'pending' ||
|
|
98
|
+
this.vs.compilationStatus === 'pending' ||
|
|
99
|
+
this.fs?.compilationStatus === 'pending'
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** Whether shader or pipeline compilation/linking has failed */
|
|
104
|
+
get isErrored(): boolean {
|
|
105
|
+
return (
|
|
106
|
+
this.linkStatus === 'error' ||
|
|
107
|
+
this.vs.compilationStatus === 'error' ||
|
|
108
|
+
this.fs?.compilationStatus === 'error'
|
|
109
|
+
);
|
|
110
|
+
}
|
|
81
111
|
|
|
82
112
|
constructor(device: Device, props: RenderPipelineProps) {
|
|
83
113
|
super(device, props, RenderPipeline.defaultProps);
|
|
84
114
|
this.shaderLayout = this.props.shaderLayout!;
|
|
85
115
|
this.bufferLayout = this.props.bufferLayout || [];
|
|
116
|
+
this.sharedRenderPipeline = this.props._sharedRenderPipeline || null;
|
|
86
117
|
}
|
|
87
118
|
|
|
88
|
-
/** Set bindings (stored on pipeline and set before each call) */
|
|
89
|
-
abstract setBindings(
|
|
90
|
-
bindings: Record<string, Binding>,
|
|
91
|
-
options?: {disableWarnings?: boolean}
|
|
92
|
-
): void;
|
|
93
|
-
|
|
94
119
|
/** Draw call. Returns false if the draw call was aborted (due to resources still initializing) */
|
|
95
120
|
abstract draw(options: {
|
|
96
121
|
/** Render pass to draw into (targeting screen or framebuffer) */
|
|
@@ -118,6 +143,14 @@ export abstract class RenderPipeline extends Resource<RenderPipelineProps> {
|
|
|
118
143
|
baseVertex?: number;
|
|
119
144
|
/** Transform feedback. WebGL only. */
|
|
120
145
|
transformFeedback?: TransformFeedback;
|
|
146
|
+
/** Bindings applied for this draw (textures, samplers, uniform buffers) */
|
|
147
|
+
bindings?: Bindings;
|
|
148
|
+
/** Bindings grouped by bind-group index */
|
|
149
|
+
bindGroups?: BindingsByGroup;
|
|
150
|
+
/** Optional stable cache keys for backend bind-group reuse */
|
|
151
|
+
_bindGroupCacheKeys?: Partial<Record<number, object>>;
|
|
152
|
+
/** WebGL-only uniforms */
|
|
153
|
+
uniforms?: Record<string, unknown>;
|
|
121
154
|
}): boolean;
|
|
122
155
|
|
|
123
156
|
static override defaultProps: Required<RenderPipelineProps> = {
|
|
@@ -139,8 +172,11 @@ export abstract class RenderPipeline extends Resource<RenderPipelineProps> {
|
|
|
139
172
|
depthStencilAttachmentFormat: undefined!,
|
|
140
173
|
|
|
141
174
|
parameters: {},
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
175
|
+
varyings: undefined!,
|
|
176
|
+
bufferMode: undefined!,
|
|
177
|
+
disableWarnings: false,
|
|
178
|
+
_sharedRenderPipeline: undefined!,
|
|
179
|
+
bindings: undefined!,
|
|
180
|
+
bindGroups: undefined!
|
|
145
181
|
};
|
|
146
182
|
}
|