EnumAdapters often enumerates default adapter twice on multi-GPU PC

Suguru Kitsuki 6 Reputation points
2022-08-06T16:43:41.893+00:00

My PC has two graphic cards, RTX A4000 and RX6400.
But EnumAdapters enumrates 3 graphic cards. A4000, RX6400 and A4000

example code:

Microsoft::WRL::ComPtr<IDXGIAdapter1> adapter;
for (UINT adapterIndex = 0; S_OK == factory->EnumAdapters1(adapterIndex, &adapter); ++adapterIndex) {
DXGI_ADAPTER_DESC1 desc;
if (adapter->GetDesc1(&desc) == S_OK && (desc.Flags& DXGI_ADAPTER_FLAG_SOFTWARE)==0) {
wprintf_s(L"%u:%x-%05x: %s\n", adapterIndex, desc.AdapterLuid.HighPart, desc.AdapterLuid.LowPart, desc.Description);
}
}

output:
0:0-0fca0: NVIDIA RTX A4000
1:0-11bf6: AMD Radeon RX 6400
2:0-1b89e: NVIDIA RTX A4000

Why is default graphic card RTX A4000 listed twice when there is only one?
I tested on some PC and multiple GPU combinations, 2080Ti, RTX3070, RTX3060.... and encountered this problem with high probability.
There is no problem if the PC has only one GPU.
DxDiag also reports the default graphic card twice on multi-GPU PC.
I think this problem has occurred since Windows 10 1903~1909.

Windows 10
Windows 10
A Microsoft operating system that runs on personal computers and tablets.
10,606 questions
Windows API - Win32
Windows API - Win32
A core set of Windows application programming interfaces (APIs) for desktop and server applications. Previously known as Win32 API.
2,420 questions
C++
C++
A high-level, general-purpose programming language, created as an extension of the C programming language, that has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation.
3,526 questions
{count} vote

1 answer

Sort by: Most helpful
  1. Husnain Ali 0 Reputation points
    2023-12-01T23:16:19.8733333+00:00

    The issue with EnumAdapters listing the default graphics card twice is likely due to how DXGI handles GPU enumeration in some Windows 10 versions.

    To work around this:

    1. Make sure your graphics drivers and Windows are up to date.
    2. Check for duplicates based on the unique GPU identifier (AdapterLuid).
    3. If the problem persists, report it to Microsoft through Feedback Hub or Developer Community.

    This issue may be specific to certain Windows versions, and updates could address it.