AnsweredAssumed Answered

Crash in driver: OpenGL and SSBOs

Question asked by yves on Aug 27, 2015
Latest reply on Sep 3, 2015 by yves

Hello,

 

my name is Yves and I'm a developer of the free and open source strategy game 0 A.D. (play0ad.com).

I've started experimenting with more modern OpenGL features with the goal to improve rendering performance. When working with SSBOs I've experienced a crash in the driver on AMD platforms on both Windows and Linux. I'm using the proprietary drivers because Mesa does not yet support the required OpenGL features (which unfortunately also means I can't get any useful callstacks into the driver for troubleshooting).  The crash could not be reproduced with NVidia hardware and drivers. I've investigated further and was able to write a relatively small test-program that crashes in the same way as my new experimental renderer for the game.

 

Here's the code:

Example program to reproduce SSBO related driver crashes. · GitHub

 

It's based on Graham Sellers' example programs (you can get the other required files here: openglsuperbible/sb6code · GitHub ).

 

The example just renders a single triangle. It passes data using two SSBOs. One of these is used in both stages, vertex shader (VS) and fragment shader (FS).

The conditions in the shader are quite arbitrary and their only purpose is to ensure that the blocks are actually active in the shader.

If the block AColorBlock gets block ID 0, the program crashes in glDrawElements. You can rename the block to "ZColorBlock" for example to make it block 1 and avoid the crash. The crash can also be avoided by only using ColorIndexBlock in one shader stage or by using uniform buffers instead of SSBOs.

 

Am I doing anything wrong or might it be a driver bug?

Outcomes