Mesa (master): radeon/llvm: Handle LP_CHAN_ALL in emit_fetch_immediate().

Michel Dänzer daenzer at kemper.freedesktop.org
Tue Jan 22 17:58:35 UTC 2013


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

Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Mon Jan 21 19:08:24 2013 +0100

radeon/llvm: Handle LP_CHAN_ALL in emit_fetch_immediate().

Fixes piglit spec/ARB_sampler_objects/sampler-incomplete and
spec/EXT_texture_swizzle/depth_texture_mode_and_swizzle.

Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

---

 .../drivers/radeon/radeon_setup_tgsi_llvm.c        |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
index 4eb8603..c645326 100644
--- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
+++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
@@ -125,7 +125,17 @@ emit_fetch_immediate(
 	}
 
 	struct lp_build_tgsi_soa_context *bld = lp_soa_context(bld_base);
-	return LLVMConstBitCast(bld->immediates[reg->Register.Index][swizzle], ctype);
+	if (swizzle == ~0) {
+		LLVMValueRef values[TGSI_NUM_CHANNELS] = {};
+		unsigned chan;
+		for (chan = 0; chan < TGSI_NUM_CHANNELS; chan++) {
+                   values[chan] = LLVMConstBitCast(bld->immediates[reg->Register.Index][chan], ctype);
+		}
+		return lp_build_gather_values(bld_base->base.gallivm, values,
+						TGSI_NUM_CHANNELS);
+	} else {
+		return LLVMConstBitCast(bld->immediates[reg->Register.Index][swizzle], ctype);
+	}
 }
 
 static LLVMValueRef




More information about the mesa-commit mailing list