From 3a527eda7ceee37643f948bfcf05285c5aa3a4d6 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 20 Dec 2019 13:33:42 +0100 Subject: [PATCH] radeonsi: unbind image before compute clear MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit It's not used and avoid infinite recursion when used from si_compute_expand_fmask Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_compute_blit.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_compute_blit.c b/src/gallium/drivers/radeonsi/si_compute_blit.c index b75d4daa7cd..967e9ee7d7f 100644 --- a/src/gallium/drivers/radeonsi/si_compute_blit.c +++ b/src/gallium/drivers/radeonsi/si_compute_blit.c @@ -173,6 +173,10 @@ static void si_compute_do_clear_or_copy(struct si_context *sctx, void *saved_cs = sctx->cs_shader_state.program; struct pipe_shader_buffer saved_sb[2] = {}; si_get_shader_buffers(sctx, PIPE_SHADER_COMPUTE, 0, src ? 2 : 1, saved_sb); + struct pipe_image_view saved_image = {0}; + util_copy_image_view(&saved_image, &sctx->images[PIPE_SHADER_COMPUTE].views[0]); + struct pipe_image_view image = {0}; + ctx->set_shader_images(ctx, PIPE_SHADER_COMPUTE, 0, 1, &image); unsigned saved_writable_mask = 0; for (unsigned i = 0; i < (src ? 2 : 1); i++) { @@ -254,6 +258,7 @@ static void si_compute_do_clear_or_copy(struct si_context *sctx, ctx->bind_compute_state(ctx, saved_cs); ctx->set_shader_buffers(ctx, PIPE_SHADER_COMPUTE, 0, src ? 2 : 1, saved_sb, saved_writable_mask); + ctx->set_shader_images(ctx, PIPE_SHADER_COMPUTE, 0, 1, &saved_image); si_compute_internal_end(sctx); for (int i = 0; i < 2; i++) pipe_resource_reference(&saved_sb[i].buffer, NULL); -- 2.30.2