Mesa (master): ac/nir_to_llvm: fix component packing for double outputs

Timothy Arceri tarceri at kemper.freedesktop.org
Tue Mar 27 23:00:09 UTC 2018


Module: Mesa
Branch: master
Commit: 51f175028dcc69e055d7e612024f7bfe79d7ed5d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=51f175028dcc69e055d7e612024f7bfe79d7ed5d

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Wed Mar 21 12:23:08 2018 +1100

ac/nir_to_llvm: fix component packing for double outputs

We need to wait until after the writemask is widened before we
adjust it for component packing.

Together with the previous patch this fixes a number of
arb_enhanced_layouts component layout piglit tests.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/amd/common/ac_nir_to_llvm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index b7d29ef0b5..0d85d047cd 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -1793,7 +1793,7 @@ visit_store_var(struct ac_nir_context *ctx,
 	int idx = instr->variables[0]->var->data.driver_location;
 	unsigned comp = instr->variables[0]->var->data.location_frac;
 	LLVMValueRef src = ac_to_float(&ctx->ac, get_src(ctx, instr->src[0]));
-	int writemask = instr->const_index[0] << comp;
+	int writemask = instr->const_index[0];
 	LLVMValueRef indir_index;
 	unsigned const_index;
 	get_deref_offset(ctx, instr->variables[0], false,
@@ -1808,6 +1808,8 @@ visit_store_var(struct ac_nir_context *ctx,
 		writemask = widen_mask(writemask, 2);
 	}
 
+	writemask = writemask << comp;
+
 	switch (instr->variables[0]->var->data.mode) {
 	case nir_var_shader_out:
 




More information about the mesa-commit mailing list