Initialize parallel segments' new images before their first use #1108
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!1108
Loading…
Reference in a new issue
No description provided.
Delete branch "parallel-segment-init-order"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What this fixes
With
RX_VK_PARALLEL, a new image's first layout change (UNDEFINED → GENERAL plus its zero clear) went into the upload command buffer of whichever segment worker created it. An earlier segment is submitted first and could already use that image (a re-upload copy or an ASTC/BC3 dispatch) while it was still UNDEFINED (VUID-vkCmdDraw-None-09600). The BC3 scratches' first transitions had the same race.Why merge
Change
gpu/vk/vk_texture.cppgpu/vk/vk_texture.hgpu/vk/vk_replay.cpptests/test_parallel_init_order.pytests/parallel_init_order_test.cpptests/run_all.pyHow it works:
Tested
python -I -B tests/test_parallel_init_order.py --cxx clang++ --headers <Vulkan-Headers include>Fails on the old code, passes now. On an RX 9070 XT, v2.0.6 plus #1069, validation limit off: 14,151× 09600 → 0, serial 0. The known 04965 shader messages are unrelated and unchanged.
Not covered
🤖 Generated with Claude Code