check debug layer before creating

Junkui Zhang created

Change summary

crates/gpui/src/platform/windows/directx_renderer.rs | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

Detailed changes

crates/gpui/src/platform/windows/directx_renderer.rs 🔗

@@ -974,7 +974,17 @@ impl Drop for DirectXResources {
 #[inline]
 fn get_dxgi_factory() -> Result<IDXGIFactory6> {
     #[cfg(debug_assertions)]
-    let factory_flag = DXGI_CREATE_FACTORY_DEBUG;
+    let factory_flag = if unsafe { DXGIGetDebugInterface1::<IDXGIInfoQueue>(0) }
+        .log_err()
+        .is_some()
+    {
+        DXGI_CREATE_FACTORY_DEBUG
+    } else {
+        log::error!(
+            "Failed to get DXGI debug interface. DirectX debugging features will be disabled."
+        );
+        DXGI_CREATE_FACTORY_FLAGS::default()
+    };
     #[cfg(not(debug_assertions))]
     let factory_flag = DXGI_CREATE_FACTORY_FLAGS::default();
     unsafe { Ok(CreateDXGIFactory2(factory_flag)?) }