feat(menu): a Texture detail row (Auto, Full, Medium, Low) for cards short of video memory #2557

Open
NotRexed wants to merge 1 commit from feat/texture-detail into main
NotRexed commented 2026-11-11 23:10:04 +00:00 (Migrated from github.com)

Why. On 6 and 8 GB cards, VRAM fills over play time and the frame rate fades (#993). Hookshot already drops the big textures' top mip levels, but only on a driver budget of 4.5 GB or less at the Minimum preset. Larger cards that run short couldn't choose it.

What. A Texture detail row in Graphics › Detail (opts.texture_detail, ini texture_detail):

Value Big decoded ASTC textures
Auto (default) as before: the low-VRAM rule on ≤4.5 GB at Minimum, else the game's size
Full the game's size (only the very largest still trimmed to fit, as before)
Medium largest level left out above 1024 texels, from 8 MB (the low-VRAM rule)
Low down to 512 texels, from 8 MB

texture_detail_dims maps the row to the existing max_dim / skip_from of the trimming in create. RX_VK_TEX_MAX_DIM and RX_VK_TEX_SKIP_MB still override it. The setting applies to textures as they are made, so a restart applies it to all of them. The readme's option table lists the row.

Tests

  • tests/test_low_vram_texture_mips.py: new cases Full on a small card, Medium and Low on a large one, Auto on a large one, and Medium with the dimension override. 29 configurations pass.
  • test_menu_sections, test_preset_exempt and test_option_ids pass.
  • vk_texture.cpp and vk_menu.cpp compile.

Not yet verified in-game: VRAM and the picture at Medium and Low.

🤖 Generated with Claude Code

**Why.** On 6 and 8 GB cards, VRAM fills over play time and the frame rate fades (#993). Hookshot already drops the big textures' top mip levels, but only on a driver budget of 4.5 GB or less at the Minimum preset. Larger cards that run short couldn't choose it. **What.** A **Texture detail** row in Graphics › Detail (`opts.texture_detail`, ini `texture_detail`): | Value | Big decoded ASTC textures | |---|---| | **Auto** (default) | as before: the low-VRAM rule on ≤4.5 GB at Minimum, else the game's size | | **Full** | the game's size (only the very largest still trimmed to fit, as before) | | **Medium** | largest level left out above 1024 texels, from 8 MB (the low-VRAM rule) | | **Low** | down to 512 texels, from 8 MB | `texture_detail_dims` maps the row to the existing `max_dim` / `skip_from` of the trimming in `create`. `RX_VK_TEX_MAX_DIM` and `RX_VK_TEX_SKIP_MB` still override it. The setting applies to textures as they are made, so a restart applies it to all of them. The readme's option table lists the row. **Tests** - `tests/test_low_vram_texture_mips.py`: new cases Full on a small card, Medium and Low on a large one, Auto on a large one, and Medium with the dimension override. 29 configurations pass. - `test_menu_sections`, `test_preset_exempt` and `test_option_ids` pass. - `vk_texture.cpp` and `vk_menu.cpp` compile. **Not yet verified in-game:** VRAM and the picture at Medium and Low. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
github-sync changed title from WIP: feat(menu): a Texture detail row (Auto, Full, Medium, Low) for cards short of video memory to feat(menu): a Texture detail row (Auto, Full, Medium, Low) for cards short of video memory 2026-11-12 11:36:00 +00:00
Owner

@Waryxxful commented on GitHub · 2026-11-12 11:21 UTC · original

Setup: RX 5600 XT 6 GB (RDNA1, no mesh shaders), Adrenalin 26.10.1, Windows 11, Ryzen 5 5600X, 24 GB, 1920x1080, frame generation off. Every run starts from the same copied save and follows a scripted route through the control bridge (Kokiri Forest and Hyrule Field: settle 15 s, then 60 s standing); fps are the medians of the log's N presents lines. Run-to-run noise on main de866017 (4 runs): Kokiri 31.5-34.6 fps, Hyrule Field 32.1-34.8.

Merged on main de866017. texture_detail was set in the ini before the start, so every texture was made with it.

textures fps Kokiri / Field
main (Auto) ~1,100 MB 31.5-34.6 / 32.1-34.8
Medium 772 MB 33.1 / 32.6
Low 681 MB 33.1 / 34.4

VRAM stays at the driver's allowance either way (4,480 MB) on this 6 GB card, so the frame rate here doesn't depend on textures. The row does what it says. Screenshots at each level are available.

> [@Waryxxful](https://github.com/Waryxxful) commented on GitHub · 2026-11-12 11:21 UTC · [original](https://github.com/NotRexed/Hookshot/pull/2557#issuecomment-6822204528) **Setup:** RX 5600 XT 6 GB (RDNA1, no mesh shaders), Adrenalin 26.10.1, Windows 11, Ryzen 5 5600X, 24 GB, 1920x1080, frame generation off. Every run starts from the same copied save and follows a scripted route through the control bridge (Kokiri Forest and Hyrule Field: settle 15 s, then 60 s standing); fps are the medians of the log's `N presents` lines. Run-to-run noise on main `de866017` (4 runs): Kokiri 31.5-34.6 fps, Hyrule Field 32.1-34.8. Merged on main `de866017`. `texture_detail` was set in the ini before the start, so every texture was made with it. | | textures | fps Kokiri / Field | |---|---|---| | main (Auto) | ~1,100 MB | 31.5-34.6 / 32.1-34.8 | | Medium | 772 MB | 33.1 / 32.6 | | Low | 681 MB | 33.1 / 34.4 | VRAM stays at the driver's allowance either way (4,480 MB) on this 6 GB card, so the frame rate here doesn't depend on textures. The row does what it says. Screenshots at each level are available. <!-- github-sync:c:6822204528 -->
Commenting is not possible because the repository is archived.
No description provided.