From 0c40bb9b5f6ec165b0d1836a233778bd3b3e4d81 Mon Sep 17 00:00:00 2001 From: Junkui Zhang <364772080@qq.com> Date: Thu, 17 Jul 2025 21:10:33 +0800 Subject: [PATCH] impl intel driver version --- .../src/platform/windows/directx_renderer.rs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/crates/gpui/src/platform/windows/directx_renderer.rs b/crates/gpui/src/platform/windows/directx_renderer.rs index 22bd5b0b95d7cc5e5c444a87b342b584913ced5c..8b549c2ae4c3a7c3b891da8beba5da429fb57584 100644 --- a/crates/gpui/src/platform/windows/directx_renderer.rs +++ b/crates/gpui/src/platform/windows/directx_renderer.rs @@ -412,11 +412,12 @@ impl DirectXRenderer { _ => "Unknown Vendor".to_string(), }; let driver_version = match desc.VendorId { - 0x10DE => nvidia::get_driver_version().context("Failed to get NVIDIA driver info"), + 0x10DE => nvidia::get_driver_version(), 0x1002 => Err(anyhow::anyhow!("AMD driver info not implemented yet")), - 0x8086 => Err(anyhow::anyhow!("Intel driver info not implemented yet")), + 0x8086 => intel::get_driver_version(&self.devices.adapter), _ => Err(anyhow::anyhow!("Unknown vendor detected.")), } + .context("Failed to get gpu driver info") .log_err() .unwrap_or("Unknown Driver".to_string()); Ok(GpuSpecs { @@ -1443,3 +1444,21 @@ mod nvidia { } } } + +mod intel { + use windows::{ + Win32::Graphics::Dxgi::{IDXGIAdapter1, IDXGIDevice}, + core::Interface, + }; + + pub(super) fn get_driver_version(adapter: &IDXGIAdapter1) -> anyhow::Result { + let number = unsafe { adapter.CheckInterfaceSupport(&IDXGIDevice::IID as _) }?; + Ok(format!( + "{}.{}.{}.{}", + number >> 48, + (number >> 32) & 0xFFFF, + (number >> 16) & 0xFFFF, + number & 0xFFFF + )) + } +}