glslang SPV tests: Add a set of SPV tests.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31212 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
63
Test/spv.functionSemantics.frag
Normal file
63
Test/spv.functionSemantics.frag
Normal file
@@ -0,0 +1,63 @@
|
||||
#version 400
|
||||
|
||||
uniform float u;
|
||||
|
||||
int foo(int a, const int b, in int c, const in int d, out int e, inout int f)
|
||||
{
|
||||
int sum = a + b + c + d + f; // no e, it is out only
|
||||
// sum should be 47 now
|
||||
|
||||
a *= 64;
|
||||
// no b, it is read only
|
||||
c *= 64;
|
||||
// no d, it is read only
|
||||
e = 64 * 16; // e starts undefined
|
||||
f *= 64;
|
||||
|
||||
sum += a + 64 * b + c + 64 * d + e + f; // everything has a value now, totaling of 64(1+2+4+8+16+32) = 64*63 = 4032
|
||||
// sum should be 4032 + 47 = 4079
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
int foo2(float a, vec3 b, out int r)
|
||||
{
|
||||
r = int(3.0 * a);
|
||||
return int(5.0 * b.y);
|
||||
}
|
||||
|
||||
int foo3()
|
||||
{
|
||||
if (u > 3.2) {
|
||||
discard;
|
||||
return 1000000;
|
||||
}
|
||||
|
||||
return 2000000;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
int e;
|
||||
int t = 2;
|
||||
struct s {
|
||||
ivec4 t;
|
||||
} f;
|
||||
f.t.y = 32;
|
||||
|
||||
// test the different qualifers
|
||||
int color = foo(1, 2, t+t, 8, e, f.t.y);
|
||||
|
||||
color += 128 * (e + f.t.y); // right side should be 128(64(16 + 32)) = 393216
|
||||
// sum should be 4079 + 393216 = 397295
|
||||
|
||||
// test conversions
|
||||
float arg;
|
||||
float ret;
|
||||
ret = foo2(4, ivec3(1,2,3), arg); // ret = 10, param = 12.0
|
||||
color += int(ret + arg); // adds 22, for total of 397317
|
||||
|
||||
color += foo3(); // theoretically, add 2000000, for total of 2397317
|
||||
|
||||
gl_FragColor = vec4(color);
|
||||
}
|
||||
Reference in New Issue
Block a user