Mesa (master): radeon/llvm: fix sampler index in llvm_emit_tex

Vadim Girlin vadimg at kemper.freedesktop.org
Fri May 25 13:36:44 UTC 2012


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

Author: Vadim Girlin <vadimgirlin at gmail.com>
Date:   Fri May 25 17:27:23 2012 +0400

radeon/llvm: fix sampler index in llvm_emit_tex

Sampler index isn't a second source operand for some tgsi texture
instructions. Let's assume it's always the last.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=50230

Signed-off-by: Vadim Girlin <vadimgirlin at gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>

---

 src/gallium/drivers/r600/r600_llvm.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_llvm.c b/src/gallium/drivers/r600/r600_llvm.c
index 2ca838f..5e073e0 100644
--- a/src/gallium/drivers/r600/r600_llvm.c
+++ b/src/gallium/drivers/r600/r600_llvm.c
@@ -144,15 +144,17 @@ static void llvm_emit_tex(
 {
 	struct gallivm_state * gallivm = bld_base->base.gallivm;
 	LLVMValueRef args[6];
-	unsigned c;
+	unsigned c, sampler_src;
 
 	assert(emit_data->arg_count + 2 <= Elements(args));
 
 	for (c = 0; c < emit_data->arg_count; ++c)
 		args[c] = emit_data->args[c];
 
+	sampler_src = emit_data->inst->Instruction.NumSrcRegs-1;
+
 	args[c++] = lp_build_const_int32(gallivm,
-					emit_data->inst->Src[1].Register.Index);
+					emit_data->inst->Src[sampler_src].Register.Index);
 	args[c++] = lp_build_const_int32(gallivm,
 					emit_data->inst->Texture.Texture);
 




More information about the mesa-commit mailing list