I'm working on a software project that uses OpenGL to create high-resolution results of an image stiching process. For that job, we engage FBOs or pBuffers, depending on the availability.
Recently, we've been told that there are compatibility problems on systems with support for switchable graphics. Apperantly, this technology gains importance, also on Windows platforms. The technology has been supported from Vista onwards. My reference system (Lenovo W500) runs Win7.
Since we are using the Qt framework for software development, I did a few tests with examples coming along with Qt (4.7.4 and 4.8.0). I tested the OpenGL examples "framebufferobject" and "pBuffers" on a system with switchable graphics.
In the Bios, I chose the type of GPU driver. On a system that supports switchable graphics, you have usually three different choices:
1) Discrete Graphics (ATI Mobility FireGL V7500)
2) Integrated Graphics (Mobile Intel 4 Express Chipset Family)
3) Switchable Graphics (switch between ATI and Intel graphics without reboot)
The Qt examples ran smoothly in modes 1) or 2). Case 3) was special: If the "first" adapter (discrete GPU) was attached, the examples ran successfully. If I switched to the "second" adapter however (integrated GPU) the applications quitted with an error message stating that the required extension (fbo, pbuffer respectively) do not exist.
I know, the first thing everyone will think of is "driver problem". Of course, this might be the case also for my system. (Be assured that I checked for the most recent drivers thoroughly enough!) But I would like to learn more about the general state of support for switchable graphics:
- Do the examples work on your machines?
- Do you know something one has to take into consideration in order to ensure support for switchable graphics?
- It seems that the OpenGL capabilities are not updated correctly for the new device after switching graphics. Some Intel tech-sheet (section 3.9) recommends to handle somehow D3DERR_DEVICELOST or WM_DISPLAYCHANGE messages - but is there some way to re-connect OpenGL to new hardware explicitly?
- On Windows, it's possible to query the available adapters with Win32_VideoController class. As with all WMI Classes, one gets a list of objects. For switchable graphics this list is at least of length two. But which device refers to the current adapter?
THANKS to everyone contributing to this topic!