diff options
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c index c80dc8ef0ee..42cb3251e78 100644 --- a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c +++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c @@ -1821,12 +1821,16 @@ static void build_tex_intrinsic(const struct lp_build_tgsi_action *action, unsigned target = inst->Texture.Texture; if (target == TGSI_TEXTURE_BUFFER) { - emit_data->output[emit_data->chan] = + unsigned num_channels = + util_last_bit(inst->Dst[0].Register.WriteMask); + LLVMValueRef result = ac_build_buffer_load_format(&ctx->ac, emit_data->args[0], emit_data->args[2], emit_data->args[1], - 4, true); + num_channels, true); + emit_data->output[emit_data->chan] = + ac_build_expand_to_vec4(&ctx->ac, result, num_channels); return; } |