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.‘’
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;