Display*s, and if you have a non-zero pbuffer context bound when you close the
Display*, it will crash. Also, swapping between pbuffers in a single context crashes.
By using a shared
Display*for all contexts, doing
glXMakeContextCurrent(dpy, 0, 0, 0)before destroying the context, and recreating the context on resize (instead of just swapping the pbuffer) got me to the point that it's not crashing on my box. It's still not working right though, as
glReadPixelsreturns random framebuffer data.
Hopefully I'll have it working in the next couple days. Then the only remaining Linux drivers to figure out would be the open source drivers, Intel and the software fallback.
I did test ATI on Windows XP too. Works great after installing the latest drivers. Tested on a Radeon 9600 from 2003 (on a Sempron 2400+) and an X1950 from 2007 (on a Core2.)
The Radeon 9600 really disliked my DOF blur shader, dropping to single-digit FPS when it was enabled. But sans the blur the "25 spinning per-pixel lit cubes"-demo ran smoothly. The X1950 plowed through everything without a hitch. I need heavier demos.