[Piglit] [PATCH 1/5] Test explicit and implicit bulk assignment of gl_ClipDistance.

Paul Berry stereotype441 at gmail.com
Fri Sep 23 18:54:15 PDT 2011


These tests verify that gl_ClipDistance works properly under the
following conditions:
- When it appears (undereferenced) on the LHS or RHS of an assignment.
- When it is passed (undereferenced) to a function.
- When the return value of a function is assigned to it (undereferenced).

These cases are important to test because some hardware packs
gl_ClipDistance into an array of 2 vec4's, whereas it appears in GLSL
as an array of 8 floats, so bulk assignment to and from
gl_ClipDistance may require packing and unpacking the array.

Tested using the nVidia proprietary Linux driver.
---
 .../vs-clip-distance-bulk-assign.shader_test       |  102 +++++++++++++++
 .../clipping/vs-clip-distance-in-param.shader_test |   95 ++++++++++++++
 .../vs-clip-distance-inout-param.shader_test       |  104 ++++++++++++++++
 .../vs-clip-distance-out-param.shader_test         |  103 ++++++++++++++++
 .../clipping/vs-clip-distance-retval.shader_test   |  129 ++++++++++++++++++++
 5 files changed, 533 insertions(+), 0 deletions(-)
 create mode 100644 tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-bulk-assign.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-in-param.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-inout-param.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-out-param.shader_test
 create mode 100644 tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-retval.shader_test

diff --git a/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-bulk-assign.shader_test b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-bulk-assign.shader_test
new file mode 100644
index 0000000..621f577
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-bulk-assign.shader_test
@@ -0,0 +1,102 @@
+# [description]
+# Verify that gl_ClipDistance works properly under bulk array assignment.
+#
+# This test initializes an array of 8 floats to represent clip
+# distances, then copies the values into gl_ClipDistance using bulk
+# array assignment, then copies the values back to an array of 8
+# floats using bulk array assignment.
+#
+# Then it checks two things:
+# - That no data was corrupted when copying the array
+# - That clipping occurred as expected
+#
+# To check that clipping occurred as expected, the 8 gl_ClipDistance
+# values are used to clip a rectangle to an octagon shape.
+#
+# The octagon is centered at (0.5, 0.5), and has a small radius
+# (distance from center to perpendicular edge) of 0.4.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+
+out float gl_ClipDistance[8];
+
+void main(void)
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+
+	// Compute 2D cordinates relative to a center point of (0.5,
+	// 0.5).
+	vec2 coord = gl_Vertex.xy - vec2(0.5, 0.5);
+
+	float pre_copy[8];
+
+	for (int i = 0; i < 8; ++i) {
+		// Compute a unit vector in the direction i*45deg from
+		// the x axis.
+		float angle = i*(3.141592653589793/4);
+		vec2 u = vec2(cos(angle), sin(angle));
+
+		// Reject points whose 2D coordinate, projected onto
+		// that unit vector, is greater than 0.4.
+		pre_copy[i] = 0.4 - dot(u, coord);
+	}
+
+	gl_ClipDistance = pre_copy;
+
+	float post_copy[8];
+	post_copy = gl_ClipDistance;
+
+	for (int i = 0; i < 8; ++i) {
+		if (pre_copy[i] != gl_ClipDistance[i]) {
+			gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0);
+			return;
+		} else if (post_copy[i] != gl_ClipDistance[i]) {
+			gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0);
+			return;
+		}
+	}
+	gl_FrontColor = vec4(0.0, 1.0, 0.0, 1.0);
+}
+
+[fragment shader]
+#version 130
+void main(void)
+{
+	gl_FragColor = gl_Color;
+}
+
+[test]
+ortho 0 1 0 1
+enable GL_CLIP_PLANE0
+enable GL_CLIP_PLANE1
+enable GL_CLIP_PLANE2
+enable GL_CLIP_PLANE3
+enable GL_CLIP_PLANE4
+enable GL_CLIP_PLANE5
+enable GL_CLIP_PLANE6
+enable GL_CLIP_PLANE7
+draw rect 0.0 0.0 1.0 1.0
+
+# Test points inside each octagon edge
+relative probe rgba (0.850, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.850) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.150, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.253) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.150) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.253) (0.0, 1.0, 0.0, 1.0)
+
+# Test points outside each octagon edge
+relative probe rgba (0.950, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.950) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.050, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.182) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.050) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.182) (0.0, 0.0, 0.0, 0.0)
diff --git a/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-in-param.shader_test b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-in-param.shader_test
new file mode 100644
index 0000000..070e971
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-in-param.shader_test
@@ -0,0 +1,95 @@
+# [description]
+# Verify that gl_ClipDistance works properly when used as a function
+# "in" parameter.
+#
+# This test sets up gl_ClipDistance to do some clipping.  Then it
+# passes gl_ClipDistance as an in parameter to a function.
+#
+# Then it checks two things:
+# - That no data was corrupted when passing the array into the function
+# - That clipping occurred as expected
+#
+# To check that clipping occurred as expected, the 8 gl_ClipDistance
+# values are used to clip a rectangle to an octagon shape.
+#
+# The octagon is centered at (0.5, 0.5), and has a small radius
+# (distance from center to perpendicular edge) of 0.4.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+
+out float gl_ClipDistance[8];
+
+vec4 foo(in float clip_distance_copy[8])
+{
+	for (int i = 0; i < 8; ++i) {
+		if (clip_distance_copy[i] != gl_ClipDistance[i]) {
+			return vec4(1.0, 0.0, 0.0, 1.0);
+		}
+	}
+	return vec4(0.0, 1.0, 0.0, 1.0);
+}
+
+void main(void)
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+
+	// Compute 2D cordinates relative to a center point of (0.5,
+	// 0.5).
+	vec2 coord = gl_Vertex.xy - vec2(0.5, 0.5);
+
+	for (int i = 0; i < 8; ++i) {
+		// Compute a unit vector in the direction i*45deg from
+		// the x axis.
+		float angle = i*(3.141592653589793/4);
+		vec2 u = vec2(cos(angle), sin(angle));
+
+		// Reject points whose 2D coordinate, projected onto
+		// that unit vector, is greater than 0.4.
+		gl_ClipDistance[i] = 0.4 - dot(u, coord);
+	}
+
+	gl_FrontColor = foo(gl_ClipDistance);
+}
+
+[fragment shader]
+#version 130
+void main(void)
+{
+	gl_FragColor = gl_Color;
+}
+
+[test]
+ortho 0 1 0 1
+enable GL_CLIP_PLANE0
+enable GL_CLIP_PLANE1
+enable GL_CLIP_PLANE2
+enable GL_CLIP_PLANE3
+enable GL_CLIP_PLANE4
+enable GL_CLIP_PLANE5
+enable GL_CLIP_PLANE6
+enable GL_CLIP_PLANE7
+draw rect 0.0 0.0 1.0 1.0
+
+# Test points inside each octagon edge
+relative probe rgba (0.850, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.850) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.150, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.253) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.150) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.253) (0.0, 1.0, 0.0, 1.0)
+
+# Test points outside each octagon edge
+relative probe rgba (0.950, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.950) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.050, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.182) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.050) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.182) (0.0, 0.0, 0.0, 0.0)
diff --git a/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-inout-param.shader_test b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-inout-param.shader_test
new file mode 100644
index 0000000..dd62b06
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-inout-param.shader_test
@@ -0,0 +1,104 @@
+# [description]
+# Verify that gl_ClipDistance works properly when used as a function
+# "inout" parameter.
+#
+# This test initializes gl_ClipDistance with the negative of the
+# desired clipping values, then calls a function which negates each
+# element of the array.
+#
+# Then it checks two things:
+# - That the desired values wound up in gl_ClipDistance
+# - That clipping occurred as expected
+#
+# To check that clipping occurred as expected, the 8 gl_ClipDistance
+# values are used to clip a rectangle to an octagon shape.
+#
+# The octagon is centered at (0.5, 0.5), and has a small radius
+# (distance from center to perpendicular edge) of 0.4.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+
+out float gl_ClipDistance[8];
+
+void foo(inout float clip_distance[8])
+{
+	for (int i = 0; i < 8; ++i) {
+		clip_distance[i] = -clip_distance[i];
+	}
+}
+
+void main(void)
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+
+	// Compute 2D cordinates relative to a center point of (0.5,
+	// 0.5).
+	vec2 coord = gl_Vertex.xy - vec2(0.5, 0.5);
+
+	float desired_values[8];
+
+	for (int i = 0; i < 8; ++i) {
+		// Compute a unit vector in the direction i*45deg from
+		// the x axis.
+		float angle = i*(3.141592653589793/4);
+		vec2 u = vec2(cos(angle), sin(angle));
+
+		// Reject points whose 2D coordinate, projected onto
+		// that unit vector, is greater than 0.4.
+		desired_values[i] = 0.4 - dot(u, coord);
+		gl_ClipDistance[i] = -desired_values[i];
+	}
+
+	foo(gl_ClipDistance);
+
+	for (int i = 0; i < 8; ++i) {
+		if (desired_values[i] != gl_ClipDistance[i]) {
+			gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0);
+			return;
+		}
+	}
+	gl_FrontColor = vec4(0.0, 1.0, 0.0, 1.0);
+}
+
+[fragment shader]
+#version 130
+void main(void)
+{
+	gl_FragColor = gl_Color;
+}
+
+[test]
+ortho 0 1 0 1
+enable GL_CLIP_PLANE0
+enable GL_CLIP_PLANE1
+enable GL_CLIP_PLANE2
+enable GL_CLIP_PLANE3
+enable GL_CLIP_PLANE4
+enable GL_CLIP_PLANE5
+enable GL_CLIP_PLANE6
+enable GL_CLIP_PLANE7
+draw rect 0.0 0.0 1.0 1.0
+
+# Test points inside each octagon edge
+relative probe rgba (0.850, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.850) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.150, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.253) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.150) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.253) (0.0, 1.0, 0.0, 1.0)
+
+# Test points outside each octagon edge
+relative probe rgba (0.950, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.950) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.050, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.182) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.050) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.182) (0.0, 0.0, 0.0, 0.0)
diff --git a/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-out-param.shader_test b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-out-param.shader_test
new file mode 100644
index 0000000..050b374
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-out-param.shader_test
@@ -0,0 +1,103 @@
+# [description]
+# Verify that gl_ClipDistance works properly when used as a function
+# "out" parameter.
+#
+# This test initializes an array of 8 floats to represent clip
+# distances, then passes them to a function which copies the values
+# into gl_ClipDistance.
+#
+# Then it checks two things:
+# - That no data was corrupted when copying the array
+# - That clipping occurred as expected
+#
+# To check that clipping occurred as expected, the 8 gl_ClipDistance
+# values are used to clip a rectangle to an octagon shape.
+#
+# The octagon is centered at (0.5, 0.5), and has a small radius
+# (distance from center to perpendicular edge) of 0.4.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+
+out float gl_ClipDistance[8];
+
+void foo(in float clip_distance_pre_copy[8], out float clip_distance[8])
+{
+	for (int i = 0; i < 8; ++i) {
+		clip_distance[i] = clip_distance_pre_copy[i];
+	}
+}
+
+void main(void)
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+
+	// Compute 2D cordinates relative to a center point of (0.5,
+	// 0.5).
+	vec2 coord = gl_Vertex.xy - vec2(0.5, 0.5);
+
+	float pre_copy[8];
+
+	for (int i = 0; i < 8; ++i) {
+		// Compute a unit vector in the direction i*45deg from
+		// the x axis.
+		float angle = i*(3.141592653589793/4);
+		vec2 u = vec2(cos(angle), sin(angle));
+
+		// Reject points whose 2D coordinate, projected onto
+		// that unit vector, is greater than 0.4.
+		pre_copy[i] = 0.4 - dot(u, coord);
+	}
+
+	foo(pre_copy, gl_ClipDistance);
+
+	for (int i = 0; i < 8; ++i) {
+		if (pre_copy[i] != gl_ClipDistance[i]) {
+			gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0);
+			return;
+		}
+	}
+	gl_FrontColor = vec4(0.0, 1.0, 0.0, 1.0);
+}
+
+[fragment shader]
+#version 130
+void main(void)
+{
+	gl_FragColor = gl_Color;
+}
+
+[test]
+ortho 0 1 0 1
+enable GL_CLIP_PLANE0
+enable GL_CLIP_PLANE1
+enable GL_CLIP_PLANE2
+enable GL_CLIP_PLANE3
+enable GL_CLIP_PLANE4
+enable GL_CLIP_PLANE5
+enable GL_CLIP_PLANE6
+enable GL_CLIP_PLANE7
+draw rect 0.0 0.0 1.0 1.0
+
+# Test points inside each octagon edge
+relative probe rgba (0.850, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.850) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.150, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.253) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.150) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.253) (0.0, 1.0, 0.0, 1.0)
+
+# Test points outside each octagon edge
+relative probe rgba (0.950, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.950) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.050, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.182) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.050) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.182) (0.0, 0.0, 0.0, 0.0)
diff --git a/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-retval.shader_test b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-retval.shader_test
new file mode 100644
index 0000000..ee34854
--- /dev/null
+++ b/tests/spec/glsl-1.30/execution/clipping/vs-clip-distance-retval.shader_test
@@ -0,0 +1,129 @@
+# [description]
+# Verify that gl_ClipDistance works properly when used as a function
+# return value.
+#
+# This test initializes an array of 8 floats to represent clip
+# distances, then returns them from a function to main, which assigns
+# the return value to gl_ClipDistance.
+#
+# Then it checks three things:
+# - That no data was corrupted when copying the array
+# - That clipping occurred as expected
+# - That the function was called exactly once
+#
+# The reason for checking that the function was called exactly once is
+# that Mesa unrolls assignments of the form
+#
+#   gl_ClipDistance = foo;
+#
+# Into a sequence of componentwise assignments:
+#
+#   gl_ClipDistance[0] = foo[0];
+#   gl_ClipDistance[1] = foo[1];
+#   ...and so on.
+#
+# We need to make sure that this unrolling doesn't cause the function
+# to be called multiple times.
+#
+# To check that clipping occurred as expected, the 8 gl_ClipDistance
+# values are used to clip a rectangle to an octagon shape.
+#
+# The octagon is centered at (0.5, 0.5), and has a small radius
+# (distance from center to perpendicular edge) of 0.4.
+
+[require]
+GLSL >= 1.30
+
+[vertex shader]
+#version 130
+
+out float gl_ClipDistance[8];
+int foo_call_count;
+
+float[8] foo(in float clip_distance_pre_copy[8])
+{
+	++foo_call_count;
+
+	float tmp[8];
+	for (int i = 0; i < 8; ++i) {
+		tmp[i] = clip_distance_pre_copy[i];
+	}
+	return tmp;
+}
+
+void main(void)
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+
+	// Compute 2D cordinates relative to a center point of (0.5,
+	// 0.5).
+	vec2 coord = gl_Vertex.xy - vec2(0.5, 0.5);
+
+	float pre_copy[8];
+
+	for (int i = 0; i < 8; ++i) {
+		// Compute a unit vector in the direction i*45deg from
+		// the x axis.
+		float angle = i*(3.141592653589793/4);
+		vec2 u = vec2(cos(angle), sin(angle));
+
+		// Reject points whose 2D coordinate, projected onto
+		// that unit vector, is greater than 0.4.
+		pre_copy[i] = 0.4 - dot(u, coord);
+	}
+
+	foo_call_count = 0;
+	gl_ClipDistance = foo(pre_copy);
+
+	if (foo_call_count != 1) {
+		gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0);
+		return;
+	}
+
+	for (int i = 0; i < 8; ++i) {
+		if (pre_copy[i] != gl_ClipDistance[i]) {
+			gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0);
+			return;
+		}
+	}
+	gl_FrontColor = vec4(0.0, 1.0, 0.0, 1.0);
+}
+
+[fragment shader]
+#version 130
+void main(void)
+{
+	gl_FragColor = gl_Color;
+}
+
+[test]
+ortho 0 1 0 1
+enable GL_CLIP_PLANE0
+enable GL_CLIP_PLANE1
+enable GL_CLIP_PLANE2
+enable GL_CLIP_PLANE3
+enable GL_CLIP_PLANE4
+enable GL_CLIP_PLANE5
+enable GL_CLIP_PLANE6
+enable GL_CLIP_PLANE7
+draw rect 0.0 0.0 1.0 1.0
+
+# Test points inside each octagon edge
+relative probe rgba (0.850, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.850) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.747) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.150, 0.500) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.253, 0.253) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.500, 0.150) (0.0, 1.0, 0.0, 1.0)
+relative probe rgba (0.747, 0.253) (0.0, 1.0, 0.0, 1.0)
+
+# Test points outside each octagon edge
+relative probe rgba (0.950, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.950) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.818) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.050, 0.500) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.182, 0.182) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.500, 0.050) (0.0, 0.0, 0.0, 0.0)
+relative probe rgba (0.818, 0.182) (0.0, 0.0, 0.0, 0.0)
-- 
1.7.6.2



More information about the Piglit mailing list