Skip to content

D3D12 backend: support Intel HD/UHD Windows (VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS blocked) #775

Description

@JeanPhilippeKernel

Summary

Intel HD/UHD Graphics on Windows uses a proprietary Vulkan driver (VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS) with fundamentally broken synchronization: fences and timeline semaphores signal before GPU execution completes. This causes premature resource reuse and VK_ERROR_DEVICE_LOST with no reliable Vulkan workaround.

The engine currently halts at startup with a clear message when this driver is detected (see VulkanDevice.cpp — device selection).

Impact

Users with Intel HD/UHD Graphics on Windows (HD 620, UHD 620, UHD 630, etc.) cannot run the engine.

Root causes confirmed

  • VkFence signals before associated command buffer execution completes (early-signalling bug)
  • Timeline semaphores exhibit the same early-signalling behaviour
  • vkQueueSubmit2 with any timeline semaphore signal hangs or corrupts device state
  • vkQueueWaitIdle is the only reliable CPU-GPU synchronization primitive, making a performant render loop impossible

Drivers NOT affected

  • Intel Arc on Windows (newer driver stack, works correctly)
  • Intel on Linux with ANV/Mesa (VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA)
  • NVIDIA, AMD, Apple Metal (MoltenVK)

Proposed fix

Implement a DirectX 12 RHI backend and select it automatically when VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS is detected. D3D12 on Intel HD/UHD is mature and tested — the early-signalling bug is specific to Intel's Vulkan layer.

Alternatively, if only D3D11 support is targeted, a D3D11 backend would also resolve this for these GPUs.

Acceptance criteria

  • Engine launches and renders on Intel HD/UHD Windows without device-lost errors
  • The VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS halt is removed once the D3D12 backend is available
  • Existing Vulkan path for NVIDIA/AMD/macOS is unaffected

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggood first issueGood for newcomershelp wantedExtra attention is needed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions