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
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 andVK_ERROR_DEVICE_LOSTwith 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
VkFencesignals before associated command buffer execution completes (early-signalling bug)vkQueueSubmit2with any timeline semaphore signal hangs or corrupts device statevkQueueWaitIdleis the only reliable CPU-GPU synchronization primitive, making a performant render loop impossibleDrivers NOT affected
VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA)Proposed fix
Implement a DirectX 12 RHI backend and select it automatically when
VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWSis 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
VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWShalt is removed once the D3D12 backend is availableReferences
ZEngine/ZEngine/Hardwares/VulkanDevice.cpp— current halt detection