OpenGL: glDrawArrays combined with GL_EDGE_FLAG_ARRAY => SystemCrash

Discussion created by Faculty on Nov 12, 2010

We're developing an opengl application which works fine on nvidia and matrox cards but fails on my ati Radeon X1650 (pcie), Catalyst 10.2 (Feb 2010, Bios Version: (also fails on new winxp installation, just xp and the ati driver)

On a second ati system (Radeon 7000, agp) the program works fine. Both systems have the latest driver versions. The program fails if we set glEnableClientState( GL_EDGE_FLAG_ARRAY ), set the glEdgeFlagPointer and then call glDrawArrays().

Without GL_EDGE_FLAG_ARRAY it works fine - except that we see lines we don't want to see... (we display triangles, the data was tessellated before)

If we do so manually and send the vertices by glVertex and switching the glEdgeFlag() getting the data from the same arrays, everything works fine.

If we add a glFlush() immediately after glDrawArrays(), everything is fine.

  But then it becomes horrible slow on nvidia maschines. The testing data is a simple cube and the data is not corrupted. During a crash both connected monitors are getting dark and turning off. After a few seconds only one monitor turns on and shows something that looks like windows but not completely drawn: borders of windows without content.

Then the monitor turns off again and the other monitor turns on. This repeats about five times. Then both monitors stay off and the machine is dead.

From time to time we see a window that VPU Recover wants to send a bug report to ati. It is not possible to click the send button. It's not possible to move the mouse. We have to turn off the computer. After a while the computer could not boot anymore; it crashes with a blue screen during the booting process. First we reinstalled windows but then we discovered that we have to reset the bios to the defaults and windows starts again. After some crashes we got the blue screen again and the new windows installation comes back after reseting the bios.

Some versions later the programm works without the glFlush, but there are some lines flickering around. The current sollution is to one glFlush() after every body we paint, which is fast enough for nVidia and looks okay on the radeon. I don't see any problems at the moment. But I do have a problem something like this will kill the windows installation of a custumer.

Is the report written to the hard disk, so I can transmit it now?

Is this issue known? What can we do to guarantee that this will not happen at our customers?

Thanks and regards