feat(menu): a Mesh shaders row (Automatic, Native, Compute) #1971

Merged
NotRexed merged 3 commits from feat/mesh-shader-mode into main 2026-11-11 00:44:23 +00:00
NotRexed commented 2026-11-10 22:13:53 +00:00 (Migrated from github.com)

From the #1001 request (three mesh shader modes, Automatic, Native and Compute, for GPUs without native mesh shaders).

What exists already. The compute fallback for GPUs without mesh shaders (issue 640) already runs automatically: an RX 5500 XT or a GTX 10xx gets it with no setting. The Navi 22 cards (issue 996) also use it for their task + mesh draws. Choosing between the paths was only possible through test switches:

  • RX_VK_FORCE_MESH_FALLBACK=1
  • RX_VK_TASK_MESH_FALLBACK

This PR adds a Mesh shaders row to the Graphics tab, after Robust buffers. It's read when the device is made (mesh_shaders= in hookshot_options.ini) and applies after a restart.

Value What runs
Automatic (default) as before
Native the card's own mesh shaders for every draw, Navi 22's task + mesh draws included; a GPU without mesh shaders still uses the compute path
Compute the compute path on every GPU, for a card that crashes or leaves objects out with native mesh shaders (the AMD reports in #996)

RX_VK_FORCE_MESH_FALLBACK=1 still forces Compute over the row, and RX_VK_TASK_MESH_FALLBACK still decides the task + mesh draws. The log has vk: mesh shaders row: <choice> (<what runs>).

The menu now has 11 restart rows, within menu_restart.h's limit of 16.

Not yet checked:

  • Locally, only the game-free menu tests that need no compiler were run; CI runs the rest.
  • An in-game check of each value: the owner's PC is busy right now.

🤖 Generated with Claude Code

From the #1001 request (three mesh shader modes, Automatic, Native and Compute, for GPUs without native mesh shaders). **What exists already.** The compute fallback for GPUs without mesh shaders (issue 640) already runs automatically: an RX 5500 XT or a GTX 10xx gets it with no setting. The Navi 22 cards (issue 996) also use it for their task + mesh draws. Choosing between the paths was only possible through test switches: - `RX_VK_FORCE_MESH_FALLBACK=1` - `RX_VK_TASK_MESH_FALLBACK` **This PR** adds a **Mesh shaders** row to the Graphics tab, after Robust buffers. It's read when the device is made (`mesh_shaders=` in `hookshot_options.ini`) and applies after a restart. | Value | What runs | |---|---| | Automatic (default) | as before | | Native | the card's own mesh shaders for every draw, Navi 22's task + mesh draws included; a GPU without mesh shaders still uses the compute path | | Compute | the compute path on every GPU, for a card that crashes or leaves objects out with native mesh shaders (the AMD reports in #996) | `RX_VK_FORCE_MESH_FALLBACK=1` still forces Compute over the row, and `RX_VK_TASK_MESH_FALLBACK` still decides the task + mesh draws. The log has `vk: mesh shaders row: <choice> (<what runs>)`. The menu now has 11 restart rows, within `menu_restart.h`'s limit of 16. **Not yet checked:** - Locally, only the game-free menu tests that need no compiler were run; CI runs the rest. - An in-game check of each value: the owner's PC is busy right now. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Commenting is not possible because the repository is archived.
No description provided.