Skip to content

Fix #545: Windows renders through DX12 before Vulkan - #549

Merged
bflatastic merged 1 commit into
mainfrom
fix/issue-545
Oct 8, 2026
Merged

bflatastic merged 1 commit into
mainfrom
fix/issue-545

Conversation

@bflatastic

Copy link
Copy Markdown
Member

On Windows every GPU is listed twice, once for Vulkan and once for DX12, and Vulkan came first. On the reporter's Intel GPU, Vulkan made the whole window flicker black while the pointer moved; WGPU_BACKEND=dx12 or gl fixed it on the same machine.

  • gpu::adapter_order now puts a GPU's DX12 adapter before its Vulkan one. This comes after the power preference, so the GPU chosen is the same as before; only the backend that drives it changes.
  • Vulkan stays the fallback: if DX12 fails while starting up, the app restarts on Vulkan, and WGPU_BACKEND=vulkan still picks it. Linux, macOS and the web have no DX12 adapter, so nothing changes there.
  • Tests: the hybrid-laptop ordering is updated, and a new VectorCraft window flickers black when moving the mouse — Windows 11 / Intel Graphics #545 test covers DX12 first for every preference, plus Vulkan as the next choice when DX12 is skipped.
  • Docs: docs/development.md (Desktop graphics processor) and the ROADMAP.

Checks

  • Based on origin/main 85dcb28.
  • cargo test -p vectorcraft gpu: 13 passed.
  • Live on Windows 11 with an Intel UHD 770 plus an RTX 4090: the log says rendering with Intel(R) UHD Graphics 770 (Dx12, IntegratedGpu) and ui.inspect agrees. Drawing and pointer moves render correctly.
  • Full cargo xtask ci runs with the next integration batch.

🤖 Generated with Claude Code

Windows lists each GPU under both backends, and Vulkan came first. On an
Intel GPU its driver made the whole window flicker black while the
pointer moved; the same machine was fine with WGPU_BACKEND=dx12 or gl.
adapter_order now ranks a GPU's DX12 adapter before its Vulkan one, after
the power preference, so the GPU chosen doesn't change, only how it is
driven. Vulkan stays the fallback (a failed DX12 start restarts on it)
and WGPU_BACKEND=vulkan still picks it. Elsewhere there is no DX12
adapter, so nothing changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant