OpenGL maximum of 32 on-screen windows with Vista/7
Before I reduce this to a reasonable example I was hoping someone might have run into this before and can shed some light on the problem.

I have a 32-bit C based application which uses one OpenGL context per window, all the contexts and windows are set up identically. The requested pixel format is 32bit color, alpha, depth buffer, accelerated. Everything works flawlessly on Windows 2000 and XP.

Everything works flawlessly on Vista and 7 until the 33rd window/context pair is created. Creating the window has no errors, creating the context has no errors, making the context current has no errors, drawing produces no errors, SwapBuffers does not generate an error. However, the OpenGL contexts fail to produce any output, with Aero the windows are white, with the classic mode they don't draw and are just screen garbage. Killing the DWM doesn't fix the problem, trying different pixel formats (single buffer, diff. depths, etc) and PFD_SUPPORT_COMPOSITION doesn't fix the problem. This is on a number of different machines with Vista/7, never XP.

I can glReadPixels the back buffer and they are the correct pixels. Rendering into a pbuffer with the same context works fine, rendering into >32 pbuffers is fine.

If I free working on-screen contexts/windows, the non-working windows start working again. It's as if Vista/7 simply stop displaying OpenGL rendering after 32 windows are on screen doing this.

If the pixel format descriptor includes PFD_SUPPORT_GDI everything is OK, but it's using the software renderer which is unacceptable.

I am wondering if this is an OS limitation or driver limitation in Vista/7. Thanks for any insight.
OpenGL maximum of 32 on-screen windows with Vista/7
===

Before I reduce this to a reasonable example I was hoping someone might have run into this before and can shed some light on the problem.

I have a 32-bit C based application which uses one OpenGL context per window, all the contexts and windows are set up identically. The requested pixel format is 32bit color, alpha, depth buffer, accelerated. Everything works flawlessly on Windows 2000 and XP.

Everything works flawlessly on Vista and 7 until the 33rd window/context pair is created. Creating the window has no errors, creating the context has no errors, making the context current has no errors, drawing produces no errors, SwapBuffers does not generate an error. However, the OpenGL contexts fail to produce any output, with Aero the windows are white, with the classic mode they don't draw and are just screen garbage. Killing the DWM doesn't fix the problem, trying different pixel formats (single buffer, diff. depths, etc) and PFD_SUPPORT_COMPOSITION doesn't fix the problem. This is on a number of different machines with Vista/7, never XP.

I can glReadPixels the back buffer and they are the correct pixels. Rendering into a pbuffer with the same context works fine, rendering into >32 pbuffers is fine.

If I free working on-screen contexts/windows, the non-working windows start working again. It's as if Vista/7 simply stop displaying OpenGL rendering after 32 windows are on screen doing this.

If the pixel format descriptor includes PFD_SUPPORT_GDI everything is OK, but it's using the software renderer which is unacceptable.

I am wondering if this is an OS limitation or driver limitation in Vista/7. Thanks for any insight.