aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/host1x/codecs/codec.cpp
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-30 04:39:44 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-30 04:39:44 -0400
commitbed068523eb066b843a60cfdd3156adafce8904a (patch)
treeac034b702817dcf8a93d772c3a36ffa3d37c30b9 /src/video_core/host1x/codecs/codec.cpp
parent920f3f6ebdbae5528a2b3aa94e7bddf5141863ef (diff)
texture_cache: re-decode only the written layers of large ASTC arrays
Any write into an image marked all of it CPU-modified, so each terrain tile Mario Kart World streams into its 8192x8192x68 ASTC arrays re-read and re-decoded the whole 1.45 GB array: a 2 GiB staging buffer and a full GPU wait each time, 15-16 GB of uploads per 600 frames. Large layered images on the accelerated ASTC path (64 MiB and up) now record the layers written since their last upload and stay tracked; a refresh reads and decodes only those layers, one dispatch per layer and level into a single-layer storage view. The texture cache's 600-frame report counts uploads from guest memory, their size and how many went by layer. Upload scratch buffers grown past 64 MiB for one huge image (341 MiB for the terrain layer pools) are freed at the next frame instead of kept for the session. Mario Kart World, 180 s: after loading, uploads drop from 15-16 GB to 0.2-0.5 GB per 600 frames, the largest from 1453 MiB to 2-15 MiB.
Diffstat (limited to 'src/video_core/host1x/codecs/codec.cpp')
0 files changed, 0 insertions, 0 deletions