r600: fix isoline tess factor component swapping.
authorDave Airlie <airlied@redhat.com>
Mon, 13 Nov 2017 05:40:15 +0000 (15:40 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 13 Nov 2017 20:16:06 +0000 (06:16 +1000)
As per radeonsi, the tess factor components for isolines
are reversed.

Fixes: tests/spec/arb_tessellation_shader/execution/isoline.shader_test
Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_shader.c

index c6e445744edea6229c48ed97226a851fc3e1fe7b..146c26ce1a6f8b4bc4d5c6c6599dba857c1af356 100644 (file)
@@ -2884,6 +2884,13 @@ static int r600_emit_tess_factor(struct r600_shader_ctx *ctx)
                int out_idx = i >= outer_comps ? tessinner_idx : tessouter_idx;
                int out_comp = i >= outer_comps ? i - outer_comps : i;
 
+               if (ctx->shader->tcs_prim_mode == PIPE_PRIM_LINES) {
+                       if (out_comp == 1)
+                               out_comp = 0;
+                       else if (out_comp == 0)
+                               out_comp = 1;
+               }
+
                r = single_alu_op2(ctx, ALU_OP2_ADD_INT,
                                   treg[i / 2], (2 * (i % 2)),
                                   temp_reg, 0,