[Piglit] [PATCH] glsl-1.10: Test the sign() function with abs() and negation of its argument

Timothy Arceri tarceri at itsqueeze.com
Wed Jun 27 01:26:17 UTC 2018



On 27/06/18 11:24, Ian Romanick wrote:
> On 06/26/2018 05:15 PM, Timothy Arceri wrote:
>> On 27/06/18 07:44, Ian Romanick wrote:
>>> From: Ian Romanick <ian.d.romanick at intel.com>
>>>
>>> The fsign(-abs(x)) tests tickle a bug in the Mesa i965 driver that was
>>> found by inspection.
>>>
>>> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
>>> ---
>>>    .../execution/fs-sign-neg-abs.shader_test          | 28
>>> ++++++++++++++++
>>>    .../glsl-1.10/execution/fs-sign-neg.shader_test    | 26 +++++++++++++++
>>>    .../execution/vs-sign-neg-abs.shader_test          | 38
>>> ++++++++++++++++++++++
>>>    .../glsl-1.10/execution/vs-sign-neg.shader_test    | 36
>>> ++++++++++++++++++++
>>>    4 files changed, 128 insertions(+)
>>>    create mode 100644
>>> tests/spec/glsl-1.10/execution/fs-sign-neg-abs.shader_test
>>>    create mode 100644
>>> tests/spec/glsl-1.10/execution/fs-sign-neg.shader_test
>>>    create mode 100644
>>> tests/spec/glsl-1.10/execution/vs-sign-neg-abs.shader_test
>>>    create mode 100644
>>> tests/spec/glsl-1.10/execution/vs-sign-neg.shader_test
>>>
>>> diff --git
>>> a/tests/spec/glsl-1.10/execution/fs-sign-neg-abs.shader_test
>>> b/tests/spec/glsl-1.10/execution/fs-sign-neg-abs.shader_test
>>> new file mode 100644
>>> index 000000000..285c6e749
>>> --- /dev/null
>>> +++ b/tests/spec/glsl-1.10/execution/fs-sign-neg-abs.shader_test
>>> @@ -0,0 +1,28 @@
>>> +[require]
>>> +GLSL >= 1.10
>>> +
>>> +[vertex shader passthrough]
>>> +
>>> +[fragment shader]
>>> +uniform vec4 arg0;
>>> +uniform vec4 arg1;
>>> +uniform vec4 expect;
>>> +
>>> +void main()
>>> +{
>>> +    if (sign(-abs(arg0)) != -sign(abs(arg1)))
>>> +        gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
>>> +    else if (sign(-abs(arg0)) != -abs(sign(arg1)))
>>> +        gl_FragColor = vec4(0.5, 0.0, 0.5, 1.0);
>>> +    else if (sign(-abs(arg0)) != expect)
>>> +        gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
>>> +    else
>>> +        gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
>>> +}
>>> +
>>> +[test]
>>> +uniform vec4 arg0 -5.0 5.0 0.0 0.0
>>> +uniform vec4 arg1 -2.0 2.0 0.0 0.0
>>> +uniform vec4 expect 1.0 -1.0 0.0 0.0
>>
>> Shouldn't this be:
>>
>> uniform vec4 expect -1.0 -1.0 0.0 0.0
> 
> You are correct.  I had just noticed that after running it through our
> CI.  I think I've also discovered that we need fp64 versions of these,
> and I was going to resend all of it at once.

Well if you fix these. You can have my r-b on this and the squashed 
part. I'll look at the fp64 patch when you send it out.


> 
>>> +draw rect -1 -1 2 2
>>> +probe rgb 1 1 0.0 1.0 0.0
>>> diff --git a/tests/spec/glsl-1.10/execution/fs-sign-neg.shader_test
>>> b/tests/spec/glsl-1.10/execution/fs-sign-neg.shader_test
>>> new file mode 100644
>>> index 000000000..a881fc80f
>>> --- /dev/null
>>> +++ b/tests/spec/glsl-1.10/execution/fs-sign-neg.shader_test
>>> @@ -0,0 +1,26 @@
>>> +[require]
>>> +GLSL >= 1.10
>>> +
>>> +[vertex shader passthrough]
>>> +
>>> +[fragment shader]
>>> +uniform vec4 arg0;
>>> +uniform vec4 arg1;
>>> +uniform vec4 expect;
>>> +
>>> +void main()
>>> +{
>>> +    if (sign(-arg0) != -sign(arg1))
>>> +        gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
>>> +    else if (sign(-arg0) != expect)
>>> +        gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
>>> +    else
>>> +        gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
>>> +}
>>> +
>>> +[test]
>>> +uniform vec4 arg0 -5.0 5.0 0.0 0.0
>>> +uniform vec4 arg1 -2.0 2.0 0.0 0.0
>>> +uniform vec4 expect 1.0 -1.0 0.0 0.0
>>> +draw rect -1 -1 2 2
>>> +probe rgb 1 1 0.0 1.0 0.0
>>> diff --git
>>> a/tests/spec/glsl-1.10/execution/vs-sign-neg-abs.shader_test
>>> b/tests/spec/glsl-1.10/execution/vs-sign-neg-abs.shader_test
>>> new file mode 100644
>>> index 000000000..e7f0546f3
>>> --- /dev/null
>>> +++ b/tests/spec/glsl-1.10/execution/vs-sign-neg-abs.shader_test
>>> @@ -0,0 +1,38 @@
>>> +[require]
>>> +GLSL >= 1.10
>>> +
>>> +[vertex shader]
>>> +uniform vec4 arg0;
>>> +uniform vec4 arg1;
>>> +uniform vec4 expect;
>>> +
>>> +varying vec4 color;
>>> +
>>> +void main()
>>> +{
>>> +    if (sign(-abs(arg0)) != -sign(abs(arg1)))
>>> +        color = vec4(1.0, 0.0, 0.0, 1.0);
>>> +    else if (sign(-abs(arg0)) != -abs(sign(arg1)))
>>> +        color = vec4(0.5, 0.0, 0.5, 1.0);
>>> +    else if (sign(-abs(arg0)) != expect)
>>> +        color = vec4(0.0, 0.0, 1.0, 1.0);
>>> +    else
>>> +        color = vec4(0.0, 1.0, 0.0, 1.0);
>>> +
>>> +    gl_Position = gl_Vertex;
>>> +}
>>> +
>>> +[fragment shader]
>>> +varying vec4 color;
>>> +
>>> +void main()
>>> +{
>>> +    gl_FragColor = color;
>>> +}
>>> +
>>> +[test]
>>> +uniform vec4 arg0 -5.0 5.0 0.0 0.0
>>> +uniform vec4 arg1 -2.0 2.0 0.0 0.0
>>> +uniform vec4 expect 1.0 -1.0 0.0 0.0
>>> +draw rect -1 -1 2 2
>>> +probe rgb 1 1 0.0 1.0 0.0
>>> diff --git a/tests/spec/glsl-1.10/execution/vs-sign-neg.shader_test
>>> b/tests/spec/glsl-1.10/execution/vs-sign-neg.shader_test
>>> new file mode 100644
>>> index 000000000..0f7526d63
>>> --- /dev/null
>>> +++ b/tests/spec/glsl-1.10/execution/vs-sign-neg.shader_test
>>> @@ -0,0 +1,36 @@
>>> +[require]
>>> +GLSL >= 1.10
>>> +
>>> +[vertex shader]
>>> +uniform vec4 arg0;
>>> +uniform vec4 arg1;
>>> +uniform vec4 expect;
>>> +
>>> +varying vec4 color;
>>> +
>>> +void main()
>>> +{
>>> +    if (sign(-arg0) != -sign(arg1))
>>> +        color = vec4(1.0, 0.0, 0.0, 1.0);
>>> +    else if (sign(-arg0) != expect)
>>> +        color = vec4(0.0, 0.0, 1.0, 1.0);
>>> +    else
>>> +        color = vec4(0.0, 1.0, 0.0, 1.0);
>>> +
>>> +    gl_Position = gl_Vertex;
>>> +}
>>> +
>>> +[fragment shader]
>>> +varying vec4 color;
>>> +
>>> +void main()
>>> +{
>>> +    gl_FragColor = color;
>>> +}
>>> +
>>> +[test]
>>> +uniform vec4 arg0 -5.0 5.0 0.0 0.0
>>> +uniform vec4 arg1 -2.0 2.0 0.0 0.0
>>> +uniform vec4 expect 1.0 -1.0 0.0 0.0
>>> +draw rect -1 -1 2 2
>>> +probe rgb 1 1 0.0 1.0 0.0


More information about the Piglit mailing list