PDA

View Full Version : NVIDIA 310.* crashes when compiling GLSL using "restrict" keyword on image unit



sleap
11-23-2012, 01:25 AM
title says it all.

declare any image unit from the image load store extension will cause a crash on the call to compile the shader, eg:
layout(size4x32) uniform imageBuffer restrict data;

specifying restrict before the image keyword does not cause a crash. Howver, this defies the specs:
layout(size4x32) uniform restrict imageBuffer data;
layout(size4x32) restrict uniform imageBuffer data;
restrict layout(size4x32) uniform imageBuffer data;

(from: http://www.opengl.org/registry/specs/ARB/shader_image_load_store.txt)
``For "coherent", "volatile", and "const", the qualifier should typicallygo before the image type. For "restrict", the qualifier must go after
the image type, since "restrict" applies to the pointer, not the data
being pointed to.''

randall
11-23-2012, 04:09 AM
If you are using ARB_shader_image_load extension you should use ARB style formats so: rgba32f (in your case) there is no size4x32 format in ARB version of this extension (only in EXT). Memory qualifiers are: 'coherent', 'volatile', 'restrict', 'readonly' and 'writeonly' (there is no 'const' qualifier in ARB version).

This declaration works as expected:
layout(rgba32f) uniform imageBuffer restrict data;

sleap
11-26-2012, 07:27 PM
Thanks for the response. I'm aware of the two formats. They both work for me but I've just chosen size4x32 as it works on my ATI card.

Your declaration still causes a crash with my 310.19 drivers.