PDA

View Full Version : device crash in GLSL GPGPU shader



Andreas Maier
10-26-2009, 03:59 PM
Hello,

I'm currently working on a GLSL raytracer. But now I encountered a problem when switching drivers to a newer version.

The old dev driver version was 173.14.18, which worked fine. The problem now is, that with EVERY NEWER driver version, the ( entire ) screen starts flickering after starting the application , and after a short time, the graphics device crashes and the display manager needs a restart. It is not only the application window flickering, it really is the whole screen / desktop.

Also the appplication runs a lot slower with newer drivers. The bug is OS independent, it happens in linux as well as in Windows, 32 bit and also 64 bit. I'm currently only working on nvidia GPU's. But the problem is not GPU chip specific. Tried it on 8800 GT / GTS / GTX, 295GTX and a quadro FX5800. Always the same flickering result.

The raytracer first traces the scene via rasterization for primary rays and then starts a kd-tree traversal implemented in a GLSL shader. I was able to trace the bug down to this kd-tree traversal.

I don't think it is a GLSL specific error, as by fixing the (GLSL-) version to earlier ones ( 1.2 , 1.3 .. ) by using the #version pragma in the shader files, gives the same errors.

After restarting the display manager i can see the follwoing log output in messages ( on Linux ):

NVRM: Xid (0001:00): 13, 001 00000000 00005039 00000100 00000000 00000080
.
.
.

in xorg.log the following lines appear:

(II) NVIDA(0): Initialized GPU GART.
(II) NVIDA(0): Initialized GPU GART.
(II) NVIDA(0): Initialized GPU GART.
.
.
.

So my question is, has anybody ever encountered this flickering in his/her application using GLSL for GPGPU ? Or maybe also found a solution ? I'm currently a little bit clueless, as this driver restriction is kind of a showstopper for me. Any help would be appreciated. If I forgot some important info that could help, please let me know.

Thanks in advance

DmitryM
10-26-2009, 05:21 PM
I experienced full-screen flickering as well. The screen sometimes covered black and sometimes showed only 1 color channel(?).

The mystical workaround was to disable HW bilinear filtering on RGBA_16F texture.

Andreas Maier
10-27-2009, 02:29 AM
Thanx for your reply.

I'm only using GL_RGBA32F_ARB for 2d textures with filtering set to GL_NEAREST and for rectangle textures GL_LUMINANCE (with GL_FLOAT) and GL_RGB32F_ARB using nearest filtering.