radeonsi: accept is_store in image_fetch_rsrc instead of dcc_off
authorMarek Olšák <marek.olsak@amd.com>
Sat, 5 Nov 2016 17:32:26 +0000 (18:32 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 10 Nov 2016 17:34:55 +0000 (18:34 +0100)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_shader.c

index 391c83cbec5e7a548ea3a879bafe7d3a1d7beb32..0410a3288d59e8e4b04342decd740685c8e0a5fe 100644 (file)
@@ -3239,13 +3239,14 @@ static void
 image_fetch_rsrc(
        struct lp_build_tgsi_context *bld_base,
        const struct tgsi_full_src_register *image,
-       bool dcc_off, unsigned target,
+       bool is_store, unsigned target,
        LLVMValueRef *rsrc)
 {
        struct si_shader_context *ctx = si_shader_context(bld_base);
        LLVMValueRef rsrc_ptr = LLVMGetParam(ctx->main_fn,
                                             SI_PARAM_IMAGES);
        LLVMValueRef index, tmp;
+       bool dcc_off = target != TGSI_TEXTURE_BUFFER && is_store;
 
        assert(image->Register.File == TGSI_FILE_IMAGE);
 
@@ -3633,7 +3634,7 @@ static void store_fetch_args(
                coords = image_fetch_coords(bld_base, inst, 0);
 
                if (target == TGSI_TEXTURE_BUFFER) {
-                       image_fetch_rsrc(bld_base, &memory, false, target, &rsrc);
+                       image_fetch_rsrc(bld_base, &memory, true, target, &rsrc);
 
                        rsrc = extract_rsrc_top_half(ctx, rsrc);
                        buffer_append_args(ctx, emit_data, rsrc, coords,
@@ -3834,8 +3835,7 @@ static void atomic_fetch_args(
                unsigned target = inst->Memory.Texture;
                LLVMValueRef coords;
 
-               image_fetch_rsrc(bld_base, &inst->Src[0],
-                                target != TGSI_TEXTURE_BUFFER, target, &rsrc);
+               image_fetch_rsrc(bld_base, &inst->Src[0], true, target, &rsrc);
                coords = image_fetch_coords(bld_base, inst, 1);
 
                if (target == TGSI_TEXTURE_BUFFER) {