Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

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?

share|improve this question
    
This question scares me... are you trying to do some sort of branching on this, or even worse, a card database? –  Lars Viklund Jul 4 '12 at 12:04
    
@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? –  Laurent Couvidou Jul 4 '12 at 12:12
    
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. –  Lars Viklund Jul 4 '12 at 14:54
add comment

1 Answer 1

up vote 4 down vote accepted

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.

share|improve this answer
    
Hopefully you'll save some poor sap in the future some Googling. ;) –  knight666 Jul 4 '12 at 9:41
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.