mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-08 08:40:55 +00:00
Fall back to queried version directly from adapter if not found
* This is better for WARP which will not be enumerated by setupapi as a physical device.
This commit is contained in:
@@ -152,11 +152,13 @@ WrappedID3D11Device::WrappedID3D11Device(ID3D11Device *realDevice, D3D11InitPara
|
||||
{
|
||||
DXGI_ADAPTER_DESC desc = {};
|
||||
pDXGIAdapter->GetDesc(&desc);
|
||||
LARGE_INTEGER version = {};
|
||||
pDXGIAdapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &version);
|
||||
|
||||
m_InitParams.AdapterDesc = desc;
|
||||
|
||||
GPUVendor vendor = GPUVendorFromPCIVendor(desc.VendorId);
|
||||
rdcstr descString = GetDriverVersion(desc);
|
||||
rdcstr descString = GetDriverVersion(desc, version);
|
||||
|
||||
RDCLOG("New D3D11 device created: %s / %s", ToStr(vendor).c_str(), descString.c_str());
|
||||
|
||||
|
||||
@@ -134,12 +134,14 @@ void D3D11Replay::CreateResources(IDXGIFactory *factory)
|
||||
{
|
||||
DXGI_ADAPTER_DESC desc = {};
|
||||
pDXGIAdapter->GetDesc(&desc);
|
||||
LARGE_INTEGER version = {};
|
||||
pDXGIAdapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &version);
|
||||
|
||||
RDCEraseEl(m_DriverInfo);
|
||||
|
||||
m_DriverInfo.vendor = GPUVendorFromPCIVendor(desc.VendorId);
|
||||
|
||||
rdcstr descString = GetDriverVersion(desc);
|
||||
rdcstr descString = GetDriverVersion(desc, version);
|
||||
descString.resize(RDCMIN(descString.size(), ARRAY_COUNT(m_DriverInfo.version) - 1));
|
||||
memcpy(m_DriverInfo.version, descString.c_str(), descString.size());
|
||||
|
||||
|
||||
@@ -743,11 +743,13 @@ WrappedID3D12Device::WrappedID3D12Device(ID3D12Device *realDevice, D3D12InitPara
|
||||
{
|
||||
DXGI_ADAPTER_DESC desc = {};
|
||||
pDXGIAdapter->GetDesc(&desc);
|
||||
LARGE_INTEGER version = {};
|
||||
pDXGIAdapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &version);
|
||||
|
||||
m_InitParams.AdapterDesc = desc;
|
||||
|
||||
GPUVendor vendor = GPUVendorFromPCIVendor(desc.VendorId);
|
||||
rdcstr descString = GetDriverVersion(desc);
|
||||
rdcstr descString = GetDriverVersion(desc, version);
|
||||
|
||||
RDCLOG("New D3D12 device created: %s / %s", ToStr(vendor).c_str(), descString.c_str());
|
||||
|
||||
|
||||
@@ -132,10 +132,12 @@ void D3D12Replay::Initialise(IDXGIFactory1 *factory, D3D12DevConfiguration *conf
|
||||
{
|
||||
DXGI_ADAPTER_DESC desc = {};
|
||||
pDXGIAdapter->GetDesc(&desc);
|
||||
LARGE_INTEGER version = {};
|
||||
pDXGIAdapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &version);
|
||||
|
||||
m_DriverInfo.vendor = GPUVendorFromPCIVendor(desc.VendorId);
|
||||
|
||||
rdcstr descString = GetDriverVersion(desc);
|
||||
rdcstr descString = GetDriverVersion(desc, version);
|
||||
descString.resize(RDCMIN(descString.size(), ARRAY_COUNT(m_DriverInfo.version) - 1));
|
||||
memcpy(m_DriverInfo.version, descString.c_str(), descString.size());
|
||||
|
||||
|
||||
@@ -1833,7 +1833,7 @@ static uint32_t HexToInt(char hex)
|
||||
return 0;
|
||||
}
|
||||
|
||||
rdcstr GetDriverVersion(DXGI_ADAPTER_DESC &desc)
|
||||
rdcstr GetDriverVersion(DXGI_ADAPTER_DESC &desc, LARGE_INTEGER adapterQueryVersion)
|
||||
{
|
||||
rdcstr device = StringFormat::Wide2UTF8(rdcwstr(desc.Description));
|
||||
|
||||
@@ -1864,10 +1864,6 @@ rdcstr GetDriverVersion(DXGI_ADAPTER_DESC &desc)
|
||||
return device;
|
||||
}
|
||||
|
||||
// if we got a version, and didn't have one yet, set it
|
||||
if(driverVersion.empty())
|
||||
driverVersion = version;
|
||||
|
||||
rdcstr pciid = GetDeviceProperty(devs, &data, &DEVPKEY_Device_MatchingDeviceId);
|
||||
|
||||
if(pciid.empty())
|
||||
@@ -1908,6 +1904,13 @@ rdcstr GetDriverVersion(DXGI_ADAPTER_DESC &desc)
|
||||
idx++;
|
||||
}
|
||||
|
||||
if(driverVersion.empty())
|
||||
{
|
||||
driverVersion = StringFormat::Fmt(
|
||||
"%u.%u.%u.%u", adapterQueryVersion.HighPart >> 16, adapterQueryVersion.HighPart & 0xffff,
|
||||
adapterQueryVersion.LowPart >> 16, adapterQueryVersion.LowPart & 0xffff);
|
||||
}
|
||||
|
||||
SetupDiDestroyDeviceInfoList(devs);
|
||||
return device + " " + driverVersion;
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ void WarnUnknownGUID(const char *name, REFIID riid);
|
||||
|
||||
struct ReplayOptions;
|
||||
|
||||
rdcstr GetDriverVersion(DXGI_ADAPTER_DESC &desc);
|
||||
rdcstr GetDriverVersion(DXGI_ADAPTER_DESC &desc, LARGE_INTEGER adapterQueryVersion);
|
||||
void ChooseBestMatchingAdapter(GraphicsAPI api, IDXGIFactory *factory,
|
||||
const DXGI_ADAPTER_DESC &AdapterDesc, const ReplayOptions &opts,
|
||||
bool *useWarp, IDXGIAdapter **adapter);
|
||||
|
||||
Reference in New Issue
Block a user