Mesa (master): radeonsi: add bitcast_inputs() helper

Timothy Arceri tarceri at kemper.freedesktop.org
Mon Jan 29 22:12:54 UTC 2018


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

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Fri Dec 15 14:13:11 2017 +1100

radeonsi: add bitcast_inputs() helper

Will be used in a following patch to help support doubles.

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

---

 src/gallium/drivers/radeonsi/si_shader_nir.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 34d28b7a72..e05548c1b8 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -644,6 +644,16 @@ si_nir_load_sampler_desc(struct ac_shader_abi *abi,
 	return si_load_sampler_desc(ctx, list, index, desc_type);
 }
 
+static void bitcast_inputs(struct si_shader_context *ctx,
+			   LLVMValueRef data[4],
+			   unsigned input_idx)
+{
+	for (unsigned chan = 0; chan < 4; chan++) {
+		ctx->inputs[input_idx + chan] =
+			LLVMBuildBitCast(ctx->ac.builder, data[chan], ctx->ac.i32, "");
+	}
+}
+
 bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
 {
 	struct tgsi_shader_info *info = &ctx->shader->selector->info;
@@ -667,15 +677,14 @@ bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
 			if (processed_inputs & ((uint64_t)1 << loc))
 				continue;
 
-			if (nir->info.stage == MESA_SHADER_VERTEX)
+			if (nir->info.stage == MESA_SHADER_VERTEX) {
 				declare_nir_input_vs(ctx, variable, data);
-			else if (nir->info.stage == MESA_SHADER_FRAGMENT)
+				bitcast_inputs(ctx, data, input_idx);
+			} else if (nir->info.stage == MESA_SHADER_FRAGMENT) {
 				declare_nir_input_fs(ctx, variable, input_idx / 4, data);
-
-			for (unsigned chan = 0; chan < 4; chan++) {
-				ctx->inputs[input_idx + chan] =
-					LLVMBuildBitCast(ctx->ac.builder, data[chan], ctx->ac.i32, "");
+				bitcast_inputs(ctx, data, input_idx);
 			}
+
 			processed_inputs |= ((uint64_t)1 << loc);
 		}
 	}




More information about the mesa-commit mailing list