Looking on the forum, it's as if the drivers never have bugs. I tried looking for driver bug submissions but found none
I just found one with my HD7850 and latest 13.10 drivers
GLSL shader that after one frame stops all driver rendering and hangs.
The ofensive code (I think) is declaring an array of 3 structures as local variables and double referencing from uniform blocks.
//Inputs
in vec4 POSITION;
in vec2 TEXCOORD;
//Outputs
out mediump vec2 TexCoordVarying;
out vec3 PSTest;
uniform sampler2D Texture0;
uniform mat4 modelViewProjectionMatrix;
uniform vec3 ExtraTranslate;//z = Alpha
struct VertexData
{
vec4 POS;
vec4 TEX;
};
layout(binding = 0, offset = 0) uniform VertexBufferData
{
VertexData Vertices[ 16 ];
};
layout(binding = 1, offset = 0) uniform IndexBufferData
{
uint Indices[ 16 ];
};
layout(binding = 2, offset = 0) uniform BaryCoordsBuffer
{
vec4 BaryCoords[ 7 ];//for Level=2
};
vec4 interpolate4(in vec4 v0, in vec4 v1, in vec4 v2, vec4 BaryCoord)
{
return v0 * BaryCoord.x + v1 * BaryCoord.y + v2 * BaryCoord.z;
}
void main()
{
int PolygonID = gl_VertexID / 3;
int VertexIndex = gl_VertexID % 3;//- PolygonID * 3;
int PolygonIndices[3] = { PolygonID * 3 + 0, PolygonID * 3 + 1, PolygonID * 3 + 2 };
VertexData ReferencedVertices[3] = { Vertices[ Indices[ PolygonIndices[ 0 ] ]], Vertices[ Indices[ PolygonIndices[ 1 ] ]],
Vertices[ Indices[ PolygonIndices[ 2 ] ]] };
vec4 CurrentVertex;
CurrentVertex = interpolate4( ReferencedVertices[0].POS, ReferencedVertices[1].POS, ReferencedVertices[2].POS, BaryCoords[ VertexIndex ] );
vec4 CurrentTexcoord;
CurrentTexcoord = interpolate4( ReferencedVertices[0].TEX, ReferencedVertices[1].TEX, ReferencedVertices[2].TEX, BaryCoords[ VertexIndex ] );
PSTest = BaryCoords[ VertexIndex ].xyz;
vec4 ModifiedPos = CurrentVertex;
ModifiedPos.xy += ExtraTranslate.xy;
gl_Position = modelViewProjectionMatrix * ModifiedPos;
TexCoordVarying = CurrentTexcoord.xy;
}