b2c2e6483b
This is kinda tricky, because if we only conditionally write to a function parameter variable it is implicitly preserved in SPIR-V, so we must force an in qualifier on the parameter to get the same behavior in GLSL.
55 lines
813 B
Plaintext
55 lines
813 B
Plaintext
#version 310 es
|
|
|
|
// We write in all paths (and no reads), so should just be out.
|
|
void out_test_0(int cond, inout int i)
|
|
{
|
|
if (cond == 0)
|
|
i = 40;
|
|
else
|
|
i = 60;
|
|
}
|
|
|
|
// We write in all paths (and no reads), so should just be out.
|
|
void out_test_1(int cond, inout int i)
|
|
{
|
|
switch (cond)
|
|
{
|
|
case 40:
|
|
i = 40;
|
|
break;
|
|
|
|
default:
|
|
i = 70;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// We don't write in all paths, so should be inout.
|
|
void inout_test_0(int cond, inout int i)
|
|
{
|
|
if (cond == 0)
|
|
i = 40;
|
|
}
|
|
|
|
void inout_test_1(int cond, inout int i)
|
|
{
|
|
switch (cond)
|
|
{
|
|
case 40:
|
|
i = 40;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
void main()
|
|
{
|
|
int cond = 40;
|
|
int i = 50;
|
|
|
|
out_test_0(cond, i);
|
|
out_test_1(cond, i);
|
|
inout_test_0(cond, i);
|
|
inout_test_1(cond, i);
|
|
}
|