mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 20:10:17 +01:00
radeon/llvm: add support to fetch temps as vectors
Necessary for texture fetches with temp regs as source on SI. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
b6051bc785
commit
4444b9d1ec
1 changed files with 11 additions and 1 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue