Can one actually select GPU on which to create GL context? (for Windows)

Hi Everyone,

I am working on a research project where we need to ship our prototype (a small game with use of OpenGL) to our participants. No need to say that this application has to be robust and work with many different configuration of GPUs. Due to requirements of having a better control over messages from the OS to the app we decided to abandon GLUT, i.e., using win32 development. Moreover, in the case, described below, glut didn’t worked either.

However, yesterday I encountered with a kind of weird specs of a laptop, which I believe will become a norm pretty soon. It is a Core i7+Nvidia chip. This effectively gives windows 2 gpus: Intel HD 3000 and Nvidia 5XX.

I found that to control which GPU is used we need to use affinity (for Nvidia) and association (for AMD/ATI). However, when you create a GL context in windows it creates it on Intel chip, thus, extension functions for GPU affinity (since the case for NVidia) are not available. Tried to load functions both manually and by using glew.

Does anyone know how to select the NVidia GPU in this case?

Does anyone has similar settings but with ATI/AMD chip, if so, do you have the same problem?

Thanks for any help in Advance!!!

Afaik this is not possible programmatically.


I wonder if this will change, given that new intel cpus are coming with hd 3000/4000 and in all new laptops, that have discreet graphics, OS will always see two devices, and by default will use intel stuff.

AMD has an extension for this, here is the whitepaper describing it:

Thanks Dorbie, I saw this paper already but it was not what I was looking for. I was looking for a hardware independent type of API that allows to select from a set of gpus one. For instance, in my case I have two GPUs from intel (HD 3000) and nVidia, and it appears that in windows driver decides which one to pick for the context. Users, however, can override this logic, which is not an option for me.

In such heterogeneous cases (several manufactures of hardware) we need EXT or ARB type of extensions, not specific from NV or AMD.

And I am strongly convinced that my case in near future will be prevalent, since today every intel cpu now has a gpu, and I do not think that users will be satisfied with it, thus they will seeks for a discreet cards, from AMD and nVidia.


I do not think that users will be satisfied with it

How much do you think Microsoft cares? It’s their Installable Client Driver model, which they developed at a time when having multiple GPUs made no sense. They never updated it, and I guarantee you they don’t plan to. I guarantee you that Intel doesn’t plan to put any back-doors into their driver to be able to select some non-Intel graphics driver either.

So that’s what users are stuck with on Windows.

Cannot agree less.

What makes you think that Microsoft does care? What makes you think that Intel would want to let people use some other GPU?

Don’t misunderstand my point. I’m not saying that this is good. I’m saying that, baring a miracle, it’s not going to change.

Saying cannot agree less I meant that I meant that it is hard to disagree. Microsoft has its DirectX, where by the way you can chose what you need. Intel wants to get back the title for manufacturer of processing power. They made several attempts on highly parallel computing devices, but we haven’t seen them so far in production. We will see, I found my way around the problem, just stick with lowest OpenGL version I can run by stuff on, which should run on any intel HD stuff.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.