On Mon, Aug 13, 2012 at 01:29:45PM +0200, Christian König wrote: > Necessary for texture fetches with temp regs as source on SI. > Reviewed-by: Tom Stellard <[email protected]> > Signed-off-by: Christian König <[email protected]> > --- > .../drivers/radeon/radeon_setup_tgsi_llvm.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c > b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c > index 641d277..04469e2 100644 > --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c > +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c > @@ -159,11 +159,21 @@ emit_fetch_temporary( > { > struct lp_build_tgsi_soa_context *bld = lp_soa_context(bld_base); > LLVMBuilderRef builder = bld_base->base.gallivm->builder; > + if (swizzle == ~0) { > + LLVMValueRef values[TGSI_NUM_CHANNELS] = {}; > + unsigned chan; > + for (chan = 0; chan < TGSI_NUM_CHANNELS; chan++) { > + values[chan] = emit_fetch_temporary(bld_base, reg, > type, chan); > + } > + return lp_build_gather_values(bld_base->base.gallivm, values, > + TGSI_NUM_CHANNELS); > + } > + > if (reg->Register.Indirect) { > LLVMValueRef array_index = emit_array_index(bld, reg, swizzle); > LLVMValueRef ptr = LLVMBuildGEP(builder, bld->temps_array, > &array_index, > 1, ""); > - return LLVMBuildLoad(builder, ptr, ""); > + return LLVMBuildLoad(builder, ptr, ""); > } else { > LLVMValueRef temp_ptr; > temp_ptr = lp_get_temp_ptr_soa(bld, reg->Register.Index, > swizzle); > -- > 1.7.9.5 > > _______________________________________________ > mesa-dev mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
