Repository navigation
fix(vk): publish texture staging slices before GPU reads - #1672
Merged
NotRexed merged 2 commits intoNov 10, 2026
Merged
Conversation
added 2 commits
November 10, 2026 10:02
Flush CPU-converted and ASTC upload slices through allocation-relative ranges and keep concurrent slices on distinct noncoherent atoms. Assisted-by: GPT-6 (OpenAI)
Keep source-extracted locals such as y0 inside the fixture namespace so the native Windows Clang runner does not collide with CRT Bessel functions. Assisted-by: GPT-6 (OpenAI)
ghost
force-pushed
the
fix/texture-staging-publication
branch
from
November 10, 2026 13:02
6b0916a to
62aa007
Compare
This was referenced Nov 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
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.