radv: Don't use FLAT_SHADE for constants.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Wed, 3 May 2017 17:52:12 +0000 (19:52 +0200)
committerDave Airlie <airlied@redhat.com>
Thu, 4 May 2017 00:38:14 +0000 (10:38 +1000)
Setting both offset to 0x20 and flat shade results in passthrough
mode instead of the constant.

Signed-off-by: Bas Nieuwenhuizen <basni@google.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Fixes: f205e19e4f8 "radv/ac: eliminate unused vertex shader outputs. (v2)"
src/amd/vulkan/radv_pipeline.c

index f3cba198e46eaa9ea613416599179e270444f9f7..2992df6ed435d39f551156ed60fe89d32980bff4 100644 (file)
@@ -1886,9 +1886,11 @@ static void calculate_pa_cl_vs_out_cntl(struct radv_pipeline *pipeline)
 static uint32_t offset_to_ps_input(uint32_t offset, bool flat_shade)
 {
        uint32_t ps_input_cntl;
-       if (offset <= AC_EXP_PARAM_OFFSET_31)
+       if (offset <= AC_EXP_PARAM_OFFSET_31) {
                ps_input_cntl = S_028644_OFFSET(offset);
-       else {
+               if (flat_shade)
+                       ps_input_cntl |= S_028644_FLAT_SHADE(1);
+       } else {
                /* The input is a DEFAULT_VAL constant. */
                assert(offset >= AC_EXP_PARAM_DEFAULT_VAL_0000 &&
                       offset <= AC_EXP_PARAM_DEFAULT_VAL_1111);
@@ -1896,8 +1898,6 @@ static uint32_t offset_to_ps_input(uint32_t offset, bool flat_shade)
                ps_input_cntl = S_028644_OFFSET(0x20) |
                        S_028644_DEFAULT_VAL(offset);
        }
-       if (flat_shade)
-               ps_input_cntl |= S_028644_FLAT_SHADE(1);
        return ps_input_cntl;
 }