Will be used in a following patch to help support doubles.
---
 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 2d0e3e207e..fa61f42830 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -610,6 +610,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;
@@ -633,15 +643,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);
                }
        }
-- 
2.14.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to