aboutsummaryrefslogtreecommitdiff
path: root/src/common/memory_detect.cpp
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-30 13:41:36 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-30 13:41:49 -0400
commitddd367a8152f1c37bfc972475b40afece2da31ac (patch)
tree062c859069aead4a429c2ecb2d836bab4812fb05 /src/common/memory_detect.cpp
parentea33ad1865970ee731e5f74dbcc26ca472798afe (diff)
core: end device page runs where pages are unmapped or mapped again
WalkBlock copies a run of physically contiguous device pages at once, using each page's continuity_tracker. Unmap left the counts as they were, Map without tracking did not touch them, and the pages before a changed range kept counting into it. A read starting on such a page then copied the host memory that followed the old mapping, or, starting on an unmapped page, zero-filled the whole old run, mapped pages after it included. Splatoon Raiders lost its dialogue text this way: the glyph vertex shader reads its corner table from constant buffer 1 (the program's constants, at device 0x5617d700), and the buffer cache uploaded the range from 0x5617c000, an unmapped page still counted as the start of a long run, so the table reached the GPU as zeros and every glyph sampled one empty texel. Unmap and Map now reset the counts of their pages (Map recounts them when tracking) and cut the runs of the pages before them at the range start.
Diffstat (limited to 'src/common/memory_detect.cpp')
0 files changed, 0 insertions, 0 deletions