I'd need to know if the video chipset Direct3D runs on is from Nvidia, AMD or Intel.

Is there a way to do that?

  • \$\begingroup\$ This question scares me... are you trying to do some sort of branching on this, or even worse, a card database? \$\endgroup\$ Commented Jul 4, 2012 at 12:04
  • \$\begingroup\$ @Lars I'm using some vendor-specific extensions so I might use this as a first guess of which one to try. So yes, branching, what's wrong with this? \$\endgroup\$ Commented Jul 4, 2012 at 12:12
  • \$\begingroup\$ Fair enough. Usually when this kind of question appears, it's someone that hardcodes a mapping from name to capabilities that is instantly obsolete as soon as it's compiled. Such lists were the bane of software like Cedega, which exposes a fairly different set of capabilities. \$\endgroup\$ Commented Jul 4, 2012 at 14:54

1 Answer 1


Ha, found it with more googling.

D3D9: call IDirect3D9::GetAdapterIdentifier and check the VendorId of the provided D3DADAPTER_IDENTIFIER9 structure.

D3D11: call IDXGIAdapter::GetDesc and check the VendorId of the provided DXGI_ADAPTER_DESC structure.

Video chipsets vendor IDs, retrieved from this list:

  • Nvidia: 0x10DE
  • AMD: 0x1002, 0x1022
  • Intel: 0x163C, 0x8086, 0x8087

In bold: the IDs mentioned in CardCaps.pdf (provided with the DirectX SDK), that add up with what Direct3D returns on actual hardware.

  • 2
    \$\begingroup\$ Hopefully you'll save some poor sap in the future some Googling. ;) \$\endgroup\$
    – knight666
    Commented Jul 4, 2012 at 9:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .