I’m not sure where to begin, I have a ‘kiosk’ application that works just fine with Nvidia hardware GT610 and the 319 Nvidia driver. My OpenGL code draws with glDrawBuffer(GL_FRONT_AND_BACK) but also eventually, calls glXSwapBuffers(). When the code launches full screen mode (no decorations of any kind) it does so with an EWMH event and things work great. I’m using Linux Mint with the Mate/Gnome Window Manager.
I’m trying to get the same code working with Mesa 10 and Intel HD4400 Haswell Mobile graphics. The code works fine except when the system goes full screen. At that point the drawing to both front and back buffers seems to stop but the swapping continues and the display flashes front/back at 30Hz. If I fill the screen with a normally decorated window, things are just fine – no flashing, front and back buffers get written to, all is good.
I have tried to set the OpenGL mode to single buffer mode, I have turned off the calls to glXSwapBuffers() but then there is no drawing output at all.
It seems that there is a bad interaction between Mesa 10 and the Window Manager but only when the Window Manager goes full screen. As if glDrawBuffer(GL_FRONT_AND_BACK) has stopped working. Further experiments suggest that Mesa 10 NEVER draws to the front buffer but ONLY the back buffer.
Out of desperation I have attempted to bypass the Window Manager completely and adjust the window with override_redirect calls. It kinda works, but I can see some evidence that the Window Manager is fighting back. I doesn’t matter that I confuse things with the Window Manager since this is a kiosk application.
Any suggestions please? Should I post this to the Mesa folks?
The great thing about writing to a forum is that it requires one to write clearly (or as clearly as possible) about a problem. The process of explaining the problem often suggests a solution. In my case I have ‘solved’ the problem by starting OpenGL in single buffer mode but retain the calls to glXSwapBuffers() which, of course makes no sense! It then seems that Mesa 10 behaves itself. I think there is something broken in Mesa 10 with respect to drawing to buffers GL_FRONT, GL_BACK, GL_FRONT_AND_BACK – I suspect it only does GL_BACK.
So I have a work-around…