(maxDrain: number)
| 459 | } |
| 460 | |
| 461 | function drainAndRenderLatestSharedWebGPU(maxDrain: number): boolean { |
| 462 | if (!consumer || !useSharedBuffer || consumer.isShutdown()) return false; |
| 463 | if (renderMode !== "webgpu" || !webgpuRenderer) return false; |
| 464 | |
| 465 | let latest: { bytes: Uint8Array; release: () => void } | null = null; |
| 466 | |
| 467 | for (let i = 0; i < maxDrain; i += 1) { |
| 468 | const borrowed = consumer.borrow(0); |
| 469 | if (!borrowed) break; |
| 470 | |
| 471 | if (latest) { |
| 472 | latest.release(); |
| 473 | } |
| 474 | latest = { bytes: borrowed.data, release: borrowed.release }; |
| 475 | } |
| 476 | |
| 477 | if (!latest) return false; |
| 478 | |
| 479 | return renderBorrowedWebGPU(latest.bytes, latest.release); |
| 480 | } |
| 481 | |
| 482 | function queueFrameFromBytes( |
| 483 | bytes: Uint8Array, |
no test coverage detected