diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index 6a4dcacc0f3..ca25d424fb5 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -1719,7 +1719,8 @@ void si_rebind_buffer(struct si_context *sctx, struct pipe_resource *buf) unsigned i = u_bit_scan(&mask); struct pipe_resource *buffer = samplers->views[i]->texture; - if (buffer && (!buf || buffer == buf)) { + if (buffer && buffer->target == PIPE_BUFFER && + (!buf || buffer == buf)) { unsigned desc_slot = si_get_sampler_slot(i); si_set_buf_desc_address(si_resource(buffer), @@ -1749,7 +1750,8 @@ void si_rebind_buffer(struct si_context *sctx, struct pipe_resource *buf) unsigned i = u_bit_scan(&mask); struct pipe_resource *buffer = images->views[i].resource; - if (buffer && (!buf || buffer == buf)) { + if (buffer && buffer->target == PIPE_BUFFER && + (!buf || buffer == buf)) { unsigned desc_slot = si_get_image_slot(i); if (images->views[i].access & PIPE_IMAGE_ACCESS_WRITE) @@ -1780,7 +1782,8 @@ void si_rebind_buffer(struct si_context *sctx, struct pipe_resource *buf) unsigned desc_slot = (*tex_handle)->desc_slot; struct pipe_resource *buffer = view->texture; - if (buffer && (!buf || buffer == buf)) { + if (buffer && buffer->target == PIPE_BUFFER && + (!buf || buffer == buf)) { si_set_buf_desc_address(si_resource(buffer), view->u.buf.offset, descs->list + @@ -1807,7 +1810,8 @@ void si_rebind_buffer(struct si_context *sctx, struct pipe_resource *buf) unsigned desc_slot = (*img_handle)->desc_slot; struct pipe_resource *buffer = view->resource; - if (buffer && (!buf || buffer == buf)) { + if (buffer && buffer->target == PIPE_BUFFER && + (!buf || buffer == buf)) { if (view->access & PIPE_IMAGE_ACCESS_WRITE) si_mark_image_range_valid(view);