[Mesa-dev] [PATCH 06.5/20] radeonsi: update shader image descriptor for invalidated buffer

Nicolai Hähnle nhaehnle at gmail.com
Wed Mar 16 03:04:39 UTC 2016


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

---
 src/gallium/drivers/radeonsi/si_descriptors.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index 37e49e5..10d4499 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -1094,7 +1094,27 @@ static void si_invalidate_buffer(struct pipe_context *ctx, struct pipe_resource
 		}
 	}
 
-	/* Shader images - update TODO */
+	/* Shader images */
+	for (shader = 0; shader < SI_NUM_IMAGES; ++shader) {
+		struct si_images_info *images = &sctx->images[shader];
+		unsigned mask = images->desc.enabled_mask;
+
+		while (mask) {
+			unsigned i = u_bit_scan(&mask);
+
+			if (images->views[i].resource == buf) {
+				si_desc_reset_buffer_offset(
+					ctx, images->desc.list + i * 8 + 4,
+					old_va, buf);
+				images->desc.list_dirty = true;
+
+				radeon_add_to_buffer_list(
+					&sctx->b, &sctx->b.gfx, rbuffer,
+					RADEON_USAGE_READWRITE,
+					RADEON_PRIO_SAMPLER_BUFFER);
+			}
+		}
+	}
 }
 
 /* SHADER USER DATA */
-- 
2.5.0



More information about the mesa-dev mailing list