mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 18:20:10 +01:00
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 commitd6053bf2a1)
This commit is contained in:
parent
ce2d68aace
commit
60d524fd39
1 changed files with 8 additions and 4 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue