fix(vk): publish texture staging slices before GPU reads #1672
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!1672
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/texture-staging-publication"
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?
Mapped texture staging is not required to be coherent, but the ASTC gather and CPU-converted upload paths did not flush their writes before GPU reads. A separate CPU/device-cache fixture reproduces stale submitted bytes on the noncoherent path while the coherent control passes.
This publishes each completed staging slice using its VMA allocation and allocation-relative offset/size. Slice starts also respect
nonCoherentAtomSize, so a rounded flush does not share an atom with another slice already consumed by a parallel segment. CPU publication follows conversion-worker joins; ASTC publication follows layer gathering, before decoder commands. Arena lifetime, allocation policy, upload routing, format conversions and the renderer ABI are unchanged; no additional queue wait is introduced.Validation at
62aa0079c82b5ad73f3fb0284d6a1f1c0811cf8d, based on main1a429f6a84e3dd53fd4304e85abd0356da4164ca. The fixture uses its own namespace for native Windows CRT compatibility; no assertions or compiler warnings are disabled.Limits: this is an authored cache-model reproduction, not a physical noncoherent GPU reproduction, performance measurement or campaign test. Earlier forced CPU/RGBA8 runs at
4cd6911showed missing textures; an official unmodifiedd448cccbuild reproduced missing textures under the same forced configuration. That comparison is recorded as an existing visual limitation, not a healthy CPU visual pass or pixel equivalence, and is not relabeled as current-head runtime evidence. Current-head native smoke uses default texture routing.Overlap checked by actual diff/head: #1514 owns small-arena fallback and mapless rollback, #1541 adds staging diagnostics, and #1130 partitions ASTC uploads. This change preserves those separate behaviors. No game files, generated game code, binaries, saves or private runtime artifacts are included.