From a67ff38ed5870f0d4d8cbf058d56b8f4a9c8a1b8 Mon Sep 17 00:00:00 2001 From: David Svez Date: Sun, 2 Aug 2026 20:45:36 -0500 Subject: [PATCH] Fallback when DirectX debug layer is unavailable --- .../GraphicsDevice/DirectX/DX11/GPUDeviceDX11.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Source/Engine/GraphicsDevice/DirectX/DX11/GPUDeviceDX11.cpp b/Source/Engine/GraphicsDevice/DirectX/DX11/GPUDeviceDX11.cpp index 78750042c..728c12731 100644 --- a/Source/Engine/GraphicsDevice/DirectX/DX11/GPUDeviceDX11.cpp +++ b/Source/Engine/GraphicsDevice/DirectX/DX11/GPUDeviceDX11.cpp @@ -549,7 +549,19 @@ bool GPUDeviceDX11::Init() else #endif { - VALIDATE_DIRECTX_CALL(D3D11CreateDevice(adapter, D3D_DRIVER_TYPE_UNKNOWN, NULL, flags, &targetFeatureLevel, 1, D3D11_SDK_VERSION, &_device, &createdFeatureLevel, &_imContext)); + HRESULT createResult = D3D11CreateDevice(adapter, D3D_DRIVER_TYPE_UNKNOWN, NULL, flags, &targetFeatureLevel, 1, D3D11_SDK_VERSION, &_device, &createdFeatureLevel, &_imContext); +#if GPU_ENABLE_DIAGNOSTICS + if (createResult == DXGI_ERROR_SDK_COMPONENT_MISSING) + { + // The Direct3D debug layer is an optional Windows component. Development builds + // should remain usable when it is not installed, just like adapter probing above. + flags &= ~D3D11_CREATE_DEVICE_DEBUG; + createResult = D3D11CreateDevice(adapter, D3D_DRIVER_TYPE_UNKNOWN, NULL, flags, &targetFeatureLevel, 1, D3D11_SDK_VERSION, &_device, &createdFeatureLevel, &_imContext); + if (SUCCEEDED(createResult)) + LOG(Warning, "Direct3D SDK debug layers were requested, but not available. Continuing without them."); + } +#endif + VALIDATE_DIRECTX_CALL(createResult); } if (!_device || !_imContext) return true;