[Piglit] [PATCH] glsl-1.10: add a 'initialization-incompatible-type-propagation' test
Danylo Piliaiev
danylo.piliaiev at gmail.com
Mon Sep 17 10:31:11 UTC 2018
On 9/17/18 1:01 PM, Timothy Arceri wrote:
> On 17/9/18 7:56 pm, Danylo Piliaiev wrote:
>> On 9/17/18 12:28 PM, Timothy Arceri wrote:
>>> On 16/8/18 12:23 am, Danylo Piliaiev wrote:
>>>> This tests the case when initialising with incompatible type
>>>> changed a type of the variable being initialized.
>>>>
>>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107547
>>>>
>>>> Signed-off-by: Danylo Piliaiev <danylo.piliaiev at globallogic.com>
>>>> ---
>>>> I'm not sure if it's a proper way to test this. The compilation is
>>>> intended to
>>>> fail but the difference is in the error messages. The correct
>>>> message is an
>>>> error in initialization line and no errors in accessing to the
>>>> variables,
>>>> incorrect - additional errors where variables are accessed.
>>>> At the moment it tests only that compiler wouldn't crash which
>>>> happened
>>>> in the mentioned bug and fix proposed in
>>>> https://patchwork.freedesktop.org/series/48256/
>>>>
>>>> ...ization-incompatible-type-propagation.frag | 27
>>>> +++++++++++++++++++
>>>> 1 file changed, 27 insertions(+)
>>>> create mode 100644
>>>> tests/spec/glsl-1.10/compiler/initialization-incompatible-type-propagation.frag
>>>>
>>>>
>>>> diff --git
>>>> a/tests/spec/glsl-1.10/compiler/initialization-incompatible-type-propagation.frag
>>>> b/tests/spec/glsl-1.10/compiler/initialization-incompatible-type-propagation.frag
>>>>
>>>> new file mode 100644
>>>> index 000000000..0a1873489
>>>> --- /dev/null
>>>> +++
>>>> b/tests/spec/glsl-1.10/compiler/initialization-incompatible-type-propagation.frag
>>>>
>>>> @@ -0,0 +1,27 @@
>>>> +// [config]
>>>> +// expect_result: fail
>>>> +// glsl_version: 1.10
>>>> +// [end config]
>>>> +//
>>>> +// Initializing a variable using the variable with a wrong type
>>>> +// should not affect the type of the variable being initialized.
>>>> +// At least it should not crash, see bug:
>>>> +// https://bugs.freedesktop.org/show_bug.cgi?id=107547
>>>> +//
>>>> +// From section 5.8 of the GLSL 1.10 spec:
>>>> +// The assignment operator stores the value of expression into
>>>> lvalue.
>>>> +// It will compile only if expression and lvalue have the same
>>>> type.
>>>> +
>>>> +#version 110
>>>> +
>>>> +uniform struct {
>>>> + float field;
>>>> +} data;
>>>> +
>>>> +int f() {
>>>> + vec4 a = vec2(0.0);
>>>> + a.w -= 1.0; > +
>>>> + vec2 b = data;
>>>> + b.x -= 1.0;
>>>
>>> This looks like it should be split into two different tests. Is
>>> there any reason you included both tests together?
>> The reason was is that the only thing that is tested here is that
>> Mesa doesn't crash when compiling the shader.
>> Testing whether the assignment of an incompatible type produces an
>> error is on the other tests.
>> I'm not sure at this moment if that was a good reason. I can split it
>> into two tests if you find it necessary.
>
> Regardless of what you are testing you still have two tests here. If
> they can both trigger a segfault in different paths they should be
> spilt in two. If they both test the a segfault in the same place then
> we should probably simplify the test.
>
Understood, I'll split it in to two tests. Only one case is causing
segfault, other one just has a potential.
>>>
>>>> +}
>>>>
>>
More information about the Piglit
mailing list