diff options
Diffstat (limited to '')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/deqp/data/gles3/shaders/constant_expressions.test | 483 |
1 files changed, 483 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/deqp/data/gles3/shaders/constant_expressions.test b/dom/canvas/test/webgl-conf/checkout/deqp/data/gles3/shaders/constant_expressions.test new file mode 100644 index 0000000000..59c6cb6ffb --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/deqp/data/gles3/shaders/constant_expressions.test @@ -0,0 +1,483 @@ +group trivial "Trivial expressions" + + case float + version 300 es + values { output float out0 = 5.0; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = 5.0; + out0 = a; + ${OUTPUT} + } + "" + end + + case int + version 300 es + values { output int out0 = 5; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a = 5; + out0 = a; + ${OUTPUT} + } + "" + end + + case bool + version 300 es + values { output bool out0 = true; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const bool a = true; + out0 = a; + ${OUTPUT} + } + "" + end + + case cast + version 300 es + values { output float out0 = 1.0; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = float(int(bool(true))); + out0 = a; + ${OUTPUT} + } + "" + end + +end # trivial + +group operators "Operators" + + case math_float + version 300 es + values { output float out0 = 2.19; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = 6.0/3.5 + 1.8*2.6 - 4.2; + out0 = a; + ${OUTPUT} + } + "" + end + + case math_vec + version 300 es + values { output float out0 = 15.0; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const vec3 a = (vec4(1.0, 2.0, 3.0, 4.0).zyx * vec3(1.0, 1.5, 3.0).xyz).xzy + (vec2(5.0)/vec2(2.5)).xxy; + out0 = a.x + a.y + a.z; + ${OUTPUT} + } + "" + end + + case math_int + version 300 es + values { output int out0 = 7; } + both "" + #version 300 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const int a = 25%7 + 2*3 - 9/3; + out0 = a; + ${OUTPUT} + } + "" + end + + case math_ivec + version 300 es + values { output int out0 = 21; } + both "" + #version 300 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const ivec3 a = ivec2(25%7, 4).xxy + ivec4(1*3, 9/3, 1+2, 8/4).xyz; + out0 = a.x + a.y + a.z; + ${OUTPUT} + } + "" + end + + case math_mat + version 300 es + values { output float out0 = 8.0; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const mat3 a = mat3(3.0) * mat3(4.0); + const mat4 b = mat4(a[1][1])*2.0; + const mat2 c = mat2(b[0][0]) / 3.0; + out0 = c[0][0]+c[1][0]; + ${OUTPUT} + } + "" + end + + case bitwise + version 300 es + values { output int out0 = 678332; } + both "" + #version 300 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const int a = (((0xABBA<<4) ^ 0xCAFE) | (0xDCBA & (0xABCD>>2))) ^ (~0xDEAD & 0xBEEF); + out0 = a; + ${OUTPUT} + } + "" + end + + case logical + version 300 es + values { output bool out0 = true; } + both "" + #version 300 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const bool a = (!false || false) && (true ^^ false); + out0 = a; + ${OUTPUT} + } + "" + end + + case compare + version 300 es + values { output bool out0 = true; } + both "" + #version 300 es + precision highp int; + ${DECLARATIONS} + + void main() + { + const bool a = (false == false) && (true != false) && (1 < 2) && (3 <= 3) && ((1 > 1) != (1 >= 1)); + out0 = a; + ${OUTPUT} + } + "" + end + + case selection + version 300 es + values { output float out0 = 5.3; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = false ? 0.0 : (true ? 5.3 : 1.0); + out0 = a; + ${OUTPUT} + } + "" + end + +end # operators + +group complex_types "Arrays & Structs" + + case struct + version 300 es + values { output float out0 = 260.922; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + struct S + { + vec4 a; + int b; + }; + + void main() + { + const S s = S(vec4(1.5), 123); + out0 = length(s.a.xy)*float(s.b); + ${OUTPUT} + } + "" + end + + case nested_struct + version 300 es + values { output float out0 = 965.9; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + struct S + { + vec4 v; + int i; + }; + + struct T + { + S s; + bool b; + int i; + }; + + struct U + { + S s; + T t; + }; + + void main() + { + const S s = S(vec4(1.5), 123); + const T t = T(s, false, 3); + const U u = U(s, t); + const U v = U(S(vec4(1.3), 4), T(S(vec4(2.0), 5), true, 6)); + out0 = float(u.s.i*v.t.i + v.t.s.i)*v.s.v.x; // float(123*6 + 5)*1.3 + ${OUTPUT} + } + "" + end + + case array_size + version 300 es + values { output int out0 = 1; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a[max(-1, 1)] = int[1](1); + out0 = a[0]; + ${OUTPUT} + } + "" + end + + case array_length + version 300 es + values { output int out0 = 2; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int a[1] = int[1](1); + out0 = a.length() + a[0]; + ${OUTPUT} + } + "" + end + + case array + version 300 es + values { output float out0 = 4.0; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a[1+2+5] = float[8](0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0); + const float f = a[1+2+4]; + out0 = f + float(a.length()-8); + ${OUTPUT} + } + "" + end + +end # complex_types + +group other "Other operations" + + case switch_case + version 300 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ]; + output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10]; + } + + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const int _0 = 0; + const int _1 = 1; + const int _2 = 2; + const int _3 = 3; + const int _4 = 4; + + switch(int(in0)) + { + case _0: + out0 = 0; + break; + case _1: + out0 = 1; + break; + case _2: + out0 = 2; + break; + case _3: + out0 = 3; + break; + case _4: + out0 = 4; + break; + case 5: + out0 = 10; + break; + default: + out0 = 100; + + } + ${OUTPUT} + } + "" + end + + case nested_builtin_funcs + version 300 es + values { output float out0 = 3.05; } + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + void main() + { + const float a = sqrt( atan(sin(1.5)/cos(1.5)) /*1.5*/ * log2(exp2(log(exp(6.2) + 0.1)) + 0.1) /*~6.2*/); + out0 = a; + ${OUTPUT} + } + "" + end + + case complex + version 300 es + values + { + input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ]; + output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10]; + } + + both "" + #version 300 es + precision highp float; + ${DECLARATIONS} + + struct T + { + vec4 v; + }; + + struct S + { + T t; + int i; + bool b; + }; + + void main() + { + const T t = T(vec4(1.0)); + const S s = S(t, 42, true); + const int _0 = int(sin(0.0)); + const int _1 = int(1.0); + const int _2 = 2 + int(float(_0>_1)); + const int _3 = min(gl_MaxVertexAttribs, 16)/4 - 1; + const int _4 = min(gl_MaxDrawBuffers, 4); + const ivec4 nums = ivec4(0, 1, 2, 3); + + switch(int(in0)) + { + case int(float(_0)): + out0 = ((true!=false) && (!false)) ? 0 : 25; + break; + case ivec3(_1).x: + out0 = 3*18/9-5; + break; + case nums[_2]: + out0 = int(length(vec4(1.0))+0.001); + break; + case _3: + out0 = 3; + break; + case clamp(_4, 1, 6): + out0 = (s.i-2)/10; + break; + case max(3, 5): + out0 = 10; + break; + default: + out0 = 100; + + } + ${OUTPUT} + } + "" + end +end |