radeonsi: fix a regression in si_rebind_buffer

Don't update non-buffer images.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110701
Fixes: 78e35df52a "radeonsi: update buffer descriptors in all contexts after buffer invalidation"

Cc: 19.1 <mesa-stable@lists.freedesktop.org>
Tested-By: Gert Wollny <gert.wollny@collabora..com>
(cherry picked from commit d6053bf2a1)
This commit is contained in:
Marek Olšák 2019-05-21 14:26:13 -04:00 committed by Juan A. Suarez Romero
parent ce2d68aace
commit 60d524fd39

View file

@ -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);