Crafter.Graphics/implementations
catbot 7316e51dca fix(window): silence per-frame and setup-path Vulkan validation errors (#153)
Two distinct validation errors the native frame loop emitted, both
originating in Crafter.Graphics with no consumer-side influence.

Problem 1 — per-frame acquire-barrier access/stage mismatch. The
acquire->GENERAL barrier hardcoded dstAccessMask =
SHADER_WRITE|TRANSFER_WRITE but used the per-pass stage union as its dst
stage mask. For an all-compute frame the union narrows to COMPUTE_SHADER,
which does not support TRANSFER_WRITE, so VUID-02820 fired every frame.
Derive the access mask from the same stage union via a new
SwapchainWriterAccess() helper (mirroring SwapchainStageUnion), and apply
it to both the acquire dst and present src masks for symmetry.

Problem 2 — mid-session StartInit/FinishInit (and GetCmd/EndCmd) reuse the
shared drawCmdBuffers[currentBuffer]. With no steady-state wait-idle the
loop's last submission of that buffer may still be in flight when scene
setup runs (building map meshes / acceleration structures), so the old
code re-began (VUID-00049) and re-submitted (VUID-00071) a pending buffer,
and resources freed in the StartInit..FinishInit bracket could still be
referenced by it. Drain the queue at the start of StartInit/GetCmd before
re-recording; setup is rare, so a wait-idle is fine (FinishInit/EndCmd
already wait-idle at the end).

Tests: extend SwapchainBarrierScope with SwapchainWriterAccess coverage
(pure CPU), and add SetupCmdBufferReuse — a real-frame-loop regression
test driving a compute pass plus interleaved mid-session StartInit rounds,
asserting the validation layer stays silent. Verified both halves fail
(reproducing the exact VUIDs) when their respective fix is reverted.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 18:04:25 +00:00
..
Crafter.Graphics-Clipboard.cpp clipboard 2026-05-19 00:45:22 +02:00
Crafter.Graphics-ComputeShader.cpp perf(pipeline): shared, disk-persisted VkPipelineCache (#69) 2026-06-16 18:23:25 +00:00
Crafter.Graphics-Device.cpp perf(device): pop retired deletions off the front in O(ready) (#116) 2026-06-17 19:37:58 +00:00
Crafter.Graphics-Dom.cpp browser DOM support 2026-05-18 02:07:48 +02:00
Crafter.Graphics-Font.cpp Merge remote-tracking branch 'origin/master' into claude/issue-57 2026-06-16 17:02:48 +00:00
Crafter.Graphics-FontAtlas.cpp perf(ui): per-shelf dirty spans for tight atlas uploads (#129) 2026-06-18 13:35:54 +00:00
Crafter.Graphics-Gamepad.cpp browser DOM support 2026-05-18 02:07:48 +02:00
Crafter.Graphics-Input.cpp feat(input): wire native mouse-wheel scroll on Wayland + Win32, normalize all backends to ±1/detent (#32) 2026-06-12 15:02:28 +00:00
Crafter.Graphics-InputField.cpp perf(ui): memoize the input-field caret prefix width (#128) 2026-06-18 13:29:55 +00:00
Crafter.Graphics-Mesh-WebGPU.cpp perf(mesh): dirty-range vertex upload for deforming-mesh Refit (#119) 2026-06-17 19:50:48 +00:00
Crafter.Graphics-Mesh.cpp perf(mesh): dirty-range vertex upload for deforming-mesh Refit (#119) 2026-06-17 19:50:48 +00:00
Crafter.Graphics-PipelineRTWebGPU.cpp feat(webgpu-rt): atomic pixel accumulator + raysPerPixel for >1 ray/pixel/bounce (#30) 2026-06-09 22:45:25 +00:00
Crafter.Graphics-RenderingElement3D-WebGPU.cpp Merge pull request 'perf(rt): batch the WebGPU TLAS instance upload into one writeBuffer (#131)' (#150) from claude/issue-131 into master 2026-06-18 16:00:10 +02:00
Crafter.Graphics-RenderingElement3D.cpp perf(tlas): dirty-track the per-frame TLAS instance+metadata upload (#118) 2026-06-17 19:58:45 +00:00
Crafter.Graphics-Router.cpp browser DOM support 2026-05-18 02:07:48 +02:00
Crafter.Graphics-ShaderBindingTableWebGPU.cpp webgpu triangle 2026-05-18 18:43:30 +02:00
Crafter.Graphics-UI-Shared.cpp Merge remote-tracking branch 'origin/master' into claude/issue-123 2026-06-18 13:29:49 +00:00
Crafter.Graphics-UI-WebGPU.cpp perf(ui): reuse handles vector in WebGPU custom Dispatch (#132) 2026-06-18 13:54:09 +00:00
Crafter.Graphics-UI.cpp perf(ui): flush only the written descriptor range, not the whole heap (#61) 2026-06-16 18:29:24 +00:00
Crafter.Graphics-UIComponents.cpp perf(text): cache shaped runs in ShapeText (#52) 2026-06-16 15:40:52 +00:00
Crafter.Graphics-WebGPUComputeShader.cpp webgpu triangle 2026-05-18 18:43:30 +02:00
Crafter.Graphics-Window.cpp fix(window): silence per-frame and setup-path Vulkan validation errors (#153) 2026-06-18 18:04:25 +00:00