From a54d20daa232dee9f4eda77eff8140b5fc4bdb62 Mon Sep 17 00:00:00 2001 From: Hordur Johannsson Date: Sun, 25 Aug 2024 03:37:14 +0000 Subject: [PATCH] d3d12: show warning instead of panic when debug layer cant be created #1128 (#1251) --- src/sysgpu/d3d12.zig | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/sysgpu/d3d12.zig b/src/sysgpu/d3d12.zig index fde2b0a2..f4f8c96e 100644 --- a/src/sysgpu/d3d12.zig +++ b/src/sysgpu/d3d12.zig @@ -84,11 +84,22 @@ pub const Instance = struct { &c.IID_IDXGIFactory4, @ptrCast(&dxgi_factory), ); - if (hr != c.S_OK) { + if (hr == c.DXGI_ERROR_INVALID_CALL) { + const hr_prev = hr; + hr = c.CreateDXGIFactory2( + 0, + &c.IID_IDXGIFactory4, + @ptrCast(&dxgi_factory)); + if (hr == c.S_OK) { + log.info("note: D3D12 debug layers disabled (couldn't enable, error: {x}), see https://machengine.org/about/faq/#how-to-enable-direct3d-debug-layers", + .{@as(u32, @bitCast(hr_prev))}); + } else { + return error.CreateDXGIFactoryFailed; + } + } else if (hr != c.S_OK) { return error.CreateDXGIFactoryFailed; } errdefer _ = dxgi_factory.lpVtbl.*.Release.?(dxgi_factory); - var opt_dxgi_factory5: ?*c.IDXGIFactory5 = null; _ = dxgi_factory.lpVtbl.*.QueryInterface.?( dxgi_factory,