1#version 310 es 2precision mediump float; 3 4layout(location = 0) out vec4 FragColor; 5layout(constant_id = 1) const float a = 1.0; 6layout(constant_id = 2) const float b = 2.0; 7layout(constant_id = 3) const int c = 3; 8layout(constant_id = 4) const int d = 4; 9layout(constant_id = 5) const uint e = 5u; 10layout(constant_id = 6) const uint f = 6u; 11layout(constant_id = 7) const bool g = false; 12layout(constant_id = 8) const bool h = true; 13// glslang doesn't seem to support partial spec constants or composites yet, so only test the basics. 14 15void main() 16{ 17 float t0 = a; 18 float t1 = b; 19 20 uint c0 = uint(c); // OpIAdd with different types. 21 // FConvert, float-to-double. 22 int c1 = -c; // SNegate 23 int c2 = ~c; // OpNot 24 int c3 = c + d; // OpIAdd 25 int c4 = c - d; // OpISub 26 int c5 = c * d; // OpIMul 27 int c6 = c / d; // OpSDiv 28 uint c7 = e / f; // OpUDiv 29 int c8 = c % d; // OpSMod 30 uint c9 = e % f; // OpUMod 31 // TODO: OpSRem, any way to access this in GLSL? 32 int c10 = c >> d; // OpShiftRightArithmetic 33 uint c11 = e >> f; // OpShiftRightLogical 34 int c12 = c << d; // OpShiftLeftLogical 35 int c13 = c | d; // OpBitwiseOr 36 int c14 = c ^ d; // OpBitwiseXor 37 int c15 = c & d; // OpBitwiseAnd 38 // VectorShuffle, CompositeExtract, CompositeInsert, not testable atm. 39 bool c16 = g || h; // OpLogicalOr 40 bool c17 = g && h; // OpLogicalAnd 41 bool c18 = !g; // OpLogicalNot 42 bool c19 = g == h; // OpLogicalEqual 43 bool c20 = g != h; // OpLogicalNotEqual 44 // OpSelect not testable atm. 45 bool c21 = c == d; // OpIEqual 46 bool c22 = c != d; // OpINotEqual 47 bool c23 = c < d; // OpSLessThan 48 bool c24 = e < f; // OpULessThan 49 bool c25 = c > d; // OpSGreaterThan 50 bool c26 = e > f; // OpUGreaterThan 51 bool c27 = c <= d; // OpSLessThanEqual 52 bool c28 = e <= f; // OpULessThanEqual 53 bool c29 = c >= d; // OpSGreaterThanEqual 54 bool c30 = e >= f; // OpUGreaterThanEqual 55 // OpQuantizeToF16 not testable atm. 56 57 int c31 = c8 + c3; 58 59 int c32 = int(e); // OpIAdd with different types. 60 bool c33 = bool(c); // int -> bool 61 bool c34 = bool(e); // uint -> bool 62 int c35 = int(g); // bool -> int 63 uint c36 = uint(g); // bool -> uint 64 float c37 = float(g); // bool -> float 65 66 FragColor = vec4(t0 + t1); 67} 68