[Piglit] [PATCH 02/13] glsl-1.10: add tests for indirect addressing of VS outputs

Ian Romanick idr at freedesktop.org
Mon Apr 6 18:56:29 PDT 2015


Same pseudo-comment here as on patch 1 about
gl_ModelViewProjectionMatrix, and the same

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

On 04/06/2015 04:39 PM, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> ---
>  .../vs-output-array-float-index-wr.shader_test     | 81 +++++++++++++++++++++
>  .../vs-output-array-vec2-index-wr.shader_test      | 81 +++++++++++++++++++++
>  .../vs-output-array-vec3-index-wr.shader_test      | 81 +++++++++++++++++++++
>  .../vs-output-array-vec4-index-wr.shader_test      | 83 ++++++++++++++++++++++
>  4 files changed, 326 insertions(+)
>  create mode 100644 tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-float-index-wr.shader_test
>  create mode 100644 tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec2-index-wr.shader_test
>  create mode 100644 tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec3-index-wr.shader_test
>  create mode 100644 tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec4-index-wr.shader_test
> 
> diff --git a/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-float-index-wr.shader_test b/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-float-index-wr.shader_test
> new file mode 100644
> index 0000000..a07d38c
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-float-index-wr.shader_test
> @@ -0,0 +1,81 @@
> +[require]
> +GLSL >= 1.10
> +
> +[vertex shader]
> +uniform int index;
> +varying float m1[4];
> +varying float m2[4];
> +
> +void main()
> +{
> +    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
> +
> +    m1[0] = 1.0;
> +    m1[1] = 2.0;
> +    m1[2] = 3.0;
> +    m1[3] = 4.0;
> +    m2[0] = 5.0;
> +    m2[1] = 6.0;
> +    m2[2] = 7.0;
> +    m2[3] = 8.0;
> +
> +    if (index >= 4)
> +        m2[index-4] = 0.0;
> +    else
> +        m1[index] = 0.0;
> +}
> +
> +[fragment shader]
> +uniform int index;
> +varying float m1[4];
> +varying float m2[4];
> +
> +void main()
> +{
> +    bool pass = true;
> +
> +    for (int i = 0; i < 4; i++)
> +        pass = pass && m1[i] == (index == i ? 0.0 : float(1+i));
> +
> +    for (int i = 0; i < 4; i++)
> +        pass = pass && m2[i] == (index == 4+i ? 0.0 : float(5+i));
> +
> +    gl_FragColor = pass ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
> +}
> +
> +[test]
> +clear color 0.5 0.5 0.5 0.5
> +clear
> +ortho
> +
> +uniform int index 0
> +draw rect 5 5 10 10
> +probe rgb 10 10 0.0 1.0 0.0
> +
> +uniform int index 1
> +draw rect 30 5 10 10
> +probe rgb 35 10 0.0 1.0 0.0
> +
> +uniform int index 2
> +draw rect 55 5 10 10
> +probe rgb 60 10 0.0 1.0 0.0
> +
> +uniform int index 3
> +draw rect 80 5 10 10
> +probe rgb 85 10 0.0 1.0 0.0
> +
> +uniform int index 4
> +draw rect 105 5 10 10
> +probe rgb 110 10 0.0 1.0 0.0
> +
> +uniform int index 5
> +draw rect 130 5 10 10
> +probe rgb 135 10 0.0 1.0 0.0
> +
> +uniform int index 6
> +draw rect 155 5 10 10
> +probe rgb 160 10 0.0 1.0 0.0
> +
> +uniform int index 7
> +draw rect 180 5 10 10
> +probe rgb 185 10 0.0 1.0 0.0
> diff --git a/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec2-index-wr.shader_test b/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec2-index-wr.shader_test
> new file mode 100644
> index 0000000..630749c
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec2-index-wr.shader_test
> @@ -0,0 +1,81 @@
> +[require]
> +GLSL >= 1.10
> +
> +[vertex shader]
> +uniform int index;
> +varying vec2 m1[4];
> +varying vec2 m2[4];
> +
> +void main()
> +{
> +    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
> +
> +    m1[0] = vec2(1.0, 1.1);
> +    m1[1] = vec2(2.0, 2.1);
> +    m1[2] = vec2(3.0, 3.1);
> +    m1[3] = vec2(4.0, 4.1);
> +    m2[0] = vec2(5.0, 5.1);
> +    m2[1] = vec2(6.0, 6.1);
> +    m2[2] = vec2(7.0, 7.1);
> +    m2[3] = vec2(8.0, 8.1);
> +
> +    if (index >= 4)
> +        m2[index-4] = vec2(0.0, 0.1);
> +    else
> +        m1[index] = vec2(0.0, 0.1);
> +}
> +
> +[fragment shader]
> +uniform int index;
> +varying vec2 m1[4];
> +varying vec2 m2[4];
> +
> +void main()
> +{
> +    bool pass = true;
> +
> +    for (int i = 0; i < 4; i++)
> +        pass = pass && m1[i] == (index == i ? vec2(0.0, 0.1) : vec2(1.0, 1.1) + vec2(i));
> +
> +    for (int i = 0; i < 4; i++)
> +        pass = pass && m2[i] == (index == 4+i ? vec2(0.0, 0.1) : vec2(5.0, 5.1) + vec2(i));
> +
> +    gl_FragColor = pass ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
> +}
> +
> +[test]
> +clear color 0.5 0.5 0.5 0.5
> +clear
> +ortho
> +
> +uniform int index 0
> +draw rect 5 5 10 10
> +probe rgb 10 10 0.0 1.0 0.0
> +
> +uniform int index 1
> +draw rect 30 5 10 10
> +probe rgb 35 10 0.0 1.0 0.0
> +
> +uniform int index 2
> +draw rect 55 5 10 10
> +probe rgb 60 10 0.0 1.0 0.0
> +
> +uniform int index 3
> +draw rect 80 5 10 10
> +probe rgb 85 10 0.0 1.0 0.0
> +
> +uniform int index 4
> +draw rect 105 5 10 10
> +probe rgb 110 10 0.0 1.0 0.0
> +
> +uniform int index 5
> +draw rect 130 5 10 10
> +probe rgb 135 10 0.0 1.0 0.0
> +
> +uniform int index 6
> +draw rect 155 5 10 10
> +probe rgb 160 10 0.0 1.0 0.0
> +
> +uniform int index 7
> +draw rect 180 5 10 10
> +probe rgb 185 10 0.0 1.0 0.0
> diff --git a/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec3-index-wr.shader_test b/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec3-index-wr.shader_test
> new file mode 100644
> index 0000000..66945a0
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec3-index-wr.shader_test
> @@ -0,0 +1,81 @@
> +[require]
> +GLSL >= 1.10
> +
> +[vertex shader]
> +uniform int index;
> +varying vec3 m1[4];
> +varying vec3 m2[4];
> +
> +void main()
> +{
> +    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
> +
> +    m1[0] = vec3(1.0, 1.1, 1.2);
> +    m1[1] = vec3(2.0, 2.1, 2.2);
> +    m1[2] = vec3(3.0, 3.1, 3.2);
> +    m1[3] = vec3(4.0, 4.1, 4.2);
> +    m2[0] = vec3(5.0, 5.1, 5.2);
> +    m2[1] = vec3(6.0, 6.1, 6.2);
> +    m2[2] = vec3(7.0, 7.1, 7.2);
> +    m2[3] = vec3(8.0, 8.1, 8.2);
> +
> +    if (index >= 4)
> +        m2[index-4] = vec3(0.0, 0.1, 0.2);
> +    else
> +        m1[index] = vec3(0.0, 0.1, 0.2);
> +}
> +
> +[fragment shader]
> +uniform int index;
> +varying vec3 m1[4];
> +varying vec3 m2[4];
> +
> +void main()
> +{
> +    bool pass = true;
> +
> +    for (int i = 0; i < 4; i++)
> +        pass = pass && m1[i] == (index == i ? vec3(0.0, 0.1, 0.2) : vec3(1.0, 1.1, 1.2) + vec3(i));
> +
> +    for (int i = 0; i < 4; i++)
> +        pass = pass && m2[i] == (index == 4+i ? vec3(0.0, 0.1, 0.2) : vec3(5.0, 5.1, 5.2) + vec3(i));
> +
> +    gl_FragColor = pass ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
> +}
> +
> +[test]
> +clear color 0.5 0.5 0.5 0.5
> +clear
> +ortho
> +
> +uniform int index 0
> +draw rect 5 5 10 10
> +probe rgb 10 10 0.0 1.0 0.0
> +
> +uniform int index 1
> +draw rect 30 5 10 10
> +probe rgb 35 10 0.0 1.0 0.0
> +
> +uniform int index 2
> +draw rect 55 5 10 10
> +probe rgb 60 10 0.0 1.0 0.0
> +
> +uniform int index 3
> +draw rect 80 5 10 10
> +probe rgb 85 10 0.0 1.0 0.0
> +
> +uniform int index 4
> +draw rect 105 5 10 10
> +probe rgb 110 10 0.0 1.0 0.0
> +
> +uniform int index 5
> +draw rect 130 5 10 10
> +probe rgb 135 10 0.0 1.0 0.0
> +
> +uniform int index 6
> +draw rect 155 5 10 10
> +probe rgb 160 10 0.0 1.0 0.0
> +
> +uniform int index 7
> +draw rect 180 5 10 10
> +probe rgb 185 10 0.0 1.0 0.0
> diff --git a/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec4-index-wr.shader_test b/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec4-index-wr.shader_test
> new file mode 100644
> index 0000000..4770a7a
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/execution/variable-indexing/vs-output-array-vec4-index-wr.shader_test
> @@ -0,0 +1,83 @@
> +[require]
> +GLSL >= 1.10
> +
> +[vertex shader]
> +uniform int index;
> +varying vec4 m1[4];
> +varying vec4 m2[4];
> +
> +void main()
> +{
> +    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
> +
> +    m1[0] = vec4(1.0, 1.1, 1.2, 1.3);
> +    m1[1] = vec4(2.0, 2.1, 2.2, 2.3);
> +    m1[2] = vec4(3.0, 3.1, 3.2, 3.3);
> +    m1[3] = vec4(4.0, 4.1, 4.2, 4.3);
> +    m2[0] = vec4(5.0, 5.1, 5.2, 5.3);
> +    m2[1] = vec4(6.0, 6.1, 6.2, 6.3);
> +    m2[2] = vec4(7.0, 7.1, 7.2, 7.3);
> +    m2[3] = vec4(8.0, 8.1, 8.2, 8.3);
> +
> +    if (index >= 4)
> +        m2[index-4] = vec4(0.0, 0.1, 0.2, 0.3);
> +    else
> +        m1[index] = vec4(0.0, 0.1, 0.2, 0.3);
> +}
> +
> +[fragment shader]
> +uniform int index;
> +varying vec4 m1[4];
> +varying vec4 m2[4];
> +
> +void main()
> +{
> +    bool pass = true;
> +
> +    for (int i = 0; i < 4; i++)
> +        pass = pass && m1[i] == (index == i ? vec4(0.0, 0.1, 0.2, 0.3) :
> +                                              vec4(1.0, 1.1, 1.2, 1.3) + vec4(i));
> +
> +    for (int i = 0; i < 4; i++)
> +        pass = pass && m2[i] == (index == 4+i ? vec4(0.0, 0.1, 0.2, 0.3) :
> +                                                vec4(5.0, 5.1, 5.2, 5.3) + vec4(i));
> +
> +    gl_FragColor = pass ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
> +}
> +
> +[test]
> +clear color 0.5 0.5 0.5 0.5
> +clear
> +ortho
> +
> +uniform int index 0
> +draw rect 5 5 10 10
> +probe rgb 10 10 0.0 1.0 0.0
> +
> +uniform int index 1
> +draw rect 30 5 10 10
> +probe rgb 35 10 0.0 1.0 0.0
> +
> +uniform int index 2
> +draw rect 55 5 10 10
> +probe rgb 60 10 0.0 1.0 0.0
> +
> +uniform int index 3
> +draw rect 80 5 10 10
> +probe rgb 85 10 0.0 1.0 0.0
> +
> +uniform int index 4
> +draw rect 105 5 10 10
> +probe rgb 110 10 0.0 1.0 0.0
> +
> +uniform int index 5
> +draw rect 130 5 10 10
> +probe rgb 135 10 0.0 1.0 0.0
> +
> +uniform int index 6
> +draw rect 155 5 10 10
> +probe rgb 160 10 0.0 1.0 0.0
> +
> +uniform int index 7
> +draw rect 180 5 10 10
> +probe rgb 185 10 0.0 1.0 0.0
> 



More information about the Piglit mailing list