Vulkan requirements check: clear message (and a qualifying-GPU pick) instead of a silent failure on old drivers #526

Closed
opened 2026-10-07 21:15:00 +00:00 by sky_line · 1 comment
Owner

A tester with an Intel HD 530 (Skylake) on driver 26.20.100.8142 (mid-2020, Vulkan 1.2) couldn't run Slipstream and got no useful message.

Problem

Slipstream needs Vulkan 1.3 plus a set of features (vk_device.cpp): dynamicRendering, synchronization2, bufferDeviceAddress, descriptor indexing (runtime arrays, non-uniform sampled-image indexing, partially bound, variable count), timelineSemaphore, drawIndirectCount, multiDrawIndirect, drawIndirectFirstInstance, imageCubeArray, samplerAnisotropy (+ the optional ones already probed).
pickPhysicalDevice doesn't check any of it: it picks a GPU, then device creation fails or std::abort()s with a stderr line the user never sees. "No Vulkan devices" also aborts silently.

Fix

  • Before creating the device, check every Vulkan physical device for API version >= 1.3 and every required feature/extension; pick the best qualifying device (prefer discrete, then integrated), so a laptop with a capable dGPU and an old iGPU driver still works.
  • If none qualifies: a clear OS message box (before any window/UI exists) saying which GPU(s) were found, their driver/Vulkan version, what's missing, and what to do: "update your graphics driver" with the vendor-specific hint (Intel: Intel Driver & Support Assistant / 6th-10th gen package; NVIDIA/AMD: their driver pages; Linux: Mesa version), plus a link to a wiki page. Then exit cleanly (no crash report / no abort).
  • Same for: no Vulkan loader / no ICD (vkCreateInstance fails), and vkCreateDevice failures (report the VkResult).
  • Log the full reason (Vulkan requirements: lines with each device's version and missing features) so bug reports show it.
  • Wiki: a short "Graphics requirements / updating drivers" page.

Done when

  • On a Vulkan-1.2-only driver the viewer shows the message and exits cleanly.
  • On a hybrid laptop where only the dGPU qualifies, it picks the dGPU.
  • The log names the device, versions and missing features.
A tester with an **Intel HD 530** (Skylake) on driver **26.20.100.8142** (mid-2020, Vulkan 1.2) couldn't run Slipstream and got no useful message. ## Problem Slipstream needs Vulkan 1.3 plus a set of features (`vk_device.cpp`): dynamicRendering, synchronization2, bufferDeviceAddress, descriptor indexing (runtime arrays, non-uniform sampled-image indexing, partially bound, variable count), timelineSemaphore, drawIndirectCount, multiDrawIndirect, drawIndirectFirstInstance, imageCubeArray, samplerAnisotropy (+ the optional ones already probed). `pickPhysicalDevice` doesn't check any of it: it picks a GPU, then device creation fails or `std::abort()`s with a stderr line the user never sees. "No Vulkan devices" also aborts silently. ## Fix - Before creating the device, check every Vulkan physical device for API version >= 1.3 and every required feature/extension; pick the best **qualifying** device (prefer discrete, then integrated), so a laptop with a capable dGPU and an old iGPU driver still works. - If none qualifies: a clear **OS message box** (before any window/UI exists) saying which GPU(s) were found, their driver/Vulkan version, what's missing, and what to do: "update your graphics driver" with the vendor-specific hint (Intel: Intel Driver & Support Assistant / 6th-10th gen package; NVIDIA/AMD: their driver pages; Linux: Mesa version), plus a link to a wiki page. Then exit cleanly (no crash report / no abort). - Same for: no Vulkan loader / no ICD (vkCreateInstance fails), and vkCreateDevice failures (report the VkResult). - Log the full reason (`Vulkan requirements:` lines with each device's version and missing features) so bug reports show it. - Wiki: a short "Graphics requirements / updating drivers" page. ## Done when - On a Vulkan-1.2-only driver the viewer shows the message and exits cleanly. - On a hybrid laptop where only the dGPU qualifies, it picks the dGPU. - The log names the device, versions and missing features.
sky_line added this to the Slipstream project 2026-10-07 21:15:00 +00:00
Author
Owner

Shipped in 1.1.0 (stable) and 1.2.0 Beta 1. Downloads: https://slipstreamviewer.org -- please reopen if it still happens.

Shipped in **1.1.0** (stable) and **1.2.0 Beta 1**. Downloads: https://slipstreamviewer.org -- please reopen if it still happens.
sky_line 2026-10-07 23:35:43 +00:00
Sign in to join this conversation.
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
sky_line/Slipstream#526
No description provided.