AnsweredAssumed Answered

ATI OpenGL GLSL driver error

Question asked by florianlink on Jan 22, 2013

Two years ago I encountered the following problem:

http://devgurus.amd.com/thread/152033

 

Now it reappeared in a slightly different manner: The following OpenGL fragment shader leads to a link error (with any trivial vertex shader):

 

struct VolumeInfo { sampler3D volumeDataTexture; vec4 data; };

 

uniform VolumeInfo primaryVolumeInfo;

 

//pre-declare the functions, this seems to cause the driver bug

vec4 someCall1(in VolumeInfo info);

vec4 someCall2(in VolumeInfo info);

 

vec4 someCall2(in VolumeInfo info)

{ return vec4(info.data); }

 

vec4 someCall(in VolumeInfo info)

{ return someCall2(info); }

 

void main()

{ gl_FragColor = someCall(primaryVolumeInfo); }

 

 

The problem seams to be the pre-declaration of someCall1/someCall2, if I uncomment them, the code works as expected.

It only happens when a samples is part of the uniform struct and when the struct is passed through two method calls and

if the method calls are pre-declared.

 

I get the following errors:

 

Vertex shader(s) failed to link, fragment

shader(s) failed to link.

Vertex link error: INVALID_OPERATION.

unexpected error.

fragment link error: INVALID_OPERATION.

unexpected error.

Outcomes