Vulkan 1.2 + extensions device support (dynamic_rendering / synchronization2 as KHR) -- 1.3 devices unchanged #675

Closed
opened 2026-10-11 10:23:22 +00:00 by sky_line · 2 comments
Owner

Accept Vulkan 1.2 devices that expose the Vulkan 1.3 functionality we use as extensions, instead of requiring a 1.3 driver. Prompted by a Windows 7 / GTX 1060 user on NVIDIA's last Win7 branch (474.xx, Vulkan 1.2).

Rule #1

The newest devices on modern drivers are completely unaffected. On a 1.3+ device we request 1.3 (or newer) exactly as today: same features, same code paths, same performance. The 1.2 path is a fallback, never a replacement.

Scope (option 1, cheap)

  • Version: request VK_API_VERSION_1_3 when the physical device reports ≥ 1.3, else 1.2.
  • 1.2 devices: enable the extension equivalents through their feature structs: VK_KHR_dynamic_rendering, VK_KHR_synchronization2, plus optional VK_KHR_maintenance4, VK_EXT_extended_dynamic_state(2), VK_EXT_shader_demote_to_helper_invocation, VK_EXT_subgroup_size_control, VK_EXT_inline_uniform_block, VK_KHR_copy_commands2, VK_KHR_format_feature_flags2 (whatever we actually use).
  • Entry points: load the KHR/EXT entry points into the same function slots the renderer calls (vkCmdBeginRendering[KHR], vkCmdEndRendering, vkCmdPipelineBarrier2, vkQueueSubmit2, vkCmdSetCullMode/depth-test etc.), so the ~370 call sites don't change.
  • Graceful failure: if a REQUIRED extension is missing, skip that device, and show a clear message naming the missing extension and suggesting a driver update, instead of the generic "needs Vulkan 1.3". Log the full capability check.

Data point

The user's 474.xx vulkaninfo has synchronization2, descriptor indexing, timeline semaphores and the Vulkan 1.1/1.2 features. It does not have VK_KHR_dynamic_rendering, so that driver gets the clean message. Making it actually run needs a VkRenderPass fallback, which is a separate, larger ticket.

Accept **Vulkan 1.2 devices** that expose the Vulkan 1.3 functionality we use as extensions, instead of requiring a 1.3 driver. Prompted by a Windows 7 / GTX 1060 user on NVIDIA's last Win7 branch (474.xx, Vulkan 1.2). ## Rule #1 The newest devices on modern drivers are completely unaffected. On a 1.3+ device we request 1.3 (or newer) exactly as today: same features, same code paths, same performance. The 1.2 path is a fallback, never a replacement. ## Scope (option 1, cheap) - **Version:** request `VK_API_VERSION_1_3` when the physical device reports ≥ 1.3, else 1.2. - **1.2 devices:** enable the extension equivalents through their feature structs: `VK_KHR_dynamic_rendering`, `VK_KHR_synchronization2`, plus optional `VK_KHR_maintenance4`, `VK_EXT_extended_dynamic_state(2)`, `VK_EXT_shader_demote_to_helper_invocation`, `VK_EXT_subgroup_size_control`, `VK_EXT_inline_uniform_block`, `VK_KHR_copy_commands2`, `VK_KHR_format_feature_flags2` (whatever we actually use). - **Entry points:** load the KHR/EXT entry points into the same function slots the renderer calls (`vkCmdBeginRendering[KHR]`, `vkCmdEndRendering`, `vkCmdPipelineBarrier2`, `vkQueueSubmit2`, `vkCmdSetCullMode`/depth-test etc.), so the ~370 call sites don't change. - **Graceful failure:** if a REQUIRED extension is missing, skip that device, and show a clear message naming the missing extension and suggesting a driver update, instead of the generic "needs Vulkan 1.3". Log the full capability check. ## Data point The user's 474.xx vulkaninfo has synchronization2, descriptor indexing, timeline semaphores and the Vulkan 1.1/1.2 features. It does **not** have `VK_KHR_dynamic_rendering`, so that driver gets the clean message. Making it actually run needs a VkRenderPass fallback, which is a separate, larger ticket.
sky_line added this to the Slipstream project 2026-10-11 10:23:22 +00:00
Author
Owner

Agent dispatched (Sonnet).

Agent dispatched (Sonnet).
Author
Owner

Shipped in 1.2.2 and 1.3.0 Beta 4: Vulkan 1.2 devices that expose the 1.3 features as extensions are now accepted. Vulkan 1.3 devices are unchanged.

Shipped in 1.2.2 and 1.3.0 Beta 4: Vulkan 1.2 devices that expose the 1.3 features as extensions are now accepted. Vulkan 1.3 devices are unchanged.
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#675
No description provided.