Add TrCommandBufferManager for renderer-side WebGPU command encoding #406
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements a thread-safe manager that accepts
TrCommandBufferBaseinstances from the content process, dispatches them by type toGPUDeviceBase, and stores encoded WebGPU command buffers for flexible host renderpass submission.Implementation
Core Components (
src/renderer/command_buffer_manager.{hpp,cpp}- 551 lines)TrCommandBufferManagerclass with mutex-protected storageEncodedPassstructure storing command buffers + XR routing metadata (sessionId/stereoId/viewIndex)CommandTypeshelpers (framebuffer/resource/generic paths)Unit Tests (
tests/command_buffer_manager.cpp- 109 lines)Documentation (643 lines)
Usage
Current State
API complete - all public methods implemented with error handling
Encoding deferred - stubs return nullptr with detailed TODO comments and WebGPU spec references
JSAR's WebGPU layer incomplete - missing copy operations, bind groups, texture APIs documented in
docs/webgpu-implementation-status.mdEach encoding path (
encodeFramebufferCommand,encodeResourceCommand,encodeGenericCommand) contains:Integration Notes
pass.renderingInfoto determine target viewclearEncodedPasses()after GPU submission completesOriginal prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.