Module: Mesa
Branch: staging/19.1
Commit: 60d524fd39155fc9d3343b61bd0e21da790ef8c9
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=60d524fd39155fc9d3343b61bd0e21da790ef8c9

Author: Marek Olšák <[email protected]>
Date:   Tue May 21 14:26:13 2019 -0400

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: 78e35df52aa2f7d770f929a0866a0faa89c261a9 "radeonsi: update buffer 
descriptors in all contexts after buffer invalidation"

Cc: 19.1 <[email protected]>
Tested-By: Gert Wollny <[email protected]>
(cherry picked from commit d6053bf2a170a0fec6d232fda097d2f35f0e9eae)

---

 src/gallium/drivers/radeonsi/si_descriptors.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

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

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to