new file mode 100644
@@ -0,0 +1,40 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform int i;
+uniform ubo1 {
+ dvec4 colors[4];
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 temp[4] = colors;
+ temp[0] = dvec4(1.0, 0.0, arg0, 0.0);
+ dvec4 result = temp[i];
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.0 1.0 0.0 0.0
+uniform int i 1
+uniform dvec4 colors[0] 0.0 0.0 0.0 0.0
+uniform dvec4 colors[1] 0.0 1.0 0.0 0.0
+uniform dvec4 colors[2] 0.0 1.0 1.0 0.0
+uniform dvec4 colors[3] 1.0 0.0 1.0 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,33 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ layout(row_major) dmat4 m;
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(m[0] + m[1] + m[2] + m[3] + arg0);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.5 0.75 1.0 1.25
+uniform dmat4 m 0.25 0.0 0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 1.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
\ No newline at end of file
new file mode 100644
@@ -0,0 +1,34 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ dmat4 m;
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(m[0] + m[1] + m[2] + m[3] + arg0);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.5 0.75 1.0 1.25
+
+uniform dmat4 m 0.25 0.0 0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 1.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,37 @@
+# test indirect access to a temporary array of doubles as a source
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ double d[4];
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(d[0] + arg0, d[1], d[2], d[3]);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 0.0 0.0
+uniform double d[0] 0.0
+uniform double d[1] 1.0
+uniform double d[2] 0.0
+uniform double d[3] 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,45 @@
+# test indirect access to a temporary array of doubles as a source
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform int ri, gi, bi, ai;
+
+uniform ubo1 {
+ double d[4];
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(d[ri] + arg0, d[gi], d[bi], d[ai]);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 0.0 0.0
+
+uniform int ri 0
+uniform int gi 1
+uniform int bi 2
+uniform int ai 3
+
+uniform double d[0] 0.0
+uniform double d[1] 1.0
+uniform double d[2] 0.0
+uniform double d[3] 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,38 @@
+# test indirect access to a temporary array of doubles as a source
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform double arg0;
+uniform bool arg1;
+uniform double arg2;
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result;
+ if (arg1)
+ result = dvec4(arg0, arg2, 0.0, 0.0);
+ else
+ result = dvec4(arg0, arg2, 1.0, 0.0);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double tolerance 0.0
+uniform dvec4 expected 1.0 1.0 0.0 0.0
+uniform double arg0 1.0
+uniform int arg1 1
+uniform double arg2 1.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,34 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#extension GL_ARB_gpu_shader_fp64 : enable
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform double arg[7];
+out vec4 color;
+void main()
+{
+ dvec4 result = dvec4(arg[int(arg[6])] + arg0);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.65 0.65 0.65 0.65
+uniform double arg[0] 0.1
+uniform double arg[1] 0.2
+uniform double arg[2] 0.3
+uniform double arg[3] 0.4
+uniform double arg[4] 0.5
+uniform double arg[5] 0.6
+uniform double arg[6] 3.0
+draw rect -1 -1 2 2
+probe rgba 1 1 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,40 @@
+# test indirect access to a temporary array of doubles as a source
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ double r;
+ float g;
+ double b;
+ double a;
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(r + arg0, g, b, a);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 1.0 0.0
+uniform double r 0.0
+uniform float g 1.0
+uniform double b 1.0
+uniform double a 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,40 @@
+# test indirect access to a temporary array of doubles as a source
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ double r;
+ double g;
+ double b;
+ double a;
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(r + arg0, g, b, a);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 0.0 0.0
+uniform double r 0.0
+uniform double g 1.0
+uniform double b 0.0
+uniform double a 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,32 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#extension GL_ARB_gpu_shader_fp64 : enable
+
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform dvec4 arg[7];
+out vec4 color;
+void main()
+{
+ dvec4 result = dvec4(arg[int(arg[6].w)]);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double tolerance 0.0
+uniform dvec4 expected 0.40 0.41 0.42 0.43
+uniform dvec4 arg[0] 0.10 0.11 0.12 0.13
+uniform dvec4 arg[1] 0.20 0.21 0.22 0.23
+uniform dvec4 arg[2] 0.30 0.31 0.32 0.33
+uniform dvec4 arg[3] 0.40 0.41 0.42 0.43
+uniform dvec4 arg[4] 0.50 0.51 0.52 0.53
+uniform dvec4 arg[5] 0.60 0.61 0.62 0.63
+uniform dvec4 arg[6] 0.70 0.71 0.72 3.00
+draw rect -1 -1 2 2
+probe rgba 1 1 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,56 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+struct S1 {
+ double r;
+};
+
+struct S2 {
+ float p1;
+ double r;
+ double g;
+ double b;
+ float p2;
+ double a;
+};
+
+struct S {
+ S1 s1;
+ S2 s2;
+};
+
+uniform ubo1 {
+ S s;
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(s.s1.r + arg0, s.s2.g, s.s2.b, s.s2.a);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 0.0 0.0
+uniform double s.s1.r 0.0
+uniform float s.s2.p1 1.0
+uniform double s.s2.g 1.0
+uniform double s.s2.b 0.0
+uniform float s.s2.p2 1.0
+uniform double s.s2.a 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,38 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#extension GL_ARB_gpu_shader_fp64 : enable
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ double d1;
+ dvec2 d2;
+ dvec3 d3;
+ dvec4 d4;
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(d1, d2.y, d3.z, d4.w + arg0);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.1 0.3 0.6 1.25
+uniform double d1 0.1
+uniform dvec2 d2 0.2 0.3
+uniform dvec3 d3 0.4 0.5 0.6
+uniform dvec4 d4 0.7 0.8 0.9 1.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
\ No newline at end of file
new file mode 100644
@@ -0,0 +1,38 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#extension GL_ARB_gpu_shader_fp64 : enable
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform int index;
+uniform ubo1 {
+ double data[8];
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(data[index] + arg0);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.55 0.55 0.55 0.55
+uniform int index 2
+uniform double data[0] 0.1
+uniform double data[1] 0.2
+uniform double data[2] 0.3
+uniform double data[3] 0.4
+
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,34 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#extension GL_ARB_gpu_shader_fp64 : enable
+
+uniform double tolerance;
+uniform dvec4 expected;
+uniform int index;
+uniform ubo1 {
+ dvec4 data[4];
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = data[index];
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double tolerance 0.0
+uniform dvec4 expected 0.30 0.31 0.32 0.33
+uniform int index 2
+uniform dvec4 data[0] 0.10 0.11 0.12 0.13
+uniform dvec4 data[1] 0.20 0.21 0.22 0.23
+uniform dvec4 data[2] 0.30 0.31 0.32 0.33
+uniform dvec4 data[3] 0.40 0.41 0.42 0.43
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,37 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#extension GL_ARB_gpu_shader_fp64 : enable
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform int index;
+uniform ubo1 {
+ dvec4 data[4];
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(data[index].z + arg0);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.47 0.47 0.47 0.47
+uniform int index 1
+uniform dvec4 data[0] 0.10 0.11 0.12 0.13
+uniform dvec4 data[1] 0.20 0.21 0.22 0.23
+uniform dvec4 data[2] 0.30 0.31 0.32 0.33
+uniform dvec4 data[3] 0.40 0.41 0.42 0.43
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,52 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader passthrough]
+
+[fragment shader]
+#extension GL_ARB_gpu_shader_fp64 : enable
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+struct S {
+ double d1[2];
+ dvec3 d3[2];
+};
+
+uniform int index1;
+uniform int index2;
+uniform ubo1 {
+ S data[2];
+};
+
+out vec4 color;
+
+void main()
+{
+ dvec4 result = dvec4(data[index1].d3[index2], arg0);
+ color = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.70 0.71 0.72 0.25
+
+uniform int index1 1
+uniform int index2 1
+
+uniform double data[0].d1[0] 0.0
+uniform dvec3 data[0].d1[1] 0.1
+uniform double data[0].d3[0] 0.20 0.21 0.22
+uniform dvec3 data[0].d3[1] 0.30 0.31 0.32
+
+uniform double data[1].d1[0] 0.4
+uniform dvec3 data[1].d1[1] 0.5
+uniform double data[1].d3[0] 0.60 0.61 0.62
+uniform dvec3 data[1].d3[1] 0.70 0.71 0.72
+
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
\ No newline at end of file
new file mode 100644
@@ -0,0 +1,69 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform int i;
+uniform ubo1 {
+ dvec4 colors[4];
+};
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 temp[4] = colors;
+ temp[0] = dvec4(1.0, 0.0, 0.0, arg0);
+ dvec4 result = temp[i];
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int j = 0; j < 3; j++) {
+ gl_Position = vertex_to_gs[j];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.0 1.0 0.0 0.0
+uniform int i 1
+uniform dvec4 colors[0] 0.0 0.0 0.0 0.0
+uniform dvec4 colors[1] 0.0 1.0 0.0 0.0
+uniform dvec4 colors[2] 0.0 1.0 1.0 0.0
+uniform dvec4 colors[3] 1.0 0.0 1.0 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,60 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ layout(row_major) dmat4 m;
+};
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result = dvec4(m[0] + m[1] + m[2] + m[3] + arg0);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.5 0.75 1.0 1.25
+uniform dmat4 m 0.25 0.0 0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 1.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,60 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ dmat4 m;
+};
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result = dvec4(m[0] + m[1] + m[2] + m[3] + arg0);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.5 0.75 1.0 1.25
+uniform dmat4 m 0.25 0.0 0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.5 0.0 0.0 0.0 0.0 0.0 1.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,63 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ double d[4];
+};
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result = dvec4(d[0] + arg0, d[1], d[2], d[3]);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 0.0 0.0
+uniform double d[0] 0.0
+uniform double d[1] 1.0
+uniform double d[2] 0.0
+uniform double d[3] 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,71 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform int ri, gi, bi, ai;
+
+uniform ubo1 {
+ double d[4];
+};
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result = dvec4(d[ri] + arg0, d[gi], d[bi], d[ai]);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 0.0 0.0
+
+uniform int ri 0
+uniform int gi 1
+uniform int bi 2
+uniform int ai 3
+
+uniform double d[0] 0.0
+uniform double d[1] 1.0
+uniform double d[2] 0.0
+uniform double d[3] 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,65 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform double arg0;
+uniform bool arg1;
+uniform double arg2;
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result;
+ if (arg1)
+ result = dvec4(arg0, arg2, 0.0, 0.0);
+ else
+ result = dvec4(arg0, arg2, 1.0, 0.0);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double tolerance 0.0
+uniform dvec4 expected 1.0 1.0 0.0 0.0
+uniform double arg0 1.0
+uniform int arg1 1
+uniform double arg2 1.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,64 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform double arg[7];
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result = dvec4(arg[int(arg[6])] + arg0);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.65 0.65 0.65 0.65
+uniform double arg[0] 0.1
+uniform double arg[1] 0.2
+uniform double arg[2] 0.3
+uniform double arg[3] 0.4
+uniform double arg[4] 0.5
+uniform double arg[5] 0.6
+uniform double arg[6] 3.0
+draw rect -1 -1 2 2
+probe rgba 1 1 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,66 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform ubo1 {
+ double r;
+ float g;
+ double b;
+ double a;
+};
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result = dvec4(r + arg0, g, b, a);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 1.0 0.0
+uniform double r 0.0
+uniform float g 1.0
+uniform double b 1.0
+uniform double a 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,62 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double tolerance;
+uniform dvec4 expected;
+
+uniform dvec4 arg[7];
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result = dvec4(arg[int(arg[6].w)]);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double tolerance 0.0
+uniform dvec4 expected 0.40 0.41 0.42 0.43
+uniform dvec4 arg[0] 0.10 0.11 0.12 0.13
+uniform dvec4 arg[1] 0.20 0.21 0.22 0.23
+uniform dvec4 arg[2] 0.30 0.31 0.32 0.33
+uniform dvec4 arg[3] 0.40 0.41 0.42 0.43
+uniform dvec4 arg[4] 0.50 0.51 0.52 0.53
+uniform dvec4 arg[5] 0.60 0.61 0.62 0.63
+uniform dvec4 arg[6] 0.70 0.71 0.72 3.00
+draw rect -1 -1 2 2
+probe rgba 1 1 0.0 1.0 0.0 1.0
new file mode 100644
@@ -0,0 +1,83 @@
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader_fp64
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_gpu_shader_fp64 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+
+uniform double arg0;
+uniform double tolerance;
+uniform dvec4 expected;
+
+struct S1 {
+ double r;
+};
+
+struct S2 {
+ float p1;
+ double r;
+ double g;
+ double b;
+ float p2;
+ double a;
+};
+
+struct S {
+ S1 s1;
+ S2 s2;
+};
+
+uniform ubo1 {
+ S s;
+};
+
+in vec4 vertex_to_gs[3];
+out vec4 v;
+
+void main()
+{
+ dvec4 result = dvec4(s.s1.r + arg0, s.s2.g, s.s2.b, s.s2.a);
+ v = distance(result, expected) <= tolerance ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 1.0, 0.0, 1.0);
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 v;
+out vec4 color;
+
+void main()
+{
+ color = v;
+}
+
+[test]
+uniform double arg0 0.25
+uniform double tolerance 0.0
+uniform dvec4 expected 0.25 1.0 0.0 0.0
+uniform double s.s1.r 0.0
+uniform float s.s2.p1 1.0
+uniform double s.s2.g 1.0
+uniform double s.s2.b 0.0
+uniform float s.s2.p2 1.0
+uniform double s.s2.a 0.0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0