You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vulkan: add DXGI flip-model interop swapchain via D3D12 direct back-buffer sharing (Windows)
Vulkan renders directly into the DXGI flip-model back buffers, which are created on a LUID-matched interop D3D12 device and shared into Vulkan as external-memory images (no copy). A shared D3D12 fence orders Vulkan rendering ahead of a no-op present command list that binds each back buffer and transitions it to PRESENT. Opt-in via VulkanSwapchainKind / WGPU_VULKAN_SWAPCHAIN_KIND; the native VK_KHR_swapchain path stays the default.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+23Lines changed: 23 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -143,6 +143,29 @@ A new standalone example, `examples/standalone/03_hdr_surface`, prints a surface
143
143
144
144
By @stuartparmenter in [#9658](https://github.com/gfx-rs/wgpu/pull/9658).
145
145
146
+
#### DXGI flip-model swapchain for Vulkan on Windows
147
+
148
+
The Vulkan backend can now present on Windows through a DXGI flip-model swapchain that wgpu drives directly, rather than the native `VK_KHR_swapchain`. The native swapchain is implemented by the driver on its own DXGI swapchain, which wgpu cannot configure and which often paces frames poorly. Driving the flip-model swapchain ourselves gives the same presentation control the DX12 backend has, so frame pacing is steadier and present latency is lower. This is opt-in; the native swapchain stays the default.
149
+
150
+
Turn it on at instance creation, or set `WGPU_VULKAN_SWAPCHAIN_KIND` to `native`, `dxgi-hwnd`, or `dxgi-visual`:
151
+
152
+
```diff
153
+
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
A DXGI kind needs a device LUID, timeline semaphores, and `VK_KHR_external_memory_win32` / `VK_KHR_external_semaphore_win32`; adapters without them cannot present under it.
166
+
167
+
By @cwfitzgerald in [#XXXX](https://github.com/gfx-rs/wgpu/pull/XXXX).
0 commit comments