ac/nir: fix lds store for patch outputs.
authorDave Airlie <airlied@redhat.com>
Mon, 18 Dec 2017 06:53:44 +0000 (16:53 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 18 Dec 2017 20:44:24 +0000 (06:44 +1000)
This wasn't calculating the correct value, this along with
a nir patch fixes a regression in:
dEQP-VK.tessellation.shader_input_output.barrier

Fixes: 043d14db30a (ac/nir: don't write tcs outputs to LDS that aren't read back.)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/common/ac_nir_to_llvm.c

index 69d7bead8c1fa333d74f509058ac7162bf092975..bd5748d80d526649b9a7019c1cc4eb60822fe1a5 100644 (file)
@@ -2803,7 +2803,7 @@ store_tcs_output(struct nir_to_llvm_context *ctx,
        bool store_lds = true;
 
        if (instr->variables[0]->var->data.patch) {
-               if (!(ctx->tcs_patch_outputs_read & (1U << instr->variables[0]->var->data.location)))
+               if (!(ctx->tcs_patch_outputs_read & (1U << (instr->variables[0]->var->data.location - VARYING_SLOT_PATCH0))))
                        store_lds = false;
        } else {
                if (!(ctx->tcs_outputs_read & (1ULL << instr->variables[0]->var->data.location)))