radeonsi: bind shader images after DCC is disabled for image stores
This prevents an infinite recursion with a compute-based DCC decompression when it restores shader images. Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4761>
This commit is contained in:
@@ -715,12 +715,12 @@ static void si_set_shader_image(struct si_context *ctx, unsigned shader, unsigne
|
|||||||
|
|
||||||
res = si_resource(view->resource);
|
res = si_resource(view->resource);
|
||||||
|
|
||||||
if (&images->views[slot] != view)
|
|
||||||
util_copy_image_view(&images->views[slot], view);
|
|
||||||
|
|
||||||
si_set_shader_image_desc(ctx, view, skip_decompress, descs->list + si_get_image_slot(slot) * 8,
|
si_set_shader_image_desc(ctx, view, skip_decompress, descs->list + si_get_image_slot(slot) * 8,
|
||||||
descs->list + si_get_image_slot(slot + SI_NUM_IMAGES) * 8);
|
descs->list + si_get_image_slot(slot + SI_NUM_IMAGES) * 8);
|
||||||
|
|
||||||
|
if (&images->views[slot] != view)
|
||||||
|
util_copy_image_view(&images->views[slot], view);
|
||||||
|
|
||||||
if (res->b.b.target == PIPE_BUFFER || view->shader_access & SI_IMAGE_ACCESS_AS_BUFFER) {
|
if (res->b.b.target == PIPE_BUFFER || view->shader_access & SI_IMAGE_ACCESS_AS_BUFFER) {
|
||||||
images->needs_color_decompress_mask &= ~(1 << slot);
|
images->needs_color_decompress_mask &= ~(1 << slot);
|
||||||
res->bind_history |= PIPE_BIND_SHADER_IMAGE;
|
res->bind_history |= PIPE_BIND_SHADER_IMAGE;
|
||||||
|
Reference in New Issue
Block a user