From: Marek Olšák <marek.ol...@amd.com>

---
 src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c 
b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c
index 81df73ea9b1..979e47d3cc4 100644
--- a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c
+++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c
@@ -491,22 +491,21 @@ static void load_emit(
        if (inst->Src[0].Register.File == TGSI_FILE_MEMORY) {
                load_emit_memory(ctx, emit_data);
                return;
        }
 
        if (inst->Src[0].Register.File == TGSI_FILE_BUFFER ||
            inst->Src[0].Register.File == TGSI_FILE_CONSTBUF) {
                bool ubo = inst->Src[0].Register.File == TGSI_FILE_CONSTBUF;
                args.resource = shader_buffer_fetch_rsrc(ctx, &inst->Src[0], 
ubo);
                voffset = ac_to_integer(&ctx->ac, lp_build_emit_fetch(bld_base, 
inst, 1, 0));
-       } else if (inst->Src[0].Register.File == TGSI_FILE_IMAGE ||
-                  tgsi_is_bindless_image_file(inst->Src[0].Register.File)) {
+       } else {
                unsigned target = inst->Memory.Texture;
 
                image_fetch_rsrc(bld_base, &inst->Src[0], false, target, 
&args.resource);
                image_fetch_coords(bld_base, inst, 1, args.resource, 
args.coords);
                vindex = args.coords[0]; /* for buffers only */
        }
 
        if (inst->Src[0].Register.File == TGSI_FILE_CONSTBUF) {
                emit_data->output[emit_data->chan] =
                        ac_build_buffer_load(&ctx->ac, args.resource,
@@ -678,46 +677,43 @@ static void store_emit(
        if (inst->Dst[0].Register.File == TGSI_FILE_MEMORY) {
                store_emit_memory(ctx, emit_data);
                return;
        }
 
        bool writeonly_memory = is_oneway_access_only(inst, info,
                                                      info->shader_buffers_load 
|
                                                      
info->shader_buffers_atomic,
                                                      info->images_load |
                                                      info->images_atomic);
-       bool is_image = inst->Dst[0].Register.File == TGSI_FILE_IMAGE ||
-                       tgsi_is_bindless_image_file(inst->Dst[0].Register.File);
        LLVMValueRef chans[4], value;
        LLVMValueRef vindex = ctx->i32_0;
        LLVMValueRef voffset = ctx->i32_0;
        struct ac_image_args args = {};
 
        for (unsigned chan = 0; chan < 4; ++chan)
                chans[chan] = lp_build_emit_fetch(bld_base, inst, 1, chan);
 
        value = ac_build_gather_values(&ctx->ac, chans, 4);
 
        if (inst->Dst[0].Register.File == TGSI_FILE_BUFFER) {
                args.resource = shader_buffer_fetch_rsrc(ctx, &resource_reg, 
false);
                voffset = ac_to_integer(&ctx->ac, lp_build_emit_fetch(bld_base, 
inst, 0, 0));
-       } else if (is_image) {
+       } else {
                image_fetch_rsrc(bld_base, &resource_reg, true, target, 
&args.resource);
                image_fetch_coords(bld_base, inst, 0, args.resource, 
args.coords);
                vindex = args.coords[0]; /* for buffers only */
-       } else {
-               unreachable("unexpected register file");
        }
 
        if (inst->Memory.Qualifier & TGSI_MEMORY_VOLATILE)
                ac_build_waitcnt(&ctx->ac, VM_CNT);
 
+       bool is_image = inst->Dst[0].Register.File != TGSI_FILE_BUFFER;
        args.cache_policy = get_cache_policy(ctx, inst,
                                             false, /* atomic */
                                             is_image, /* may_store_unaligned */
                                             writeonly_memory);
 
        if (inst->Dst[0].Register.File == TGSI_FILE_BUFFER) {
                store_emit_buffer(ctx, args.resource, 
inst->Dst[0].Register.WriteMask,
                                  value, voffset, args.cache_policy, 
writeonly_memory);
                return;
        }
@@ -848,22 +844,21 @@ static void atomic_emit(
                        ac_to_integer(&ctx->ac, lp_build_emit_fetch(bld_base, 
inst, 3, 0));
        }
 
        args.data[num_data++] =
                ac_to_integer(&ctx->ac, lp_build_emit_fetch(bld_base, inst, 2, 
0));
        args.cache_policy = get_cache_policy(ctx, inst, true, false, false);
 
        if (inst->Src[0].Register.File == TGSI_FILE_BUFFER) {
                args.resource = shader_buffer_fetch_rsrc(ctx, &inst->Src[0], 
false);
                voffset = ac_to_integer(&ctx->ac, lp_build_emit_fetch(bld_base, 
inst, 1, 0));
-       } else if (inst->Src[0].Register.File == TGSI_FILE_IMAGE ||
-                  tgsi_is_bindless_image_file(inst->Src[0].Register.File)) {
+       } else {
                image_fetch_rsrc(bld_base, &inst->Src[0], true,
                                inst->Memory.Texture, &args.resource);
                image_fetch_coords(bld_base, inst, 1, args.resource, 
args.coords);
                vindex = args.coords[0]; /* for buffers only */
        }
 
        if (HAVE_LLVM >= 0x0800 &&
            inst->Src[0].Register.File != TGSI_FILE_BUFFER &&
            inst->Memory.Texture == TGSI_TEXTURE_BUFFER) {
                LLVMValueRef buf_args[7];
-- 
2.17.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to