mirror of
https://github.com/tangerineturtle1/NX2navi.git
synced 2026-11-15 19:19:58 -04:00
Compare textures up to 8 MiB by content before uploading them a second time, by default.
A texture whose pages show a write is uploaded again unless a hash of its bytes says they are the same. The hash covered textures up to 64 KiB; for larger ones it was a switch left off until measured in play (tex_same_big). A run through Hyrule Field measured it (RTX 5090, about three minutes of running): without it 44,000 to 52,000 second uploads of 33 to 47 GiB of storage in four runs of six, one 1536x1536 texture 29 times within 300 frames with the same bytes each time, and 66 thousand million texels decoded on the GPU in a run; with it 214 to 592 second uploads, 24 GiB found unchanged, and 20 to 24 thousand million texels decoded, which is the first uploads. The GPU's upload work fell from 0.41 to 0.14 ms a frame, and the second uploads' 2.9 s of the submitting thread are gone for about as much hashing. tex_same_big = 0 hashes only the small ones, as before. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This commit is contained in:
@@ -426,6 +426,12 @@
|
||||
# thirty from being loaded again). A larger value keeps more textures the game may take back, which are otherwise made
|
||||
# again and show their stand-in for a frame. Read at start.
|
||||
# tex_released_mb = 1024
|
||||
# A texture whose memory the game writes again with the bytes it already held is left as it is instead of being
|
||||
# uploaded (and, for most, decoded on the graphics card) a second time: its bytes are compared by a hash taken at the
|
||||
# upload. Textures up to 64 KB always were; since 0.10.2 those up to 8 MB are too. Running through Hyrule Field the
|
||||
# game does this all the time: 52,000 second uploads in three minutes without it, 600 with it. 0: only the small ones,
|
||||
# as before (for a comparison; nothing should look different). Read at start.
|
||||
# tex_same_big = 1
|
||||
# Texture compaction (experimental). Video memory is taken in blocks (vma_block_mb), and a block goes back to the
|
||||
# driver only once everything in it is freed: after a long session the blocks hold textures scattered between holes,
|
||||
# and the game holds a gigabyte or two of video memory it does not use. 1: textures no shader sampled for ten seconds
|
||||
|
||||
Reference in New Issue
Block a user