Hi,

Here is a series bugs I encounter:
1 - nVidia drivers doesn't support precision qualifier for input and output varyings.

2 - gl_ViewportIndex isn't supported.

3 - nVidia drivers behave weirdly with precision qualifiers. On one side there are more of less discard, on other side there are interpreted as int8_t or int16_t which are defined in GL_NV_vertex_attrib_integer_64bit but I don't use it.

4 - I have a misleading warning with the following simple shader:
0(21) : warning C7050: "GeomColor" might be used before being initialized

Code :
#version 400 core
 
layout(triangles, invocations = 6) in;
 
in vec3 VertColor[];
layout(stream = 0) out vec3 GeomColor;
 
uniform mat4 MVP;
 
void main()
{	
	for(int i = 0; i < gl_in.length(); ++i)
	{
		gl_Position = MVP * (gl_in[i].gl_Position + vec4(vec2(0.0), - 0.3 + float(0.1) * float(gl_InvocationID), 0.0));
		GeomColor = (vec3(gl_InvocationID + 1) / 6.0 + VertColor[i]) / 2.0; 
		EmitVertex();
	}
	EndPrimitive();
}

It is followed by a invalid operation error at draw call.

5 - More misleading errors with a simple control shader:
Code :
#version 400 core
 
layout(vertices = 4) out;
 
in vert
{
	vec4 Color;
} Vert[];
 
out cont
{
	vec4 Color;
} Cont[];
 
void main()
{	
	gl_TessLevelInner[0] = 16.0;
	gl_TessLevelInner[1] = 16.0;
	gl_TessLevelOuter[0] = 8.0;
	gl_TessLevelOuter[1] = 8.0;
	gl_TessLevelOuter[2] = 8.0;
	gl_TessLevelOuter[3] = 8.0;
	gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
	Cont[gl_InvocationID].Color = Vert[gl_InvocationID].Color;
}

0(14) : error C5121: multiple bindings to output semantics
"ATTR0"
0(14) : error C5121: multiple bindings to output semantics "ATTR0"
0(14) : error C5121: multiple bindings to output semantics "ATTR0"

Yes, I have it 3 times...

6 - More geometry shader issue:
Code :
#version 410 core
 
// Declare all the semantics
#define ATTR_POSITION	0
#define ATTR_COLOR		3
#define ATTR_TEXCOORD	4
 
#define VERT_POSITION	0
#define VERT_COLOR		3
#define VERT_TEXCOORD	4
#define VERT_INSTANCE	7
 
#define GEOM_COLOR		3
 
#define FRAG_COLOR		0
#define FRAG_RED		0
#define FRAG_GREEN		1
#define FRAG_BLUE		2
#define FRAG_ALPHA		3
 
layout(triangles, invocations = 6) in;
 
layout(location = VERT_COLOR) in vec3 Color[];
layout(location = GEOM_COLOR, stream = 0) out vec3 GeomColor;
 
uniform mat4 MVP;
 
void main()
{	
	for(int i = 0; i < gl_in.length(); ++i)
	{
		gl_Position = MVP * (gl_in[i].gl_Position + vec4(vec2(0.0), - 0.3 + float(0.1) * float(gl_InvocationID), 0.0));
		GeomColor = (vec3(gl_InvocationID + 1) / 6.0 + Color[i]) / 2.0; 
		EmitVertex();
	}
	EndPrimitive();
}

which generates the message: (0) fatal error C9999: *** exception during compilation ***

Actually, I didn't manage to run any gemetry shader code...

***Outch***