diff --git a/src/gallium/drivers/d3d12/d3d12_dxcore_screen.cpp b/src/gallium/drivers/d3d12/d3d12_dxcore_screen.cpp index 7c5b032cfc9..3a5f67b49ee 100644 --- a/src/gallium/drivers/d3d12/d3d12_dxcore_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_dxcore_screen.cpp @@ -156,6 +156,7 @@ d3d12_create_dxcore_screen(struct sw_winsys *winsys, LUID *adapter_luid) FAILED(screen->adapter->GetProperty(DXCoreAdapterProperty::DedicatedAdapterMemory, &dedicated_video_memory)) || FAILED(screen->adapter->GetProperty(DXCoreAdapterProperty::DedicatedSystemMemory, &dedicated_system_memory)) || FAILED(screen->adapter->GetProperty(DXCoreAdapterProperty::SharedSystemMemory, &shared_system_memory)) || + FAILED(screen->adapter->GetProperty(DXCoreAdapterProperty::DriverVersion, &screen->base.driver_version)) || FAILED(screen->adapter->GetProperty(DXCoreAdapterProperty::DriverDescription, sizeof(screen->description), screen->description))) { diff --git a/src/gallium/drivers/d3d12/d3d12_dxgi_screen.cpp b/src/gallium/drivers/d3d12/d3d12_dxgi_screen.cpp index d9ee68599ca..9910cb27ec1 100644 --- a/src/gallium/drivers/d3d12/d3d12_dxgi_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_dxgi_screen.cpp @@ -135,6 +135,10 @@ d3d12_create_dxgi_screen(struct sw_winsys *winsys, LUID *adapter_luid) return nullptr; } + LARGE_INTEGER driver_version; + screen->adapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &driver_version); + screen->base.driver_version = driver_version.QuadPart; + screen->base.vendor_id = adapter_desc.VendorId; // Note: memory sizes in bytes, but stored in size_t, so may be capped at 4GB. // In that case, adding before conversion to MB can easily overflow. diff --git a/src/gallium/drivers/d3d12/d3d12_screen.h b/src/gallium/drivers/d3d12/d3d12_screen.h index 28d5353dced..93edb69f2fd 100644 --- a/src/gallium/drivers/d3d12/d3d12_screen.h +++ b/src/gallium/drivers/d3d12/d3d12_screen.h @@ -90,6 +90,7 @@ struct d3d12_screen { /* description */ uint32_t vendor_id; + uint64_t driver_version; uint64_t memory_size_megabytes; double timestamp_multiplier; bool have_load_at_vertex;