impl intel driver version

This commit is contained in:
Junkui Zhang 2025-07-17 21:10:33 +08:00
parent 78824390d0
commit 7627097875

View file

@ -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<String> {
let number = unsafe { adapter.CheckInterfaceSupport(&IDXGIDevice::IID as _) }?;
Ok(format!(
"{}.{}.{}.{}",
number >> 48,
(number >> 32) & 0xFFFF,
(number >> 16) & 0xFFFF,
number & 0xFFFF
))
}
}