9
votes

I would like to know the Graphics Card Model Name in OpenGL or in Win32 cuz I have a memory leaks bug on a specific kind of Graphics Card (only Intel HD not all Intel).

This is the bug : https://software.intel.com/en-us/forums/developing-games-and-graphics-on-intel/topic/280679

The Vendor Name in OpenGL is not enough. Does someone know a way to get the name of the graphical card different than using Direct3D ? Or do you think that I can use D3D and OpenGL together? Get the graphics card model?

1
The foolproof method for determining the installed GPU type is to directly enumerate the hardware. In Linux you'd either call lspci and parse its output or traverse /sys/bus/pci/devices/* looking for all devices being of the class 0x030000 (graphics controllers). My Google-Fu failed me finding the right APIs for doing this on modern Windows machines. It's certainly not part of the Win32 API and changes with each bump of the Windows driver programming model.datenwolf
That method is not foolproof, since it is not guaranteed, that the installed device is used by the application and in the requested context. Driver problems or software switches may prevent this. And it is quite common on laptops with more than one graphics card, that a powerful card is installed but not used.OutOfBound
Unrelated, but uhhhhh.... did two people in the Intel forum post actually take the time to try and help an SEO bot?Robert Rouhani

1 Answers

13
votes

You can get all the information via the OpenGL Api.

https://www.khronos.org/opengl/wiki/Get_Context_Info

const GLubyte* vendor = glGetString​(GL_VENDOR); // Returns the vendor
const GLubyte* renderer = glGetString​(GL_RENDERER); // Returns a hint to the model

In my case the renderer returns the following string: "GeForce GT 750M/PCIe/SSE2"

I don't know, what it would return for Intel or Amd cards. To my knowledge the format of the string and it's content is up to the implementation.