[Piglit] [PATCH] arb_gpu_shader_fp64: emit GS output for every vertex
Andres Gomez
agomez at igalia.com
Tue Jun 14 15:53:03 UTC 2016
Because EmitVertex() will invalidate all previous output writes, we
need to set the value of the output variables for every vertex
Signed-off-by: Andres Gomez <agomez at igalia.com>
---
.../templates/gen_conversion_fp64/shader-zero-sign.geom.mako | 2 +-
.../arb_gpu_shader_fp64/execution/gs-isinf-dvec.shader_test | 11 ++++++-----
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/generated_tests/templates/gen_conversion_fp64/shader-zero-sign.geom.mako b/generated_tests/templates/gen_conversion_fp64/shader-zero-sign.geom.mako
index a4f82ba..05a4cbb 100644
--- a/generated_tests/templates/gen_conversion_fp64/shader-zero-sign.geom.mako
+++ b/generated_tests/templates/gen_conversion_fp64/shader-zero-sign.geom.mako
@@ -18,9 +18,9 @@ void main()
${to_type} pre_converted = ${converted_from};
${to_type} converted = ONE / pre_converted;
bool match = converted == to;
- fs_color = match ? GREEN : RED;
for (int i = 0; i < 3; i++) {
+ fs_color = match ? GREEN : RED;
gl_Position = vertex_to_gs[i];
EmitVertex();
}
diff --git a/tests/spec/arb_gpu_shader_fp64/execution/gs-isinf-dvec.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/gs-isinf-dvec.shader_test
index c8552ea..b7a904c 100644
--- a/tests/spec/arb_gpu_shader_fp64/execution/gs-isinf-dvec.shader_test
+++ b/tests/spec/arb_gpu_shader_fp64/execution/gs-isinf-dvec.shader_test
@@ -38,29 +38,30 @@ out vec4 fs_color;
void main()
{
- fs_color = vec4(0.0);
+ vec4 gs_color = vec4(0.0);
dvec4 r4 = multiplier*exp(exponent);
dvec4 bl4 = dvec4(isinf(r4));
if (distance(bl4, expected) > tolerance)
- fs_color.x = 1.0;
+ gs_color.x = 1.0;
dvec3 r3 = multiplier.xyz*exp(exponent.xyz);
dvec3 bl3 = dvec3(isinf(r3));
if (distance(bl3, expected.xyz) > tolerance)
- fs_color.y = 1.0;
+ gs_color.y = 1.0;
dvec2 r2 = multiplier.zw*exp(exponent.zw);
dvec2 bl2 = dvec2(isinf(r2));
if (distance(bl2, expected.zw) > tolerance)
- fs_color.z = 1.0;
+ gs_color.z = 1.0;
double r1 = multiplier.x*exp(exponent.x);
double bl1 = double(isinf(r1));
if (distance(bl1, expected.x) > tolerance)
- fs_color.w = 1.0;
+ gs_color.w = 1.0;
for (int i = 0; i < 3; i++) {
+ fs_color = gs_color;
gl_Position = vertex_to_gs[i];
EmitVertex();
}
--
2.8.1
More information about the Piglit
mailing list