diff options
author | Dave Airlie <[email protected]> | 2017-04-21 03:17:23 +0100 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-04-25 23:24:39 +0100 |
commit | b2cedb3ea9482d3099506069204a2d226ccd54fc (patch) | |
tree | a45aea68146b8fee4706d38c67fb44a2bec76afd /src/amd/common/ac_nir_to_llvm.c | |
parent | b858cb4df8f7be9baa33d7e20347d2fe77822872 (diff) |
radv/ac: overhaul vs output/ps input routing
In order to cleanly eliminate exports rewrite the
code first to mirror how radeonsi works for now.
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/common/ac_nir_to_llvm.c')
-rw-r--r-- | src/amd/common/ac_nir_to_llvm.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 514c9e9ca35..ab929bc81fe 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -5133,8 +5133,9 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx, LLVMValueRef psize_value = NULL, layer_value = NULL, viewport_index_value = NULL; int i; - outinfo->prim_id_output = 0xffffffff; - outinfo->layer_output = 0xffffffff; + memset(outinfo->vs_output_param_offset, EXP_PARAM_UNDEFINED, + sizeof(outinfo->vs_output_param_offset)); + if (ctx->output_mask & (1ull << VARYING_SLOT_CLIP_DIST0)) { LLVMValueRef slots[8]; unsigned j; @@ -5184,20 +5185,21 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx, } else if (i == VARYING_SLOT_LAYER) { outinfo->writes_layer = true; layer_value = values[0]; - outinfo->layer_output = param_count; target = V_008DFC_SQ_EXP_PARAM + param_count; + outinfo->vs_output_param_offset[VARYING_SLOT_LAYER] = param_count; param_count++; } else if (i == VARYING_SLOT_VIEWPORT) { outinfo->writes_viewport_index = true; viewport_index_value = values[0]; continue; } else if (i == VARYING_SLOT_PRIMITIVE_ID) { - outinfo->prim_id_output = param_count; target = V_008DFC_SQ_EXP_PARAM + param_count; + outinfo->vs_output_param_offset[VARYING_SLOT_PRIMITIVE_ID] = param_count; param_count++; } else if (i >= VARYING_SLOT_VAR0) { outinfo->export_mask |= 1u << (i - VARYING_SLOT_VAR0); target = V_008DFC_SQ_EXP_PARAM + param_count; + outinfo->vs_output_param_offset[i] = param_count; param_count++; } |