Skip to content

fix: keep 8 GB cards inside the VRAM Windows allows - #887

Closed
yassine-milal wants to merge 1 commit into
NotRexed:mainfrom
yassine-milal:fix/vram-8gb-cards
Closed

yassine-milal wants to merge 1 commit into
NotRexed:mainfrom
yassine-milal:fix/vram-8gb-cards

Conversation

@yassine-milal

Copy link
Copy Markdown

On an 8 GB card under Windows the driver allows 6.6-6.9 GB, because a desktop and a browser hold the rest. Hookshot went
over that in Kakariko, Hyrule Field and Death Mountain Trail, and VRAM paged out: 2-9 fps with every CPU thread idle.

  • Large ASTC textures were all re-encoded as BC3 only below 6 GB allowed; now below 7 GB. Measured in Kakariko:
    • decoded ASTC 2071 MB, VRAM over the limit;
    • with BC3: 1475 MB, 6.37 GB used of 6.80 GB allowed, median 32 fps.
    • RX_VK_ASTC_BC_ALL still overrides.
  • Image pool blocks default to 32 MB instead of 128 MB; RX_VK_IMAGE_BLOCK_MB still sets it. With 128 MB, 1.1-2.2 GB
    sat "free in the blocks"; with 32 MB, 0.8 GB in the same places (1.3 GB once in Hyrule Field).
  • Possibly related, not confirmed: with BC3 on, the soil looked darker in Kakariko. Worth a look by someone who knows
    the BC3 encoder.

Testing. Played on a Quadro P4000 (Pascal, 8 GB, no mesh shaders), NVIDIA 582.16, Xeon W-2133, 32 GB, Windows 11, with Hookshot v2.0.2 and the same change. On main this branch compiles (RX_VK_ONLY=1 nx2/build.py --standalone, llvm-mingw) and tests/run_all.py gives the same result as untouched main on this PC: 98 passed, 12 skipped, 1 failed (tests/test_fps_overlay_order.py, which fails on main here too with llvm-mingw's clang). The game itself was not rebuilt on main.

🤖 Generated with Claude Code

On an 8 GB card under Windows the driver allows 6.6-6.9 GB (a desktop and a browser hold the rest). Hookshot went over
that in Kakariko, Hyrule Field and Death Mountain Trail and VRAM paged out: 2-9 fps with every CPU thread idle.
Measured on a Quadro P4000 (v2.0.2):

- Decoded ASTC held ~2 GB (2071 MB in Kakariko). The re-encode of all large ASTC as BC3 only switched on below
  6 GB allowed; now below 7 GB. With it: 1475 MB decoded, 6.37 GB used of 6.80 allowed, median 32 fps.
  RX_VK_ASTC_BC_ALL=0/1 still overrides.
- Images pooled in 128 MB blocks kept 1.1-2.2 GB "free in the blocks" (a block goes back only when every image in it
  is gone). The default is now 32 MB (RX_VK_IMAGE_BLOCK_MB still sets it): 0.8 GB in the same places, ~110 blocks
  for 3.5 GB of images.

Assisted-by: Claude Code (Claude Opus 5.5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@NotRexed

NotRexed commented Nov 9, 2026

Copy link
Copy Markdown
Owner

Thank you! #963 changes the same ASTC-as-BC3 threshold for 8 GB cards (with a policy header and test), and it's queued for an in-game test, so I'm closing this one to avoid two versions of the same line. The 32 MB image-pool block change is independent and looks worthwhile: please send it as its own PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants