[D3D12] Simplify Intel Arc GPU checking

This commit is contained in:
yippeeeyay
2025-12-07 02:37:44 -05:00
committed by Radosław Gliński
parent 32889f51be
commit 2b77c4c08a
3 changed files with 25 additions and 39 deletions

View File

@@ -47,6 +47,20 @@ bool D3D12Provider::IsD3D12APIAvailable() {
return true;
}
const std::string& D3D12Provider::GetAdapterDescription() const {
return adapter_description_;
}
// Check for Intel Arc cards and Intel Graphics iGPUs which use
// the same architecture.
bool D3D12Provider::IsIntelArcGpu() const {
if (adapter_vendor_id_ != GpuVendorID::kIntel) {
return false;
}
return adapter_description_.starts_with("Intel(R) Arc(TM)") ||
adapter_description_.starts_with("Intel(R) Graphics");
}
std::unique_ptr<D3D12Provider> D3D12Provider::Create() {
std::unique_ptr<D3D12Provider> provider(new D3D12Provider);
if (!provider->Initialize()) {
@@ -300,6 +314,7 @@ bool D3D12Provider::Initialize() {
if (WideCharToMultiByte(CP_UTF8, 0, adapter_desc.Description, -1,
adapter_name_mb, adapter_name_mb_size, nullptr,
nullptr) != 0) {
adapter_description_ = adapter_name_mb;
XELOGD3D("DXGI adapter: {} (vendor 0x{:04X}, device 0x{:04X})",
adapter_name_mb, adapter_desc.VendorId, adapter_desc.DeviceId);
}

View File

@@ -97,43 +97,8 @@ class D3D12Provider : public GraphicsProvider {
// Adapter info.
GpuVendorID GetAdapterVendorID() const { return adapter_vendor_id_; }
bool IsIntelArcGpu() const {
if (adapter_vendor_id_ != GpuVendorID::kIntel) {
return false;
}
// Desktop IDs - Alchemist
if (adapter_device_id_ >= 0x56A0 && adapter_device_id_ <= 0x56BD) {
return true;
}
// Mobile IDs - Alchemist
if (adapter_device_id_ >= 0x5690 && adapter_device_id_ <= 0x5697) {
return true;
}
// Desktop IDs - Battlemage
if (adapter_device_id_ >= 0xE20B && adapter_device_id_ <= 0xE20C) {
return true;
}
// Meteor Lake
if (adapter_device_id_ >= 0x7D40 && adapter_device_id_ <= 0x7DD5) {
return true;
}
// Lunar Lake
if (adapter_device_id_ >= 0x6420 && adapter_device_id_ <= 0x64B0) {
return true;
}
// Arrow Lake
if (adapter_device_id_ >= 0x7D41 && adapter_device_id_ <= 0x7D67) {
return true;
}
return false;
}
const std::string& GetAdapterDescription() const;
bool IsIntelArcGpu() const;
// Device features.
D3D12_HEAP_FLAGS GetHeapFlagCreateNotZeroed() const {
@@ -232,6 +197,7 @@ class D3D12Provider : public GraphicsProvider {
GpuVendorID adapter_vendor_id_;
uint32_t adapter_device_id_;
std::string adapter_description_;
D3D12_HEAP_FLAGS heap_flag_create_not_zeroed_;
D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER programmable_sample_positions_tier_;