Hello,
Not sure if this is the correct channel for bug reports, but I see others here, so I will add mine. I’ll also cross post this using the “Display Driver Feedback Form”.
I would like to report this error which is consistently reproducible when copying an array from geometry shader input to output, within a conditional. Copying the array element-by-element (e.g. using a for loop) works correctly, but using the array assignment operator to copy the entire array results in C9999 during shader compilation.
Below is a “simple” pass-through geometry shader that reproduces the issue.
#version 150
layout( triangles ) in;
layout( triangle_strip, max_vertices = 3 ) out;
in VertexData {
vec4 data[ 1 ];
}
data_in[];
out VertexData {
vec4 data[ 1 ];
}
data_out;
bool testFunc() {
return true;
}
void main() {
if( testFunc() ) {
data_out.data = data_in[ 0 ].data; // ** Copying the whole array causes internal linker error
// data_out.data[ 0 ] = data_in[ 0 ].data[ 0 ]; // ** Copying per element works fine
gl_Position = gl_in[ 0 ].gl_Position;
EmitVertex();
data_out.data = data_in[ 1 ].data;
// data_out.data[ 0 ] = data_in[ 1 ].data[ 0 ];
gl_Position = gl_in[ 1 ].gl_Position;
EmitVertex();
data_out.data = data_in[ 2 ].data;
// data_out.data[ 0 ] = data_in[ 2 ].data[ 0 ];
gl_Position = gl_in[ 2 ].gl_Position;
EmitVertex();
EndPrimitive();
}
}
Note that without the if statement the array copy works fine.
Environment:
- RTX 2080 Ti
- Latest game ready driver (511.65), was present before this driver version too.
- On Windows 10 and Ubuntu 20.04 (note: in the case of Linux it crashes the entire application, on Windows it just reports the C9999 error)
I can provide the full source on request, but the vertex and fragment shader are very trivial.
Thanks for your time.
Neil