fix(requirements): check the GPU the game uses, so a laptop's RTX card isn't reported as lacking mesh shaders #44

Merged
HumanBean merged 1 commit from HumanBean/LongshotLauncher:fix/requirements-laptop-gpu into main 2026-11-13 17:06:43 +00:00
Owner

On a laptop with an RTX 4070, the Game files step said "Limited hardware … 23.3 GB VRAM · No mesh shaders; using the slower compute fallback". The launcher had checked the processor's integrated graphics, not the card the game uses.

Why

The launcher ranked GPUs by memory. Integrated graphics report a share of system RAM as their memory (23.3 GB of 31 GB here), so they won over the RTX 4070 Laptop GPU's 8188 MiB, and their missing mesh shaders were reported. The game itself (pick_device in Longshot's gpu/vk/vk_main.cpp) takes the discrete GPU, so the warning was wrong.

What changed (Core/SystemRequirements.cs)

  • Which GPU is checked: the one the game picks: discrete over integrated over others, then the newer driver. Device type and driver version are read from VkPhysicalDeviceProperties, already in hand.
  • VRAM: the largest device-local heap, as the game measures it, instead of a sum. AMD without resizable BAR lists its CPU-visible 256 MiB as a heap of its own, which the sum counted twice.
  • Mesh shaders: taskShader and meshShader both, as the game requires; only meshShader was read.
  • Thresholds: 4 and 8 GB allow 256 MiB under, since a card sold as 8 GB reports a little less (8188 MiB on the RTX 4070 Laptop GPU) and was told "8 GB VRAM recommended".

Not changed: on Linux AMD the game uses the compute fallback by default even with mesh shaders (issue 2245); the launcher still says "Mesh shaders available" there, which describes the card.

Testing

  • python -I tests/test_launcher_core.py: passes, with new checks in tests/launcher_core/RequirementsChecks.cs: an integrated GPU (23.3 GB, no mesh) plus an RTX 4070 Laptop (8188 MiB, mesh) is green with "Mesh shaders available" in either order; same-kind GPUs take the newer driver; well under 8 GB still warns.
  • python -I tests/test_release.py: passes.
  • Not yet run on a laptop with two GPUs. WIP until someone with an integrated + NVIDIA laptop sees the step go green (or shows the right card).

🤖 Generated with Claude Code

On a laptop with an RTX 4070, the Game files step said "Limited hardware … 23.3 GB VRAM · No mesh shaders; using the slower compute fallback". The launcher had checked the processor's integrated graphics, not the card the game uses. ## Why The launcher ranked GPUs by memory. Integrated graphics report a share of system RAM as their memory (23.3 GB of 31 GB here), so they won over the RTX 4070 Laptop GPU's 8188 MiB, and their missing mesh shaders were reported. The game itself (`pick_device` in Longshot's `gpu/vk/vk_main.cpp`) takes the discrete GPU, so the warning was wrong. ## What changed (`Core/SystemRequirements.cs`) - **Which GPU is checked:** the one the game picks: discrete over integrated over others, then the newer driver. Device type and driver version are read from `VkPhysicalDeviceProperties`, already in hand. - **VRAM:** the largest device-local heap, as the game measures it, instead of a sum. AMD without resizable BAR lists its CPU-visible 256 MiB as a heap of its own, which the sum counted twice. - **Mesh shaders:** `taskShader` and `meshShader` both, as the game requires; only `meshShader` was read. - **Thresholds:** 4 and 8 GB allow 256 MiB under, since a card sold as 8 GB reports a little less (8188 MiB on the RTX 4070 Laptop GPU) and was told "8 GB VRAM recommended". Not changed: on Linux AMD the game uses the compute fallback by default even with mesh shaders (issue 2245); the launcher still says "Mesh shaders available" there, which describes the card. ## Testing - `python -I tests/test_launcher_core.py`: passes, with new checks in `tests/launcher_core/RequirementsChecks.cs`: an integrated GPU (23.3 GB, no mesh) plus an RTX 4070 Laptop (8188 MiB, mesh) is green with "Mesh shaders available" in either order; same-kind GPUs take the newer driver; well under 8 GB still warns. - `python -I tests/test_release.py`: passes. - **Not yet run on a laptop with two GPUs.** WIP until someone with an integrated + NVIDIA laptop sees the step go green (or shows the right card). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(requirements): check the GPU the game uses, so a laptop's RTX card isn't reported as lacking mesh shaders
All checks were successful
CI / Compile and test (pull_request) Has been skipped
CI / Conventional Commit title (pull_request) Successful in 24s
ae873235d7
The launcher ranked GPUs by memory, so on a laptop an integrated GPU reporting a share
of system RAM (23.3 GB) won over an RTX 4070 Laptop GPU (8188 MiB), and its missing
mesh shaders were reported. It now picks as the game's pick_device does: discrete over
integrated, then the newer driver. Also as the game does: VRAM is the largest
device-local heap rather than a sum, mesh shaders need both task and mesh support, and
the 4 and 8 GB thresholds allow 256 MiB under the marketed size.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
HumanBean changed title from WIP: fix(requirements): check the GPU the game uses, so a laptop's RTX card isn't reported as lacking mesh shaders to fix(requirements): check the GPU the game uses, so a laptop's RTX card isn't reported as lacking mesh shaders 2026-11-13 17:05:18 +00:00
HumanBean deleted branch fix/requirements-laptop-gpu 2026-11-13 17:06:43 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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/LongshotLauncher!44
No description provided.