radeonsi: clean up tex_fetch_ptrs()
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 15 Mar 2017 12:00:02 +0000 (13:00 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 15 Mar 2017 13:16:26 +0000 (14:16 +0100)
Will also help when the src sampler register will be
TGSI_FILE_CONSTANT for bindless.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_shader.c

index 4abea854aa6a762130a2125d36eaa1023b8a2aee..0a931362ceaa65ee3c161e8feeae63c42b0f429d 100644 (file)
@@ -4234,23 +4234,21 @@ static void tex_fetch_ptrs(
 {
        struct si_shader_context *ctx = si_shader_context(bld_base);
        const struct tgsi_full_instruction *inst = emit_data->inst;
+       const struct tgsi_full_src_register *reg;
        unsigned target = inst->Texture.Texture;
        unsigned sampler_src;
-       unsigned sampler_index;
        LLVMValueRef index;
 
        sampler_src = emit_data->inst->Instruction.NumSrcRegs - 1;
-       sampler_index = emit_data->inst->Src[sampler_src].Register.Index;
-
-       if (emit_data->inst->Src[sampler_src].Register.Indirect) {
-               const struct tgsi_full_src_register *reg = &emit_data->inst->Src[sampler_src];
+       reg = &emit_data->inst->Src[sampler_src];
 
+       if (reg->Register.Indirect) {
                index = get_bounded_indirect_index(ctx,
                                                   &reg->Indirect,
                                                   reg->Register.Index,
                                                   SI_NUM_SAMPLERS);
        } else {
-               index = LLVMConstInt(ctx->i32, sampler_index, 0);
+               index = LLVMConstInt(ctx->i32, reg->Register.Index, 0);
        }
 
        if (target == TGSI_TEXTURE_BUFFER)