Preserve GPU writes during parallel readback refresh #1069
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!1069
Loading…
Reference in a new issue
No description provided.
Delete branch "parallel-rb-refresh-hazards"
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=4, every frame in Hyrule Field comes out too bright on an RX 9070 XT, while serial replay has normal exposure. The cause: a parallel replay's segments share one submission, and each segment's readback refresh copied the guest page over the exposure sum the GPU had already added.Why merge
RX_VK_RB_REFRESH_EACH=1restores the old refresh for comparison.Change
gpu/vk/vk_memory.cpp: track submission hazards and filter refreshes.gpu/vk/vk_internal.h: declare recording/hazard hooks.gpu/vk/vk_texture.cpp: initialize recording scope.gpu/vk/vk_replay.cpp: register segment order.gpu/vk/vk_draw.cpp: note bare/wide writes.tests/parallel_rb_refresh_test.cpp: check exposure, untracked writes and serial control.tests/test_parallel_rb_refresh.py: extract/run production paths.tests/run_all.py: register the compiler argument.Tested
python -I -B tests/test_parallel_rb_refresh.py --cxx clang++: actual-function overwrite regressions and serial control.Not covered
No game data is included.
🤖 Generated with Claude Code