akarisub 0.2.2 → 1.0.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.
Files changed (76) hide show
  1. package/README.md +198 -167
  2. package/THIRD_PARTY_NOTICES.md +55 -163
  3. package/dist/COPYRIGHT +56 -164
  4. package/dist/index.d.ts +12 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +11 -147
  7. package/dist/index.js.map +1 -0
  8. package/dist/ts/{ts/akarisub.d.ts → akarisub.d.ts} +80 -99
  9. package/dist/ts/akarisub.d.ts.map +1 -0
  10. package/dist/ts/akarisub.js +2086 -0
  11. package/dist/ts/akarisub.js.map +1 -0
  12. package/dist/ts/timing.d.ts +63 -0
  13. package/dist/ts/timing.d.ts.map +1 -0
  14. package/dist/ts/timing.js +219 -0
  15. package/dist/ts/timing.js.map +1 -0
  16. package/dist/ts/{ts/types.d.ts → types.d.ts} +103 -78
  17. package/dist/ts/types.d.ts.map +1 -0
  18. package/dist/ts/types.js +2 -0
  19. package/dist/ts/{ts/types.js.map → types.js.map} +1 -1
  20. package/dist/ts/{ts/utils.d.ts → utils.d.ts} +0 -31
  21. package/dist/ts/utils.d.ts.map +1 -0
  22. package/dist/ts/{ts/utils.js → utils.js} +0 -56
  23. package/dist/ts/utils.js.map +1 -0
  24. package/dist/ts/wasm.d.ts +12 -0
  25. package/dist/ts/wasm.d.ts.map +1 -0
  26. package/dist/ts/wasm.js +46 -0
  27. package/dist/ts/wasm.js.map +1 -0
  28. package/dist/ts/{ts/webgl2-renderer.d.ts → webgl2-renderer.d.ts} +0 -12
  29. package/dist/ts/webgl2-renderer.d.ts.map +1 -0
  30. package/dist/ts/{ts/webgl2-renderer.js → webgl2-renderer.js} +0 -27
  31. package/dist/ts/webgl2-renderer.js.map +1 -0
  32. package/dist/ts/{ts/webgpu-renderer.d.ts → webgpu-renderer.d.ts} +17 -16
  33. package/dist/ts/webgpu-renderer.d.ts.map +1 -0
  34. package/dist/ts/{ts/webgpu-renderer.js → webgpu-renderer.js} +148 -71
  35. package/dist/ts/webgpu-renderer.js.map +1 -0
  36. package/dist/ts/worker.d.ts +2 -0
  37. package/dist/ts/{ts/worker.d.ts.map → worker.d.ts.map} +1 -1
  38. package/dist/ts/{ts/worker.js → worker.js} +1064 -264
  39. package/dist/ts/worker.js.map +1 -0
  40. package/dist/wrapper.d.ts +8 -0
  41. package/dist/wrapper.d.ts.map +1 -0
  42. package/dist/{ts/index.js → wrapper.js} +4 -14
  43. package/dist/wrapper.js.map +1 -0
  44. package/package.json +24 -22
  45. package/pkg/akarisub.js +53 -0
  46. package/{dist/akarisub-worker.wasm → pkg/akarisub.wasm} +0 -0
  47. package/src/wrapper.ts +46 -0
  48. package/dist/akarisub-worker.js +0 -39
  49. package/dist/akarisub.umd.js +0 -159
  50. package/dist/ts/index.d.ts +0 -14
  51. package/dist/ts/index.d.ts.map +0 -1
  52. package/dist/ts/index.js.map +0 -1
  53. package/dist/ts/ts/akarisub.d.ts.map +0 -1
  54. package/dist/ts/ts/akarisub.js +0 -1073
  55. package/dist/ts/ts/akarisub.js.map +0 -1
  56. package/dist/ts/ts/types.d.ts.map +0 -1
  57. package/dist/ts/ts/types.js +0 -5
  58. package/dist/ts/ts/utils.d.ts.map +0 -1
  59. package/dist/ts/ts/utils.js.map +0 -1
  60. package/dist/ts/ts/webgl2-renderer.d.ts.map +0 -1
  61. package/dist/ts/ts/webgl2-renderer.js.map +0 -1
  62. package/dist/ts/ts/webgpu-renderer.d.ts.map +0 -1
  63. package/dist/ts/ts/webgpu-renderer.js.map +0 -1
  64. package/dist/ts/ts/worker.d.ts +0 -6
  65. package/dist/ts/ts/worker.js.map +0 -1
  66. package/dist/ts/wrapper.d.ts +0 -8
  67. package/dist/ts/wrapper.d.ts.map +0 -1
  68. package/dist/ts/wrapper.js +0 -9
  69. package/dist/ts/wrapper.js.map +0 -1
  70. package/src/ts/akarisub.ts +0 -1272
  71. package/src/ts/types.ts +0 -397
  72. package/src/ts/utils.ts +0 -512
  73. package/src/ts/webgl2-renderer.ts +0 -426
  74. package/src/ts/webgpu-renderer.ts +0 -691
  75. package/src/ts/worker.ts +0 -2052
  76. /package/{dist → assets}/default.woff2 +0 -0
@@ -1,9 +1,6 @@
1
1
  /// <reference types="@webgpu/types" />
2
- // Maximum images per batch
3
2
  const MAX_IMAGES_PER_BATCH = 256;
4
- // WebGPU max texture array layers
5
3
  const MAX_TEXTURE_ARRAY_LAYERS = 256;
6
- // WGSL Vertex Shader
7
4
  const VERTEX_SHADER = /* wgsl */ `
8
5
  struct VertexOutput {
9
6
  @builtin(position) position: vec4f,
@@ -24,7 +21,6 @@ struct ImageData {
24
21
  @group(0) @binding(0) var<uniform> uniforms: Uniforms;
25
22
  @group(0) @binding(1) var<storage, read> imageData: array<ImageData>;
26
23
 
27
- // Quad vertices (two triangles)
28
24
  const QUAD_POSITIONS = array<vec2f, 6>(
29
25
  vec2f(0.0, 0.0),
30
26
  vec2f(1.0, 0.0),
@@ -45,10 +41,8 @@ fn vertexMain(
45
41
  let quadPos = QUAD_POSITIONS[vertexIndex];
46
42
  let wh = data.destRect.zw;
47
43
 
48
- // Calculate pixel position
49
44
  let pixelPos = data.destRect.xy + quadPos * wh;
50
45
 
51
- // Convert to clip space (-1 to 1)
52
46
  var clipPos = (pixelPos / uniforms.resolution) * 2.0 - 1.0;
53
47
  clipPos.y = -clipPos.y;
54
48
 
@@ -60,7 +54,6 @@ fn vertexMain(
60
54
  return output;
61
55
  }
62
56
  `;
63
- // WGSL Fragment Shader
64
57
  const FRAGMENT_SHADER = /* wgsl */ `
65
58
  @group(0) @binding(2) var texArray: texture_2d_array<f32>;
66
59
 
@@ -83,26 +76,19 @@ fn fragmentMain(input: FragmentInput) -> @location(0) vec4f {
83
76
  let data = imageData[input.instanceIndex];
84
77
  let texIndex = u32(data.texInfo.z);
85
78
 
86
- // Calculate texel coordinates
87
79
  let texCoordF = floor(input.fragCoord.xy - input.destXY);
88
80
  let texCoord = vec2i(texCoordF);
89
81
 
90
- // Bounds check
91
82
  let texSizeI = vec2i(input.texSize);
92
83
  if (texCoord.x < 0 || texCoord.y < 0 || texCoord.x >= texSizeI.x || texCoord.y >= texSizeI.y) {
93
84
  discard;
94
85
  }
95
86
 
96
- // Load from texture array
97
87
  let color = textureLoad(texArray, texCoord, texIndex, 0);
98
88
 
99
- // Premultiplied alpha output
100
89
  return vec4f(color.rgb * color.a, color.a);
101
90
  }
102
91
  `;
103
- /**
104
- * Check if WebGPU is supported in the current browser.
105
- */
106
92
  export function isWebGPUSupported() {
107
93
  return typeof navigator !== 'undefined' && 'gpu' in navigator;
108
94
  }
@@ -112,30 +98,27 @@ function toUint8View(data) {
112
98
  }
113
99
  return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
114
100
  }
115
- /**
116
- * High-performance WebGPU subtitle renderer for AkariSub.
117
- */
118
101
  export class WebGPURenderer {
119
102
  device = null;
120
103
  context = null;
104
+ stageContexts = new Map();
121
105
  pipeline = null;
122
106
  bindGroupLayout = null;
123
107
  uniformBuffer = null;
124
108
  imageDataBuffer = null;
125
- // Texture array for batched rendering
126
109
  textureArray = null;
127
110
  textureArrayView = null;
128
111
  textureArraySize = 0;
129
112
  textureArrayWidth = 0;
130
113
  textureArrayHeight = 0;
131
114
  pendingDestroyTextures = [];
132
- // Pre-allocated typed arrays (reused every frame - ZERO allocations in hot path)
115
+ externalUploadCanvas = null;
116
+ externalUploadContext = null;
117
+ warnedExternalUploadFallback = false;
133
118
  imageDataArray;
134
119
  resolutionArray = new Float32Array(2);
135
- // Bind group (recreated only when texture array changes)
136
120
  bindGroup = null;
137
121
  bindGroupDirty = true;
138
- // Track canvas size to avoid redundant updates
139
122
  lastCanvasWidth = 0;
140
123
  lastCanvasHeight = 0;
141
124
  format = 'bgra8unorm';
@@ -143,7 +126,6 @@ export class WebGPURenderer {
143
126
  _initPromise = null;
144
127
  _initialized = false;
145
128
  constructor() {
146
- // Pre-allocate buffer for max images (8 floats per image: destRect + texInfo)
147
129
  this.imageDataArray = new Float32Array(MAX_IMAGES_PER_BATCH * 8);
148
130
  }
149
131
  async init() {
@@ -170,12 +152,10 @@ export class WebGPURenderer {
170
152
  size: 16,
171
153
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
172
154
  });
173
- // Large storage buffer for all image data
174
155
  this.imageDataBuffer = this.device.createBuffer({
175
156
  size: MAX_IMAGES_PER_BATCH * 8 * 4,
176
157
  usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
177
158
  });
178
- // Create initial texture array with reasonable defaults
179
159
  this.createTextureArray(256, 256, 32);
180
160
  this.bindGroupLayout = this.device.createBindGroupLayout({
181
161
  entries: [
@@ -221,7 +201,6 @@ export class WebGPURenderer {
221
201
  roundDim(n) {
222
202
  return (Math.max(n, 64) + 63) & ~63;
223
203
  }
224
- // Round layers up to a multiple of 8, clamped to the WebGPU max
225
204
  roundLayers(n) {
226
205
  return Math.min((Math.max(n, 8) + 7) & ~7, MAX_TEXTURE_ARRAY_LAYERS);
227
206
  }
@@ -242,7 +221,6 @@ export class WebGPURenderer {
242
221
  this.textureArrayHeight = h;
243
222
  this.textureArraySize = l;
244
223
  this.bindGroupDirty = true;
245
- // Clear all texture layers to transparent to prevent garbage border artifacts
246
224
  const commandEncoder = this.device.createCommandEncoder();
247
225
  for (let layer = 0; layer < l; layer++) {
248
226
  const layerView = this.textureArray.createView({
@@ -265,7 +243,6 @@ export class WebGPURenderer {
265
243
  this.device.queue.submit([commandEncoder.finish()]);
266
244
  }
267
245
  ensureTextureArray(maxWidth, maxHeight, count) {
268
- // Clamp count to max layers
269
246
  const clampedCount = Math.min(count, MAX_TEXTURE_ARRAY_LAYERS);
270
247
  if (maxWidth <= this.textureArrayWidth &&
271
248
  maxHeight <= this.textureArrayHeight &&
@@ -316,6 +293,42 @@ export class WebGPURenderer {
316
293
  this.lastCanvasWidth = width;
317
294
  this.lastCanvasHeight = height;
318
295
  }
296
+ /**
297
+ * Render a prepared full-frame subtitle snapshot into its own WebGPU canvas.
298
+ * Keeping prepared frames on the selected backend avoids switching to a 2D
299
+ * compositor during playback (and lets Chromium keep one GPU overlay stack).
300
+ */
301
+ renderBitmapToCanvas(canvas, bitmap, width, height) {
302
+ if (!this.device || !this.pipeline || width <= 0 || height <= 0)
303
+ return false;
304
+ canvas.width = width;
305
+ canvas.height = height;
306
+ let context = this.stageContexts.get(canvas);
307
+ if (!context) {
308
+ context = canvas.getContext('webgpu');
309
+ if (!context)
310
+ return false;
311
+ context.configure({
312
+ device: this.device,
313
+ format: this.format,
314
+ alphaMode: 'premultiplied'
315
+ });
316
+ this.stageContexts.set(canvas, context);
317
+ }
318
+ return this.renderBitmapsToContext([{ image: bitmap, x: 0, y: 0 }], context, width, height);
319
+ }
320
+ releaseCanvas(canvas) {
321
+ const context = this.stageContexts.get(canvas);
322
+ if (!context)
323
+ return;
324
+ try {
325
+ context.unconfigure();
326
+ }
327
+ catch {
328
+ // Device loss can invalidate a context before DOM-stage cleanup.
329
+ }
330
+ this.stageContexts.delete(canvas);
331
+ }
319
332
  updateSize(width, height) {
320
333
  if (!this.device || !this._canvas || width <= 0 || height <= 0)
321
334
  return;
@@ -329,22 +342,27 @@ export class WebGPURenderer {
329
342
  this.lastCanvasWidth = width;
330
343
  this.lastCanvasHeight = height;
331
344
  }
332
- /**
333
- * Render ImageBitmaps (async render mode)
334
- * Handles batching when image count exceeds MAX_TEXTURE_ARRAY_LAYERS
335
- */
336
- renderBitmaps(images, _canvasWidth, _canvasHeight) {
337
- if (!this.device || !this.context || !this.pipeline)
338
- return;
345
+ renderBitmaps(images, canvasWidth, canvasHeight) {
346
+ if (!this.context)
347
+ return false;
348
+ return this.renderBitmapsToContext(images, this.context, canvasWidth, canvasHeight);
349
+ }
350
+ submittedWorkDone() {
351
+ return this.device?.queue.onSubmittedWorkDone() ?? Promise.resolve();
352
+ }
353
+ renderBitmapsToContext(images, context, canvasWidth, canvasHeight) {
354
+ if (!this.device || !this.pipeline || canvasWidth <= 0 || canvasHeight <= 0)
355
+ return false;
356
+ this.resolutionArray[0] = canvasWidth;
357
+ this.resolutionArray[1] = canvasHeight;
358
+ this.device.queue.writeBuffer(this.uniformBuffer, 0, this.resolutionArray);
339
359
  const len = images.length;
340
360
  if (len === 0) {
341
- this.clear();
342
- return;
361
+ return this.clearContext(context);
343
362
  }
344
- const currentTexture = this.context.getCurrentTexture();
363
+ const currentTexture = context.getCurrentTexture();
345
364
  if (currentTexture.width === 0 || currentTexture.height === 0)
346
- return;
347
- // Single pass: find max dimensions and count valid images
365
+ return false;
348
366
  let maxW = 0, maxH = 0, validCount = 0;
349
367
  for (let i = 0; i < len; i++) {
350
368
  const { image } = images[i];
@@ -358,10 +376,8 @@ export class WebGPURenderer {
358
376
  }
359
377
  }
360
378
  if (validCount === 0) {
361
- this.clear();
362
- return;
379
+ return this.clearContext(context);
363
380
  }
364
- // Ensure texture array is large enough (capped at MAX_TEXTURE_ARRAY_LAYERS)
365
381
  const batchSize = Math.min(validCount, MAX_TEXTURE_ARRAY_LAYERS);
366
382
  this.ensureTextureArray(maxW, maxH, batchSize);
367
383
  this.updateBindGroup();
@@ -370,21 +386,19 @@ export class WebGPURenderer {
370
386
  const textureArray = this.textureArray;
371
387
  const imageDataArray = this.imageDataArray;
372
388
  const textureView = currentTexture.createView();
373
- // Process images in batches if needed
374
389
  let imageIndex = 0;
375
390
  let isFirstBatch = true;
391
+ let renderedAnyBatch = false;
376
392
  while (imageIndex < len) {
377
393
  let texIndex = 0;
378
- // Upload batch of textures
379
394
  while (imageIndex < len && texIndex < MAX_TEXTURE_ARRAY_LAYERS) {
380
395
  const img = images[imageIndex++];
381
396
  const bitmap = img.image;
382
397
  const w = bitmap.width, h = bitmap.height;
383
398
  if (w <= 0 || h <= 0)
384
399
  continue;
385
- // Copy to texture array layer
386
- queue.copyExternalImageToTexture({ source: bitmap, flipY: false }, { texture: textureArray, origin: [0, 0, texIndex], premultipliedAlpha: false }, { width: w, height: h });
387
- // Fill pre-allocated array
400
+ if (!this.uploadImageBitmap(texIndex, bitmap, w, h))
401
+ continue;
388
402
  const offset = texIndex << 3;
389
403
  imageDataArray[offset] = img.x;
390
404
  imageDataArray[offset + 1] = img.y;
@@ -398,7 +412,6 @@ export class WebGPURenderer {
398
412
  }
399
413
  if (texIndex === 0)
400
414
  continue;
401
- // Upload buffer and draw batch
402
415
  queue.writeBuffer(this.imageDataBuffer, 0, imageDataArray.buffer, 0, texIndex << 5);
403
416
  const commandEncoder = device.createCommandEncoder();
404
417
  const renderPass = commandEncoder.beginRenderPass({
@@ -417,25 +430,26 @@ export class WebGPURenderer {
417
430
  renderPass.end();
418
431
  queue.submit([commandEncoder.finish()]);
419
432
  isFirstBatch = false;
433
+ renderedAnyBatch = true;
420
434
  }
435
+ if (!renderedAnyBatch)
436
+ this.clearContext(context);
421
437
  this.cleanupPendingTextures();
438
+ return renderedAnyBatch;
422
439
  }
423
- /**
424
- * Render from raw ArrayBuffer data (non-async render mode)
425
- * Handles batching when image count exceeds MAX_TEXTURE_ARRAY_LAYERS
426
- */
427
440
  render(images, _canvasWidth, _canvasHeight) {
428
441
  if (!this.device || !this.context || !this.pipeline)
429
- return;
442
+ return false;
443
+ this.resolutionArray[0] = _canvasWidth;
444
+ this.resolutionArray[1] = _canvasHeight;
445
+ this.device.queue.writeBuffer(this.uniformBuffer, 0, this.resolutionArray);
430
446
  const len = images.length;
431
447
  if (len === 0) {
432
- this.clear();
433
- return;
448
+ return this.clear();
434
449
  }
435
450
  const currentTexture = this.context.getCurrentTexture();
436
451
  if (currentTexture.width === 0 || currentTexture.height === 0)
437
- return;
438
- // Single pass: find max dimensions and count valid images
452
+ return false;
439
453
  let maxW = 0, maxH = 0, validCount = 0;
440
454
  for (let i = 0; i < len; i++) {
441
455
  const { w, h } = images[i];
@@ -448,10 +462,8 @@ export class WebGPURenderer {
448
462
  }
449
463
  }
450
464
  if (validCount === 0) {
451
- this.clear();
452
- return;
465
+ return this.clear();
453
466
  }
454
- // Ensure texture array is large enough (capped at MAX_TEXTURE_ARRAY_LAYERS)
455
467
  const batchSize = Math.min(validCount, MAX_TEXTURE_ARRAY_LAYERS);
456
468
  this.ensureTextureArray(maxW, maxH, batchSize);
457
469
  this.updateBindGroup();
@@ -460,26 +472,29 @@ export class WebGPURenderer {
460
472
  const textureArray = this.textureArray;
461
473
  const imageDataArray = this.imageDataArray;
462
474
  const textureView = currentTexture.createView();
463
- // Process images in batches if needed
464
475
  let imageIndex = 0;
465
476
  let isFirstBatch = true;
477
+ let renderedAnyBatch = false;
466
478
  while (imageIndex < len) {
467
479
  let texIndex = 0;
468
- // Upload batch of textures
469
480
  while (imageIndex < len && texIndex < MAX_TEXTURE_ARRAY_LAYERS) {
470
481
  const img = images[imageIndex++];
471
482
  const w = img.w, h = img.h;
472
483
  if (w <= 0 || h <= 0)
473
484
  continue;
474
- // Upload texture data
475
485
  const imgData = img.image;
476
486
  if (imgData instanceof ImageBitmap) {
477
- queue.copyExternalImageToTexture({ source: imgData, flipY: false }, { texture: textureArray, origin: [0, 0, texIndex], premultipliedAlpha: false }, { width: w, height: h });
487
+ if (!this.uploadImageBitmap(texIndex, imgData, w, h))
488
+ continue;
478
489
  }
479
- else if (imgData instanceof ArrayBuffer || imgData instanceof Uint8Array || imgData instanceof Uint8ClampedArray) {
490
+ else if (imgData instanceof ArrayBuffer ||
491
+ imgData instanceof Uint8Array ||
492
+ imgData instanceof Uint8ClampedArray) {
480
493
  this.uploadTextureData(texIndex, imgData, w, h);
481
494
  }
482
- // Fill pre-allocated array
495
+ else {
496
+ continue;
497
+ }
483
498
  const offset = texIndex << 3;
484
499
  imageDataArray[offset] = img.x;
485
500
  imageDataArray[offset + 1] = img.y;
@@ -493,7 +508,6 @@ export class WebGPURenderer {
493
508
  }
494
509
  if (texIndex === 0)
495
510
  continue;
496
- // Upload buffer and draw batch
497
511
  queue.writeBuffer(this.imageDataBuffer, 0, imageDataArray.buffer, 0, texIndex << 5);
498
512
  const commandEncoder = device.createCommandEncoder();
499
513
  const renderPass = commandEncoder.beginRenderPass({
@@ -512,8 +526,53 @@ export class WebGPURenderer {
512
526
  renderPass.end();
513
527
  queue.submit([commandEncoder.finish()]);
514
528
  isFirstBatch = false;
529
+ renderedAnyBatch = true;
515
530
  }
531
+ if (!renderedAnyBatch)
532
+ this.clear();
516
533
  this.cleanupPendingTextures();
534
+ return renderedAnyBatch;
535
+ }
536
+ uploadImageBitmap(layerIndex, bitmap, width, height) {
537
+ try {
538
+ this.device.queue.copyExternalImageToTexture({ source: bitmap, flipY: false }, { texture: this.textureArray, origin: [0, 0, layerIndex], premultipliedAlpha: false }, { width, height });
539
+ return true;
540
+ }
541
+ catch (externalUploadError) {
542
+ try {
543
+ let canvas = this.externalUploadCanvas;
544
+ if (!canvas) {
545
+ canvas =
546
+ typeof OffscreenCanvas !== 'undefined'
547
+ ? new OffscreenCanvas(width, height)
548
+ : document.createElement('canvas');
549
+ this.externalUploadCanvas = canvas;
550
+ }
551
+ if (canvas.width !== width)
552
+ canvas.width = width;
553
+ if (canvas.height !== height)
554
+ canvas.height = height;
555
+ let context = this.externalUploadContext;
556
+ if (!context) {
557
+ context = canvas.getContext('2d', { alpha: true, willReadFrequently: true });
558
+ this.externalUploadContext = context;
559
+ }
560
+ if (!context)
561
+ return false;
562
+ context.clearRect(0, 0, width, height);
563
+ context.drawImage(bitmap, 0, 0);
564
+ this.uploadTextureData(layerIndex, context.getImageData(0, 0, width, height).data, width, height);
565
+ if (!this.warnedExternalUploadFallback) {
566
+ this.warnedExternalUploadFallback = true;
567
+ console.warn('[AkariSub] WebGPU external-image upload failed; using RGBA fallback.', externalUploadError);
568
+ }
569
+ return true;
570
+ }
571
+ catch (fallbackError) {
572
+ console.warn('[AkariSub] Failed to upload subtitle bitmap to WebGPU.', fallbackError);
573
+ return false;
574
+ }
575
+ }
517
576
  }
518
577
  uploadTextureData(layerIndex, rgbaBuffer, width, height) {
519
578
  this.device.queue.writeTexture({ texture: this.textureArray, origin: [0, 0, layerIndex] }, toUint8View(rgbaBuffer), { bytesPerRow: width * 4 }, { width, height });
@@ -530,11 +589,16 @@ export class WebGPURenderer {
530
589
  }
531
590
  clear() {
532
591
  if (!this.device || !this.context)
533
- return;
592
+ return false;
593
+ return this.clearContext(this.context);
594
+ }
595
+ clearContext(context) {
596
+ if (!this.device)
597
+ return false;
534
598
  try {
535
- const currentTexture = this.context.getCurrentTexture();
599
+ const currentTexture = context.getCurrentTexture();
536
600
  if (currentTexture.width === 0 || currentTexture.height === 0)
537
- return;
601
+ return false;
538
602
  const commandEncoder = this.device.createCommandEncoder();
539
603
  const renderPass = commandEncoder.beginRenderPass({
540
604
  colorAttachments: [
@@ -548,9 +612,10 @@ export class WebGPURenderer {
548
612
  });
549
613
  renderPass.end();
550
614
  this.device.queue.submit([commandEncoder.finish()]);
615
+ return true;
551
616
  }
552
617
  catch {
553
- // Ignore errors
618
+ return false;
554
619
  }
555
620
  }
556
621
  get initialized() {
@@ -558,6 +623,15 @@ export class WebGPURenderer {
558
623
  }
559
624
  destroy() {
560
625
  this.cleanupPendingTextures();
626
+ for (const context of this.stageContexts.values()) {
627
+ try {
628
+ context.unconfigure();
629
+ }
630
+ catch {
631
+ // Context can already be invalid after device loss.
632
+ }
633
+ }
634
+ this.stageContexts.clear();
561
635
  this.textureArray?.destroy();
562
636
  this.textureArray = null;
563
637
  this.textureArrayView = null;
@@ -570,6 +644,9 @@ export class WebGPURenderer {
570
644
  this.device = null;
571
645
  this.context = null;
572
646
  this._canvas = null;
647
+ this.externalUploadCanvas = null;
648
+ this.externalUploadContext = null;
649
+ this.warnedExternalUploadFallback = false;
573
650
  this._initialized = false;
574
651
  this._initPromise = null;
575
652
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/ts/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/ts/worker.ts"],"names":[],"mappings":""}