[Mesa-dev] [PATCH 09/10] radeonsi: emit param exports after position exports

Marek Olšák maraeo at gmail.com
Sat Jul 8 00:42:18 UTC 2017


From: Marek Olšák <marek.olsak at amd.com>

---
 src/gallium/drivers/radeonsi/si_shader.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 71e84ce..4b2995f 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -2341,23 +2341,20 @@ static void si_llvm_export_vs(struct lp_build_tgsi_context *bld_base,
 			break;
 		case TGSI_SEMANTIC_CLIPVERTEX:
 			if (!shader->key.opt.clip_disable) {
 				si_llvm_emit_clipvertex(bld_base, pos_args,
 							outputs[i].values);
 			}
 			break;
 		}
 	}
 
-	/* Build parameter exports. */
-	si_build_param_exports(ctx, outputs, noutput);
-
 	/* We need to add the position output manually if it's missing. */
 	if (!pos_args[0].out[0]) {
 		pos_args[0].enabled_channels = 0xf; /* writemask */
 		pos_args[0].valid_mask = 0; /* EXEC mask */
 		pos_args[0].done = 0; /* last export? */
 		pos_args[0].target = V_008DFC_SQ_EXP_POS;
 		pos_args[0].compr = 0; /* COMPR flag */
 		pos_args[0].out[0] = base->zero; /* X */
 		pos_args[0].out[1] = base->zero; /* Y */
 		pos_args[0].out[2] = base->zero; /* Z */
@@ -2442,20 +2439,23 @@ static void si_llvm_export_vs(struct lp_build_tgsi_context *bld_base,
 
 		/* Specify the target we are exporting */
 		pos_args[i].target = V_008DFC_SQ_EXP_POS + pos_idx++;
 
 		if (pos_idx == shader->info.nr_pos_exports)
 			/* Specify that this is the last export */
 			pos_args[i].done = 1;
 
 		ac_build_export(&ctx->ac, &pos_args[i]);
 	}
+
+	/* Build parameter exports. */
+	si_build_param_exports(ctx, outputs, noutput);
 }
 
 /**
  * Forward all outputs from the vertex shader to the TES. This is only used
  * for the fixed function TCS.
  */
 static void si_copy_tcs_inputs(struct lp_build_tgsi_context *bld_base)
 {
 	struct si_shader_context *ctx = si_shader_context(bld_base);
 	struct gallivm_state *gallivm = &ctx->gallivm;
-- 
2.7.4



More information about the mesa-dev mailing list