Module: Mesa
Branch: 9.1
Commit: 93f61addb5c70c5bb9661384da341fc4054b1e68
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=93f61addb5c70c5bb9661384da341fc4054b1e68

Author: Michel Dänzer <[email protected]>
Date:   Wed Feb  6 15:43:10 2013 +0100

radeonsi: Use unique names for referring to texture sampling intrinsics.

Append the overloaded vector type used for passing in the addressing
parameters.

Without this, LLVM uses the same function signature for all those types,
which cannot work.

Fixes problems e.g. with FlightGear and Red Eclipse.
(cherry picked from commit 1b3afea30de757815555d9eb1d6e72e2586d6a0c)

---

 src/gallium/drivers/radeonsi/radeonsi_shader.c |   21 ++++++++++++++++++---
 1 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c 
b/src/gallium/drivers/radeonsi/radeonsi_shader.c
index e639566..2d640f2 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_shader.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c
@@ -940,21 +940,36 @@ static void tex_fetch_args(
                        4);
 }
 
+static void build_tex_intrinsic(const struct lp_build_tgsi_action * action,
+                               struct lp_build_tgsi_context * bld_base,
+                               struct lp_build_emit_data * emit_data)
+{
+       struct lp_build_context * base = &bld_base->base;
+       char intr_name[23];
+
+       sprintf(intr_name, "%sv%ui32", action->intr_name,
+               LLVMGetVectorSize(LLVMTypeOf(emit_data->args[1])));
+
+       emit_data->output[emit_data->chan] = lp_build_intrinsic(
+               base->gallivm->builder, intr_name, emit_data->dst_type,
+               emit_data->args, emit_data->arg_count);
+}
+
 static const struct lp_build_tgsi_action tex_action = {
        .fetch_args = tex_fetch_args,
-       .emit = lp_build_tgsi_intrinsic,
+       .emit = build_tex_intrinsic,
        .intr_name = "llvm.SI.sample."
 };
 
 static const struct lp_build_tgsi_action txb_action = {
        .fetch_args = tex_fetch_args,
-       .emit = lp_build_tgsi_intrinsic,
+       .emit = build_tex_intrinsic,
        .intr_name = "llvm.SI.sampleb."
 };
 
 static const struct lp_build_tgsi_action txl_action = {
        .fetch_args = tex_fetch_args,
-       .emit = lp_build_tgsi_intrinsic,
+       .emit = build_tex_intrinsic,
        .intr_name = "llvm.SI.samplel."
 };
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to