3 Replies Latest reply on Oct 4, 2013 12:55 AM by nou

    Where to submit AMD driver bug ? Got one

    cippyboy

      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;      

      }