@aethervtt/shard-gpu-webgl2 0.0.0-stage → 0.2.0
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 +21 -0
- package/README.md +2 -2
- package/dist/binding.d.ts +32 -0
- package/dist/binding.js +81 -0
- package/dist/cache.d.ts +73 -0
- package/dist/cache.js +184 -0
- package/dist/commands.d.ts +101 -0
- package/dist/commands.js +391 -0
- package/dist/constants.d.ts +41 -0
- package/dist/constants.js +38 -0
- package/dist/copies.d.ts +61 -0
- package/dist/copies.js +629 -0
- package/dist/device.d.ts +168 -0
- package/dist/device.js +401 -0
- package/dist/errors.d.ts +8 -0
- package/dist/errors.js +18 -0
- package/dist/fake-gl.d.ts +338 -0
- package/dist/fake-gl.js +980 -0
- package/dist/fbo.d.ts +30 -0
- package/dist/fbo.js +142 -0
- package/dist/formats.d.ts +25 -0
- package/dist/formats.js +106 -0
- package/dist/gl.d.ts +216 -0
- package/dist/gl.js +232 -0
- package/dist/gpu.d.ts +58 -0
- package/dist/gpu.js +215 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +42 -0
- package/dist/naga.d.ts +37 -0
- package/dist/naga.js +99 -0
- package/dist/pipeline.d.ts +113 -0
- package/dist/pipeline.js +294 -0
- package/dist/present.d.ts +18 -0
- package/dist/present.js +108 -0
- package/dist/queries.d.ts +41 -0
- package/dist/queries.js +110 -0
- package/dist/queue.d.ts +13 -0
- package/dist/queue.js +50 -0
- package/dist/readback.d.ts +17 -0
- package/dist/readback.js +104 -0
- package/dist/replay.d.ts +78 -0
- package/dist/replay.js +678 -0
- package/dist/resources.d.ts +96 -0
- package/dist/resources.js +355 -0
- package/dist/state.d.ts +43 -0
- package/dist/state.js +169 -0
- package/package.json +36 -4
- package/wasm/shard_naga.wasm +0 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
export interface FakeBuffer {
|
|
2
|
+
kind: 'buffer';
|
|
3
|
+
id: number;
|
|
4
|
+
data: Uint8Array;
|
|
5
|
+
deleted: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface FakeTexture {
|
|
8
|
+
kind: 'texture';
|
|
9
|
+
id: number;
|
|
10
|
+
target: number;
|
|
11
|
+
internal: number;
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
depth: number;
|
|
15
|
+
levels: number;
|
|
16
|
+
/** Per level: 4 components a texel, every layer. */
|
|
17
|
+
images: Float64Array[];
|
|
18
|
+
params: Map<number, number>;
|
|
19
|
+
deleted: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface FakeRenderbuffer {
|
|
22
|
+
kind: 'renderbuffer';
|
|
23
|
+
id: number;
|
|
24
|
+
internal: number;
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
samples: number;
|
|
28
|
+
image: Float64Array;
|
|
29
|
+
deleted: boolean;
|
|
30
|
+
}
|
|
31
|
+
interface Attachment {
|
|
32
|
+
object: FakeTexture | FakeRenderbuffer;
|
|
33
|
+
level: number;
|
|
34
|
+
layer: number;
|
|
35
|
+
}
|
|
36
|
+
export interface FakeFramebuffer {
|
|
37
|
+
kind: 'framebuffer';
|
|
38
|
+
id: number;
|
|
39
|
+
attachments: Map<number, Attachment>;
|
|
40
|
+
drawBuffers: number[];
|
|
41
|
+
readBuffer: number;
|
|
42
|
+
deleted: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface FakeProgram {
|
|
45
|
+
kind: 'program';
|
|
46
|
+
id: number;
|
|
47
|
+
sources: string[];
|
|
48
|
+
linked: boolean;
|
|
49
|
+
blockIndices: Map<string, number>;
|
|
50
|
+
blockPoints: Map<number, number>;
|
|
51
|
+
uniforms: Map<string, number | number[]>;
|
|
52
|
+
deleted: boolean;
|
|
53
|
+
}
|
|
54
|
+
interface FakeAttrib {
|
|
55
|
+
enabled: boolean;
|
|
56
|
+
buffer: FakeBuffer | null;
|
|
57
|
+
size: number;
|
|
58
|
+
type: number;
|
|
59
|
+
normalized: boolean;
|
|
60
|
+
integer: boolean;
|
|
61
|
+
stride: number;
|
|
62
|
+
offset: number;
|
|
63
|
+
divisor: number;
|
|
64
|
+
}
|
|
65
|
+
interface FakeVao {
|
|
66
|
+
kind: 'vao';
|
|
67
|
+
id: number;
|
|
68
|
+
element: FakeBuffer | null;
|
|
69
|
+
attribs: FakeAttrib[];
|
|
70
|
+
}
|
|
71
|
+
export interface DrawRecord {
|
|
72
|
+
call: 'drawArrays' | 'drawElements';
|
|
73
|
+
mode: number;
|
|
74
|
+
first: number;
|
|
75
|
+
count: number;
|
|
76
|
+
type: number;
|
|
77
|
+
offset: number;
|
|
78
|
+
instances: number;
|
|
79
|
+
program: FakeProgram;
|
|
80
|
+
framebuffer: FakeFramebuffer | null;
|
|
81
|
+
viewport: number[];
|
|
82
|
+
/** Uniform buffer ranges by binding point, for the points the program uses. */
|
|
83
|
+
blocks: Map<number, {
|
|
84
|
+
buffer: FakeBuffer | null;
|
|
85
|
+
offset: number;
|
|
86
|
+
size: number;
|
|
87
|
+
}>;
|
|
88
|
+
/** Texture and sampler by unit, for the units the program samples. */
|
|
89
|
+
units: Map<number, {
|
|
90
|
+
texture: FakeTexture | null;
|
|
91
|
+
sampler: object | null;
|
|
92
|
+
base: number;
|
|
93
|
+
max: number;
|
|
94
|
+
}>;
|
|
95
|
+
attribs: (FakeAttrib & {
|
|
96
|
+
location: number;
|
|
97
|
+
})[];
|
|
98
|
+
element: FakeBuffer | null;
|
|
99
|
+
uniforms: Map<string, number | number[]>;
|
|
100
|
+
enabled: Set<number>;
|
|
101
|
+
colorMask: boolean[];
|
|
102
|
+
depthMask: boolean;
|
|
103
|
+
depthFunc: number;
|
|
104
|
+
frontFace: number;
|
|
105
|
+
cullFace: number;
|
|
106
|
+
blend: number[];
|
|
107
|
+
}
|
|
108
|
+
export interface FakeGlOptions {
|
|
109
|
+
/** Extensions to leave out (`getExtension` returns null). */
|
|
110
|
+
without?: string[];
|
|
111
|
+
/** getParameter overrides. */
|
|
112
|
+
parameters?: Record<number, number | string>;
|
|
113
|
+
/** Sample counts by renderbuffer internal format (default [8, 4, 2]). */
|
|
114
|
+
samples?: Record<number, number[]>;
|
|
115
|
+
/** Links pending this many polls of COMPLETION_STATUS_KHR. */
|
|
116
|
+
linkPolls?: number;
|
|
117
|
+
/** UNIFORM_BLOCK_DATA_SIZE by block name prefix (default 0: whatever is bound). */
|
|
118
|
+
blockSizes?: Record<string, number>;
|
|
119
|
+
/**
|
|
120
|
+
* Offers EXT_disjoint_timer_query_webgl2 (0074): every TIME_ELAPSED query takes `elapsedNs`, and
|
|
121
|
+
* its result is available after `polls` reads of QUERY_RESULT_AVAILABLE (default 0).
|
|
122
|
+
*/
|
|
123
|
+
timerQuery?: {
|
|
124
|
+
elapsedNs: number;
|
|
125
|
+
polls?: number;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
export declare class FakeGl {
|
|
129
|
+
readonly canvas: {
|
|
130
|
+
width: number;
|
|
131
|
+
height: number;
|
|
132
|
+
listeners: Map<string, EventListener[]>;
|
|
133
|
+
addEventListener(type: string, l: EventListener): void;
|
|
134
|
+
removeEventListener(type: string, l: EventListener): void;
|
|
135
|
+
dispatch(type: string): void;
|
|
136
|
+
};
|
|
137
|
+
/** Method names, in call order. */
|
|
138
|
+
readonly calls: string[];
|
|
139
|
+
readonly draws: DrawRecord[];
|
|
140
|
+
/** Whether draws are recorded (off for allocation checks: a record is an allocation). */
|
|
141
|
+
recordDraws: boolean;
|
|
142
|
+
/** GL errors to hand out from getError. */
|
|
143
|
+
readonly errors: number[];
|
|
144
|
+
/** The default framebuffer's texels (the canvas), 4 components each. */
|
|
145
|
+
backbuffer: Float64Array;
|
|
146
|
+
lost: boolean;
|
|
147
|
+
/** Calls made on extensions, by name. */
|
|
148
|
+
readonly extensionCalls: string[];
|
|
149
|
+
private readonly options;
|
|
150
|
+
private next;
|
|
151
|
+
private readonly extensions;
|
|
152
|
+
private readonly bound;
|
|
153
|
+
private readonly ranges;
|
|
154
|
+
private readonly defaultVao;
|
|
155
|
+
private vao;
|
|
156
|
+
private program;
|
|
157
|
+
private active;
|
|
158
|
+
private readonly units;
|
|
159
|
+
private readonly samplers;
|
|
160
|
+
private drawFb;
|
|
161
|
+
private readFb;
|
|
162
|
+
private renderbuffer;
|
|
163
|
+
private readonly enabled;
|
|
164
|
+
private readonly pixel;
|
|
165
|
+
private viewport_;
|
|
166
|
+
private scissor_;
|
|
167
|
+
private colorMask_;
|
|
168
|
+
private depthMask_;
|
|
169
|
+
private depthFunc_;
|
|
170
|
+
private frontFace_;
|
|
171
|
+
private cullFace_;
|
|
172
|
+
private blend_;
|
|
173
|
+
private clearColor_;
|
|
174
|
+
private pendingLinks;
|
|
175
|
+
constructor(options?: FakeGlOptions);
|
|
176
|
+
/** The fake as the context type the shim takes, logging every call. */
|
|
177
|
+
get context(): WebGL2RenderingContext;
|
|
178
|
+
/** Calls since `mark` (an index into `calls`), by name. */
|
|
179
|
+
callsSince(mark: number): string[];
|
|
180
|
+
/** Texel `(x, y)` of `texture`'s level and layer, 4 components. */
|
|
181
|
+
texel(texture: FakeTexture | FakeRenderbuffer, x: number, y: number, level?: number, layer?: number): number[];
|
|
182
|
+
isContextLost(): boolean;
|
|
183
|
+
getExtension(name: string): object | null;
|
|
184
|
+
getParameter(p: number): number | string;
|
|
185
|
+
getInternalformatParameter(_target: number, internal: number, _p: number): Int32Array;
|
|
186
|
+
getError(): number;
|
|
187
|
+
enable(cap: number): void;
|
|
188
|
+
disable(cap: number): void;
|
|
189
|
+
pixelStorei(p: number, v: number | boolean): void;
|
|
190
|
+
viewport(x: number, y: number, w: number, h: number): void;
|
|
191
|
+
scissor(x: number, y: number, w: number, h: number): void;
|
|
192
|
+
depthRange(): void;
|
|
193
|
+
colorMask(r: boolean, g: boolean, b: boolean, a: boolean): void;
|
|
194
|
+
depthMask(on: boolean): void;
|
|
195
|
+
depthFunc(f: number): void;
|
|
196
|
+
frontFace(f: number): void;
|
|
197
|
+
cullFace(f: number): void;
|
|
198
|
+
blendEquationSeparate(c: number, a: number): void;
|
|
199
|
+
blendFuncSeparate(cs: number, cd: number, as: number, ad: number): void;
|
|
200
|
+
blendColor(): void;
|
|
201
|
+
polygonOffset(): void;
|
|
202
|
+
stencilOpSeparate(): void;
|
|
203
|
+
stencilFuncSeparate(): void;
|
|
204
|
+
stencilMask(): void;
|
|
205
|
+
clearColor(r: number, g: number, b: number, a: number): void;
|
|
206
|
+
flush(): void;
|
|
207
|
+
hint(): void;
|
|
208
|
+
createBuffer(): FakeBuffer;
|
|
209
|
+
deleteBuffer(b: FakeBuffer | null): void;
|
|
210
|
+
bindBuffer(target: number, b: FakeBuffer | null): void;
|
|
211
|
+
private buffer;
|
|
212
|
+
bufferData(target: number, sizeOrData: number | ArrayBufferView): void;
|
|
213
|
+
bufferSubData(target: number, offset: number, src: ArrayBufferView | ArrayBuffer, srcOffset?: number, length?: number): void;
|
|
214
|
+
copyBufferSubData(readTarget: number, writeTarget: number, readOffset: number, writeOffset: number, size: number): void;
|
|
215
|
+
getBufferSubData(target: number, offset: number, dst: ArrayBufferView, dstOffset?: number, length?: number): void;
|
|
216
|
+
bindBufferRange(_target: number, point: number, b: FakeBuffer | null, offset: number, size: number): void;
|
|
217
|
+
createTexture(): FakeTexture;
|
|
218
|
+
deleteTexture(t: FakeTexture | null): void;
|
|
219
|
+
activeTexture(unit: number): void;
|
|
220
|
+
bindTexture(target: number, t: FakeTexture | null): void;
|
|
221
|
+
private boundTexture;
|
|
222
|
+
texStorage2D(target: number, levels: number, internal: number, w: number, h: number): void;
|
|
223
|
+
texStorage3D(target: number, levels: number, internal: number, w: number, h: number, d: number): void;
|
|
224
|
+
private storage;
|
|
225
|
+
texParameteri(target: number, p: number, v: number): void;
|
|
226
|
+
texSubImage2D(target: number, level: number, x: number, y: number, w: number, h: number, format: number, type: number, src?: ArrayBufferView | number | object, srcOffset?: number): void;
|
|
227
|
+
texSubImage3D(target: number, level: number, x: number, y: number, z: number, w: number, h: number, d: number, format: number, type: number, src?: ArrayBufferView | number | object, srcOffset?: number): void;
|
|
228
|
+
compressedTexSubImage2D(): void;
|
|
229
|
+
compressedTexSubImage3D(): void;
|
|
230
|
+
private upload;
|
|
231
|
+
private image;
|
|
232
|
+
createSampler(): object;
|
|
233
|
+
samplerParameteri(s: {
|
|
234
|
+
params: Map<number, number>;
|
|
235
|
+
}, p: number, v: number): void;
|
|
236
|
+
samplerParameterf(s: {
|
|
237
|
+
params: Map<number, number>;
|
|
238
|
+
}, p: number, v: number): void;
|
|
239
|
+
bindSampler(unit: number, s: object | null): void;
|
|
240
|
+
createRenderbuffer(): FakeRenderbuffer;
|
|
241
|
+
deleteRenderbuffer(r: FakeRenderbuffer | null): void;
|
|
242
|
+
bindRenderbuffer(_target: number, r: FakeRenderbuffer | null): void;
|
|
243
|
+
renderbufferStorage(_target: number, internal: number, w: number, h: number): void;
|
|
244
|
+
renderbufferStorageMultisample(_target: number, samples: number, internal: number, w: number, h: number): void;
|
|
245
|
+
createFramebuffer(): FakeFramebuffer;
|
|
246
|
+
deleteFramebuffer(f: FakeFramebuffer | null): void;
|
|
247
|
+
bindFramebuffer(target: number, f: FakeFramebuffer | null): void;
|
|
248
|
+
framebufferTexture2D(_target: number, point: number, texTarget: number, t: FakeTexture | null, level: number): void;
|
|
249
|
+
framebufferTextureLayer(_target: number, point: number, t: FakeTexture | null, level: number, layer: number): void;
|
|
250
|
+
framebufferRenderbuffer(_target: number, point: number, _rt: number, r: FakeRenderbuffer | null): void;
|
|
251
|
+
drawBuffers(buffers: number[]): void;
|
|
252
|
+
readBuffer(b: number): void;
|
|
253
|
+
checkFramebufferStatus(): number;
|
|
254
|
+
invalidateFramebuffer(): void;
|
|
255
|
+
/** The attachment a color draw buffer writes, or the depth/stencil one. */
|
|
256
|
+
private attachment;
|
|
257
|
+
private fill;
|
|
258
|
+
clearBufferfv(buffer: number, drawBuffer: number, values: ArrayLike<number>): void;
|
|
259
|
+
clearBufferuiv(_buffer: number, drawBuffer: number, values: ArrayLike<number>): void;
|
|
260
|
+
clearBufferiv(buffer: number, drawBuffer: number, values: ArrayLike<number>): void;
|
|
261
|
+
clearBufferfi(_buffer: number, _drawBuffer: number, depth: number): void;
|
|
262
|
+
clear(mask: number): void;
|
|
263
|
+
blitFramebuffer(sx0: number, sy0: number, sx1: number, sy1: number, dx0: number, dy0: number, dx1: number, dy1: number, mask: number): void;
|
|
264
|
+
readPixels(x: number, y: number, w: number, h: number, format: number, type: number, dst: ArrayBufferView | number, dstOffset?: number): void;
|
|
265
|
+
createShader(type: number): {
|
|
266
|
+
kind: 'shader';
|
|
267
|
+
type: number;
|
|
268
|
+
source: string;
|
|
269
|
+
};
|
|
270
|
+
shaderSource(s: {
|
|
271
|
+
source: string;
|
|
272
|
+
}, source: string): void;
|
|
273
|
+
compileShader(): void;
|
|
274
|
+
deleteShader(): void;
|
|
275
|
+
getShaderInfoLog(s: {
|
|
276
|
+
source: string;
|
|
277
|
+
}): string;
|
|
278
|
+
createProgram(): FakeProgram;
|
|
279
|
+
attachShader(p: FakeProgram, s: {
|
|
280
|
+
source: string;
|
|
281
|
+
}): void;
|
|
282
|
+
linkProgram(p: FakeProgram): void;
|
|
283
|
+
getProgramParameter(p: FakeProgram, which: number): boolean;
|
|
284
|
+
getProgramInfoLog(p: FakeProgram): string;
|
|
285
|
+
deleteProgram(p: FakeProgram | null): void;
|
|
286
|
+
useProgram(p: FakeProgram | null): void;
|
|
287
|
+
getUniformBlockIndex(p: FakeProgram, name: string): number;
|
|
288
|
+
getActiveUniformBlockParameter(p: FakeProgram, index: number): number;
|
|
289
|
+
uniformBlockBinding(p: FakeProgram, index: number, point: number): void;
|
|
290
|
+
getUniformLocation(p: FakeProgram, name: string): {
|
|
291
|
+
program: FakeProgram;
|
|
292
|
+
name: string;
|
|
293
|
+
} | null;
|
|
294
|
+
private setUniform;
|
|
295
|
+
uniform1i(l: {
|
|
296
|
+
program: FakeProgram;
|
|
297
|
+
name: string;
|
|
298
|
+
} | null, v: number): void;
|
|
299
|
+
uniform1ui(l: {
|
|
300
|
+
program: FakeProgram;
|
|
301
|
+
name: string;
|
|
302
|
+
} | null, v: number): void;
|
|
303
|
+
uniform3i(l: {
|
|
304
|
+
program: FakeProgram;
|
|
305
|
+
name: string;
|
|
306
|
+
} | null, x: number, y: number, z: number): void;
|
|
307
|
+
createVertexArray(): FakeVao;
|
|
308
|
+
bindVertexArray(v: FakeVao | null): void;
|
|
309
|
+
private attrib;
|
|
310
|
+
enableVertexAttribArray(loc: number): void;
|
|
311
|
+
disableVertexAttribArray(loc: number): void;
|
|
312
|
+
vertexAttribPointer(loc: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void;
|
|
313
|
+
vertexAttribIPointer(loc: number, size: number, type: number, stride: number, offset: number): void;
|
|
314
|
+
private point;
|
|
315
|
+
vertexAttribDivisor(loc: number, divisor: number): void;
|
|
316
|
+
drawArrays(mode: number, first: number, count: number): void;
|
|
317
|
+
drawArraysInstanced(mode: number, first: number, count: number, instances: number): void;
|
|
318
|
+
drawElementsInstanced(mode: number, count: number, type: number, offset: number, instances: number): void;
|
|
319
|
+
private record;
|
|
320
|
+
/** Queries begun so far, and the one running. */
|
|
321
|
+
queriesBegun: number;
|
|
322
|
+
private activeQuery;
|
|
323
|
+
createQuery(): object;
|
|
324
|
+
deleteQuery(): void;
|
|
325
|
+
beginQuery(_target: number, query: {
|
|
326
|
+
polls: number;
|
|
327
|
+
ended: boolean;
|
|
328
|
+
}): void;
|
|
329
|
+
endQuery(): void;
|
|
330
|
+
getQueryParameter(query: {
|
|
331
|
+
polls: number;
|
|
332
|
+
ended: boolean;
|
|
333
|
+
}, p: number): number | boolean;
|
|
334
|
+
fenceSync(): object;
|
|
335
|
+
getSyncParameter(): number;
|
|
336
|
+
deleteSync(): void;
|
|
337
|
+
}
|
|
338
|
+
export {};
|