Idea: sparse mirrors cost 1-4 ms of GPU a frame on an RX 5600 XT; whole mirrors are faster until their budget fills (runs wanted on other 6 GB cards) #585

Open
opened 2026-11-14 21:07:50 +00:00 by waryxxful · 2 comments

The idea

On a 6 GB AMD card without mesh shaders the default, sparse mirrors, is slower than RX_VK_MIRROR_SPARSE=0 in most areas, but whole mirrors run into the 1,468 MB mirror budget and then lose a whole area. Neither is right for this card as it stands. I am looking for whoever knows the sparse mirrors to say where their extra GPU time could come from on this driver, and for the same comparison from other 6 GB cards.

The comparison. RX 5600 XT 6 GB (RDNA1, the compute fallback), Adrenalin 26.10.1, Ryzen 5 5600X, 24 GB, Windows 11. Main cf605c85 with ea6dc5f5 (the mirror retry of #288) cherry-picked, the same renderer on both sides. Render resolution 50% of 1920x1080. Twelve areas by teleport, 25 s each after 10 s; six runs interleaved: sparse, whole, sparse, whole standing still, then whole and sparse walking. fps, sparse then whole:

Area Standing, pair 1 Standing, pair 2 Walking
Kokiri Forest 46.7 / 50.4 45.4 / 30.5 39.9 / 47.6
Hyrule Field 46.3 / 48.0 44.5 / 44.6 39.8 / 44.1
Kakariko 35.2 / 25.4 30.0 / 27.8 29.3 / 47.2
Market 30.4 / 22.6 26.1 / 21.6 21.6 / 30.4
Hyrule Castle 29.9 / 32.6 26.8 / 30.5 38.9 / 41.0
Lost Woods 43.2 / 44.9 38.2 / 40.8 40.5 / 44.8
Graveyard 32.9 / 34.2 30.8 / 33.0 32.5 / 34.8
Death Mountain Crater 42.2 / 42.8 38.4 / 42.5 39.2 / 39.9
Zora's River 35.0 / 39.2 31.5 / 36.4 44.2 / 40.4
Zora's Domain 41.3 / 41.5 39.2 / 43.7 27.6 / 36.3
Zora's Fountain 32.0 / 36.4 29.4 / 31.4 32.3 / 27.2
Desert Colossus 26.6 / 30.1 23.9 / 29.2 39.4 / 41.7
  • Whole mirrors are ahead in 10, 9 and 10 of the 12 areas. Where both sides are in the same mode the GPU's frame is 1-4 ms shorter with them: Zora's Fountain 26.7 against 22.6 ms, Desert Colossus 31.8 against 27.8 ms, Zora's River 22.3 against 20.0 ms (standing, pair 1).
  • Where whole mirrors lose, they lose an area outright: Kakariko and the Market standing, Kokiri Forest once. Those are the runs where the mirrors reach the budget: 1,264-1,300 MB at the median and 1,468 MB at the peak, against 735-795 MB and 804-1,041 MB with sparse mirrors. The log's readback lines with a wait over 3 ms are 4-15 of about 100 with whole mirrors and 0-2 with sparse.

The same cliff in play. A 56-minute session on main 9c9d69ed with the same commit and RX_VK_MIRROR_SPARSE=0 (Goron City, Death Mountain Trail, Dodongo's Cavern, the trail again, Kakariko) ran at 48-67 fps for 52 minutes. The first refused pool came on leaving the cavern, and on entering Kakariko five more, 296 MB between them:

vk: pool 0x1177000000 (108 MB, its mirror 108 MB) stays in system memory: the mirrors have 1468 MB of 1468
vk: pool 0x7fd5800000 (120 MB, its mirror 120 MB) stays in system memory: the mirrors have 1460 MB of 1468
vk: 1840 mirrors given back (13692 MB in all); 1464 MB of mirrors now, 120 MB of them idle and kept for what the GPU wrote there alone
vk: VRAM: 4771 MB used of 4771 MB allowed (1269 MB of it free in the blocks); textures 1879 MB (budget 634 MB), 1268 textures (at the driver's limit, room in the blocks: not squeezed)
vk: readbacks of GPU results: 666 of 3000 waited for their write-back, 4.49 ms each; 0 looked at the stopped queues first, 424 waited for their submission's last part (guest memory read in place after theirs)

Kakariko then swung between 20 and 47 fps, under 30 for 1.5 of its 3.5 minutes.

The questions:

  1. What do sparse mirrors add to the GPU's frame that whole ones do not, on AMD's Windows driver? If there is a log line or a switch that would show it, I can run it on this card.
  2. With whole mirrors the budget is a quarter of the card's VRAM (#237). The textures above hold 1.9 GB against a budget of 0.6 GB while 296 MB of the area's pools get no mirror. Should the mirrors of the pools being bound come before textures over their budget?

Who can help without writing code: anyone with a 6 GB card, on a nightly from nightly-127 on (sparse mirrors came in with cf605c85) or a build of main. Add RX_VK_MIRROR_SPARSE=0 to longshot_env.txt in the game's folder, walk the same stretch of Hyrule Field or Zora's River with and without the line, and comment with the card, the driver, the fps and GPU time of each side (the FPS counter's Breakdown level), and whether the log has stays in system memory lines with the line set.

Anything else

  • These runs are on cf605c85 and one run a pair: later runs on this card all had RX_VK_MIRROR_SPARSE=0, so there is no sparse side on 9c9d69ed yet. I will add one here when the PC is free.
  • Sparse mirrors were measured as a gain on an RTX 4070 SUPER held to a 6 GB allowance (https://github.com/NotRexed/Hookshot/pull/2794, docs/tested/2026-11-12-sparse-mirror-gumminaomi-run01.md), so this may be particular to this driver or to the compute fallback.
  • Texture memory work that may bear on question 2: #518, #519, #521. I can run any of them on this card if their authors want a 6 GB AMD run.
### The idea On a 6 GB AMD card without mesh shaders the default, sparse mirrors, is slower than `RX_VK_MIRROR_SPARSE=0` in most areas, but whole mirrors run into the 1,468 MB mirror budget and then lose a whole area. Neither is right for this card as it stands. I am looking for whoever knows the sparse mirrors to say where their extra GPU time could come from on this driver, and for the same comparison from other 6 GB cards. **The comparison.** RX 5600 XT 6 GB (RDNA1, the compute fallback), Adrenalin 26.10.1, Ryzen 5 5600X, 24 GB, Windows 11. Main cf605c85 with ea6dc5f5 (the mirror retry of https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/288) cherry-picked, the same renderer on both sides. Render resolution 50% of 1920x1080. Twelve areas by teleport, 25 s each after 10 s; six runs interleaved: sparse, whole, sparse, whole standing still, then whole and sparse walking. fps, sparse then whole: | Area | Standing, pair 1 | Standing, pair 2 | Walking | |---|---|---|---| | Kokiri Forest | 46.7 / 50.4 | 45.4 / 30.5 | 39.9 / 47.6 | | Hyrule Field | 46.3 / 48.0 | 44.5 / 44.6 | 39.8 / 44.1 | | Kakariko | 35.2 / 25.4 | 30.0 / 27.8 | 29.3 / 47.2 | | Market | 30.4 / 22.6 | 26.1 / 21.6 | 21.6 / 30.4 | | Hyrule Castle | 29.9 / 32.6 | 26.8 / 30.5 | 38.9 / 41.0 | | Lost Woods | 43.2 / 44.9 | 38.2 / 40.8 | 40.5 / 44.8 | | Graveyard | 32.9 / 34.2 | 30.8 / 33.0 | 32.5 / 34.8 | | Death Mountain Crater | 42.2 / 42.8 | 38.4 / 42.5 | 39.2 / 39.9 | | Zora's River | 35.0 / 39.2 | 31.5 / 36.4 | 44.2 / 40.4 | | Zora's Domain | 41.3 / 41.5 | 39.2 / 43.7 | 27.6 / 36.3 | | Zora's Fountain | 32.0 / 36.4 | 29.4 / 31.4 | 32.3 / 27.2 | | Desert Colossus | 26.6 / 30.1 | 23.9 / 29.2 | 39.4 / 41.7 | - Whole mirrors are ahead in 10, 9 and 10 of the 12 areas. Where both sides are in the same mode the GPU's frame is 1-4 ms shorter with them: Zora's Fountain 26.7 against 22.6 ms, Desert Colossus 31.8 against 27.8 ms, Zora's River 22.3 against 20.0 ms (standing, pair 1). - Where whole mirrors lose, they lose an area outright: Kakariko and the Market standing, Kokiri Forest once. Those are the runs where the mirrors reach the budget: 1,264-1,300 MB at the median and 1,468 MB at the peak, against 735-795 MB and 804-1,041 MB with sparse mirrors. The log's readback lines with a wait over 3 ms are 4-15 of about 100 with whole mirrors and 0-2 with sparse. **The same cliff in play.** A 56-minute session on main 9c9d69ed with the same commit and `RX_VK_MIRROR_SPARSE=0` (Goron City, Death Mountain Trail, Dodongo's Cavern, the trail again, Kakariko) ran at 48-67 fps for 52 minutes. The first refused pool came on leaving the cavern, and on entering Kakariko five more, 296 MB between them: ``` vk: pool 0x1177000000 (108 MB, its mirror 108 MB) stays in system memory: the mirrors have 1468 MB of 1468 vk: pool 0x7fd5800000 (120 MB, its mirror 120 MB) stays in system memory: the mirrors have 1460 MB of 1468 vk: 1840 mirrors given back (13692 MB in all); 1464 MB of mirrors now, 120 MB of them idle and kept for what the GPU wrote there alone vk: VRAM: 4771 MB used of 4771 MB allowed (1269 MB of it free in the blocks); textures 1879 MB (budget 634 MB), 1268 textures (at the driver's limit, room in the blocks: not squeezed) vk: readbacks of GPU results: 666 of 3000 waited for their write-back, 4.49 ms each; 0 looked at the stopped queues first, 424 waited for their submission's last part (guest memory read in place after theirs) ``` Kakariko then swung between 20 and 47 fps, under 30 for 1.5 of its 3.5 minutes. **The questions:** 1. What do sparse mirrors add to the GPU's frame that whole ones do not, on AMD's Windows driver? If there is a log line or a switch that would show it, I can run it on this card. 2. With whole mirrors the budget is a quarter of the card's VRAM (https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/237). The textures above hold 1.9 GB against a budget of 0.6 GB while 296 MB of the area's pools get no mirror. Should the mirrors of the pools being bound come before textures over their budget? **Who can help without writing code:** anyone with a 6 GB card, on a nightly from `nightly-127` on (sparse mirrors came in with cf605c85) or a build of main. Add `RX_VK_MIRROR_SPARSE=0` to `longshot_env.txt` in the game's folder, walk the same stretch of Hyrule Field or Zora's River with and without the line, and comment with the card, the driver, the fps and GPU time of each side (the FPS counter's Breakdown level), and whether the log has `stays in system memory` lines with the line set. ### Anything else - These runs are on cf605c85 and one run a pair: later runs on this card all had `RX_VK_MIRROR_SPARSE=0`, so there is no sparse side on 9c9d69ed yet. I will add one here when the PC is free. - Sparse mirrors were measured as a gain on an RTX 4070 SUPER held to a 6 GB allowance (https://github.com/NotRexed/Hookshot/pull/2794, `docs/tested/2026-11-12-sparse-mirror-gumminaomi-run01.md`), so this may be particular to this driver or to the compute fallback. - Texture memory work that may bear on question 2: https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/518, https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/519, https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/521. I can run any of them on this card if their authors want a 6 GB AMD run.
Contributor

A 10 GB NVIDIA data point for question 1. On this card sparse and whole mirrors cost the same GPU time. Whole mirrors hold about 0.4 GB more, and with this much VRAM they never reach their budget.

Setup: RTX 3080 10 GB, NVIDIA 621.14, i9-12900K, 64 GB, Windows 11. One scripted route in a window that never took focus, with the input kept out. It went through Hyrule Field, Zora's River, Kakariko and Kokiri Forest, then 6 minutes on Death Mountain Trail. Runs were about 26 minutes each, after a warm-up, interleaved sparse / whole / sparse / whole. Whole = RX_VK_MIRROR_SPARSE=0. Medians over the whole run:

Build, settings Run GPU time a frame Mirrors, median / peak VRAM used, median / peak fps (Death Mountain Trail) Presents over 40 ms
main dc390e59 + DLSS, 1920x1080 (DLSS 1120x630, preset K), the player's nightly options sparse 1 7.1 ms 1179 / 1295 MB 7662 / 9138 MB 37.8 2.96%
whole 1 6.8 ms 1564 / 2012 MB 7480 / 9152 MB 37.9 2.73%
sparse 2 6.9 ms 1110 / 1301 MB 7556 / 9102 MB 37.9 2.77%
whole 2 7.1 ms 1492 / 1836 MB 7500 / 8924 MB 37.7 2.72%
main 5e072fc8, 2560x1440, no upscaler sparse 7.8 ms 1126 / 1335 MB 7457 / 9139 MB 60.0 (capped) 0.57%
whole 7.5 ms 1550 / 1836 MB 7297 / 9604 MB 60.0 (capped) 0.39%
  • GPU time: the two modes are within 0.3 ms of each other, and the order changes from pair to pair. This card shows nothing like the 1-4 ms you see on the RX 5600 XT, which points to AMD's driver or the compute fallback rather than the sparse mirrors themselves. That agrees with the earlier RTX 4070 SUPER result.
  • fps: in the DLSS pair, every area is held near 38 fps by something other than the GPU (7 ms a frame), so fps can't tell the two modes apart there. The 1440p pair sits at its 60 cap. GPU time is the comparison that counts in both pairs.
  • Memory: whole mirrors are 0.38-0.45 GB bigger at the median and up to 0.7 GB at the peak. No stays in system memory refusals on either side. The process's peak working set is a little lower with whole mirrors: 12.0 / 11.8 GB against 12.7 / 12.3 GB sparse.
  • Readbacks: none waited measurably with sparse mirrors (0.00 ms each). One whole run had 149 of 3000 wait 1.21 ms each; the other whole run had none.

Not covered: a 6 GB card, AMD, the compute fallback, and a fixed-scene standing comparison like yours. The 1440p pair is one run each way.

A 10 GB NVIDIA data point for question 1. On this card sparse and whole mirrors cost the **same GPU time**. Whole mirrors hold about 0.4 GB more, and with this much VRAM they never reach their budget. **Setup:** RTX 3080 10 GB, NVIDIA 621.14, i9-12900K, 64 GB, Windows 11. One scripted route in a window that never took focus, with the input kept out. It went through Hyrule Field, Zora's River, Kakariko and Kokiri Forest, then 6 minutes on Death Mountain Trail. Runs were about 26 minutes each, after a warm-up, interleaved sparse / whole / sparse / whole. Whole = `RX_VK_MIRROR_SPARSE=0`. Medians over the whole run: | Build, settings | Run | GPU time a frame | Mirrors, median / peak | VRAM used, median / peak | fps (Death Mountain Trail) | Presents over 40 ms | |---|---|---|---|---|---|---| | main dc390e59 + DLSS, 1920x1080 (DLSS 1120x630, preset K), the player's nightly options | sparse 1 | 7.1 ms | 1179 / 1295 MB | 7662 / 9138 MB | 37.8 | 2.96% | | | whole 1 | 6.8 ms | 1564 / 2012 MB | 7480 / 9152 MB | 37.9 | 2.73% | | | sparse 2 | 6.9 ms | 1110 / 1301 MB | 7556 / 9102 MB | 37.9 | 2.77% | | | whole 2 | 7.1 ms | 1492 / 1836 MB | 7500 / 8924 MB | 37.7 | 2.72% | | main 5e072fc8, 2560x1440, no upscaler | sparse | 7.8 ms | 1126 / 1335 MB | 7457 / 9139 MB | 60.0 (capped) | 0.57% | | | whole | 7.5 ms | 1550 / 1836 MB | 7297 / 9604 MB | 60.0 (capped) | 0.39% | - **GPU time:** the two modes are within 0.3 ms of each other, and the order changes from pair to pair. This card shows nothing like the 1-4 ms you see on the RX 5600 XT, which points to AMD's driver or the compute fallback rather than the sparse mirrors themselves. That agrees with the earlier RTX 4070 SUPER result. - **fps:** in the DLSS pair, every area is held near 38 fps by something other than the GPU (7 ms a frame), so fps can't tell the two modes apart there. The 1440p pair sits at its 60 cap. GPU time is the comparison that counts in both pairs. - **Memory:** whole mirrors are 0.38-0.45 GB bigger at the median and up to 0.7 GB at the peak. No `stays in system memory` refusals on either side. The process's peak working set is a little lower with whole mirrors: 12.0 / 11.8 GB against 12.7 / 12.3 GB sparse. - **Readbacks:** none waited measurably with sparse mirrors (0.00 ms each). One whole run had 149 of 3000 wait 1.21 ms each; the other whole run had none. Not covered: a 6 GB card, AMD, the compute fallback, and a fixed-scene standing comparison like yours. The 1440p pair is one run each way.
Author

The run on current main that I owed. It changes the picture: on this card the sparse mirrors' extra GPU time is there only while every program is loaded before the title, which is what a GPU on the compute fallback gets by default. With RX_VK_LOAD=create sparse and whole mirrors run the same, and sparse ones refuse no pool.

Setup. Main 6c9edffe with ea6dc5f5 (the mirror retry of #288) cherry-picked, the renderer built with the committed play profile. RX 5600 XT 6 GB, Adrenalin 26.10.1, Ryzen 5 5600X (12 logical processors, so Threaded rendering's Auto is on), 24 GB, Windows 11; render resolution 50% of 1920x1080; RX_VK_WB_MAX_KB=1024, RX_VK_NO_PREDICT=1, RX_VK_NO_WARM=1 on every side. Five areas by teleport, standing, 25 s each after 10 s; the sides interleaved, three rounds (two for the last column). fps, then the GPU's frame in ms; one cell a run:

Area (draws) Whole, loaded at start (this GPU's default) Whole, RX_VK_LOAD=create Sparse, RX_VK_LOAD=create Sparse, loaded at start (main's defaults here)
Kokiri Forest (800) 58.4 / 60.9 / 60.1; 12.8 / 12.3 / 12.5 60.8 / 60.7 / 61.2; 12.2 / 12.0 / 12.0 59.4 / 58.2 / 61.2; 12.2 / 12.4 / 12.1 50.0 / 52.2; 16.0 / 14.9
Hyrule Field (1,230) 62.6 / 56.7 / 63.0; 12.5 / 12.8 / 12.3 56.0 / 57.5 / 59.2; 12.8 / 12.4 / 12.2 58.1 / 54.4 / 57.6; 12.1 / 13.0 / 12.6 51.8 / 53.5; 14.8 / 13.7
Market (2,710) 36.7 / 36.6 / 31.2; 17.4 / 18.4 / 19.3 24.4 / 35.8 / 38.8; 22.2 / 17.7 / 17.2 40.1 / 39.2 / 33.3; 15.8 / 16.6 / 20.1 32.9 / 30.5; 21.0 / 23.1
Hyrule Castle (2,020) 34.5 / 33.2 / 38.1; 22.5 / 23.4 / 21.0 38.7 / 38.5 / 41.5; 18.7 / 18.3 / 18.1 40.4 / 36.4 / 35.8; 18.4 / 21.2 / 22.1 29.5 / 28.6; 27.2 / 27.2
Desert Colossus (1,215) 29.0 / 29.2 / 30.8; 29.5 / 29.4 / 26.9 32.4 / 31.7 / 34.1; 25.8 / 25.9 / 25.8 32.2 / 32.2 / 33.1; 26.1 / 26.0 / 26.0 27.3 / 24.8; 31.6 / 34.2
Whole, start Whole, create Sparse, create Sparse, start
The game's private memory 23.4-24.9 GB 18.2-19.9 GB 18.2-19.7 GB 24.0-25.5 GB
commit limit near lines a run 13-16 0 0 15-18
stays in system memory lines a run 8 8 0 0
  • Sparse mirrors with the default load are still the slowest side on 6c9edffe, by 2-5 ms of GPU a frame, as on cf605c85.
  • With RX_VK_LOAD=create they are level with whole mirrors in every area (the Market swings by run on both), 5 GB lighter than either side loaded at start, and no pool is refused.
  • The loads themselves were cheap here: program loads at create (play): 6294 queued, 6294 loaded (median 1.85 ms, 99th percentile 13.88 ms, worst 50.28 ms, 18768 ms and 1385.6 MB read in all), and 0.0-0.1 draws a frame left out. gpu/vk/load_default.h keeps start for the compute fallback from one RX 580 where first uses waited 0.7-1.3 s; this is a second card on the fallback, and it does not show that. That question has its own issue now: #805.
  • One run of the default side did not finish. A 12-area run with sparse mirrors and the default load stayed at the load into Hyrule Field for 18 minutes (5 draws a frame, the bridge's teleports timing out) until I closed it, with commit limit near: 2507 MB of commit left (reserve 2560 MB); the textures' budget down to 0 MB of their 304 MB just before. The PC has 24.5 GB of RAM and a 15.6 GB page file (Windows-managed), and the game's private memory was at 26.2 GB.

So for question 1 my reading is now that the cost is not in the sparse mirrors themselves but in how little memory is left around them when every program is loaded at the start: that agrees with the RTX 3080 above, which has the room. I have not looked for which memory it is (the pipelines' 1.2-1.4 GB of VRAM, or the commit).

Not covered: a long session with RX_VK_LOAD=create (these are five-minute runs, so I do not know yet whether whole mirrors still reach their budget after an hour, as in the play session above), Kakariko (the draw count there changed between runs standing still, 680 to 2,170, so it is left out), and Linux.

The run on current main that I owed. It changes the picture: on this card the sparse mirrors' extra GPU time is there only while every program is loaded before the title, which is what a GPU on the compute fallback gets by default. With `RX_VK_LOAD=create` sparse and whole mirrors run the same, and sparse ones refuse no pool. **Setup.** Main 6c9edffe with ea6dc5f5 (the mirror retry of https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/288) cherry-picked, the renderer built with the committed play profile. RX 5600 XT 6 GB, Adrenalin 26.10.1, Ryzen 5 5600X (12 logical processors, so Threaded rendering's Auto is on), 24 GB, Windows 11; render resolution 50% of 1920x1080; `RX_VK_WB_MAX_KB=1024`, `RX_VK_NO_PREDICT=1`, `RX_VK_NO_WARM=1` on every side. Five areas by teleport, standing, 25 s each after 10 s; the sides interleaved, three rounds (two for the last column). fps, then the GPU's frame in ms; one cell a run: | Area (draws) | Whole, loaded at start (this GPU's default) | Whole, `RX_VK_LOAD=create` | Sparse, `RX_VK_LOAD=create` | Sparse, loaded at start (main's defaults here) | |---|---|---|---|---| | Kokiri Forest (800) | 58.4 / 60.9 / 60.1; 12.8 / 12.3 / 12.5 | 60.8 / 60.7 / 61.2; 12.2 / 12.0 / 12.0 | 59.4 / 58.2 / 61.2; 12.2 / 12.4 / 12.1 | 50.0 / 52.2; 16.0 / 14.9 | | Hyrule Field (1,230) | 62.6 / 56.7 / 63.0; 12.5 / 12.8 / 12.3 | 56.0 / 57.5 / 59.2; 12.8 / 12.4 / 12.2 | 58.1 / 54.4 / 57.6; 12.1 / 13.0 / 12.6 | 51.8 / 53.5; 14.8 / 13.7 | | Market (2,710) | 36.7 / 36.6 / 31.2; 17.4 / 18.4 / 19.3 | 24.4 / 35.8 / 38.8; 22.2 / 17.7 / 17.2 | 40.1 / 39.2 / 33.3; 15.8 / 16.6 / 20.1 | 32.9 / 30.5; 21.0 / 23.1 | | Hyrule Castle (2,020) | 34.5 / 33.2 / 38.1; 22.5 / 23.4 / 21.0 | 38.7 / 38.5 / 41.5; 18.7 / 18.3 / 18.1 | 40.4 / 36.4 / 35.8; 18.4 / 21.2 / 22.1 | 29.5 / 28.6; 27.2 / 27.2 | | Desert Colossus (1,215) | 29.0 / 29.2 / 30.8; 29.5 / 29.4 / 26.9 | 32.4 / 31.7 / 34.1; 25.8 / 25.9 / 25.8 | 32.2 / 32.2 / 33.1; 26.1 / 26.0 / 26.0 | 27.3 / 24.8; 31.6 / 34.2 | | | Whole, start | Whole, create | Sparse, create | Sparse, start | |---|---|---|---|---| | The game's private memory | 23.4-24.9 GB | 18.2-19.9 GB | 18.2-19.7 GB | 24.0-25.5 GB | | `commit limit near` lines a run | 13-16 | 0 | 0 | 15-18 | | `stays in system memory` lines a run | 8 | 8 | 0 | 0 | - Sparse mirrors with the default load are still the slowest side on 6c9edffe, by 2-5 ms of GPU a frame, as on cf605c85. - With `RX_VK_LOAD=create` they are level with whole mirrors in every area (the Market swings by run on both), 5 GB lighter than either side loaded at start, and no pool is refused. - The loads themselves were cheap here: `program loads at create (play): 6294 queued, 6294 loaded (median 1.85 ms, 99th percentile 13.88 ms, worst 50.28 ms, 18768 ms and 1385.6 MB read in all)`, and 0.0-0.1 draws a frame left out. `gpu/vk/load_default.h` keeps `start` for the compute fallback from one RX 580 where first uses waited 0.7-1.3 s; this is a second card on the fallback, and it does not show that. That question has its own issue now: https://git.magicbean.dev/MagicBeanDev/Longshot/issues/805. - One run of the default side did not finish. A 12-area run with sparse mirrors and the default load stayed at the load into Hyrule Field for 18 minutes (5 draws a frame, the bridge's teleports timing out) until I closed it, with `commit limit near: 2507 MB of commit left (reserve 2560 MB); the textures' budget down to 0 MB of their 304 MB` just before. The PC has 24.5 GB of RAM and a 15.6 GB page file (Windows-managed), and the game's private memory was at 26.2 GB. So for question 1 my reading is now that the cost is not in the sparse mirrors themselves but in how little memory is left around them when every program is loaded at the start: that agrees with the RTX 3080 above, which has the room. I have not looked for which memory it is (the pipelines' 1.2-1.4 GB of VRAM, or the commit). Not covered: a long session with `RX_VK_LOAD=create` (these are five-minute runs, so I do not know yet whether whole mirrors still reach their budget after an hour, as in the play session above), Kakariko (the draw count there changed between runs standing still, 680 to 2,170, so it is left out), and Linux.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot#585
No description provided.