[Mesa-dev] [PATCH v2 59/64] radeonsi: only decompress resident textures/images when used

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue May 30 20:36:30 UTC 2017


When the current bound shaders don't use any bindless textures
or images, it's useless to decompress the resident resources.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/gallium/drivers/radeonsi/si_blit.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index 3aee0f4fc8..96b3cc56fc 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -793,8 +793,10 @@ void si_decompress_graphics_textures(struct si_context *sctx)
 
 	si_decompress_textures(sctx, u_bit_consecutive(0, SI_NUM_GRAPHICS_SHADERS));
 
-	si_decompress_resident_textures(sctx);
-	si_decompress_resident_images(sctx);
+	if (si_graphics_uses_bindless_samplers(sctx))
+		si_decompress_resident_textures(sctx);
+	if (si_graphics_uses_bindless_images(sctx))
+		si_decompress_resident_images(sctx);
 }
 
 void si_decompress_compute_textures(struct si_context *sctx)
@@ -804,8 +806,10 @@ void si_decompress_compute_textures(struct si_context *sctx)
 
 	si_decompress_textures(sctx, 1 << PIPE_SHADER_COMPUTE);
 
-	si_decompress_resident_textures(sctx);
-	si_decompress_resident_images(sctx);
+	if (si_compute_uses_bindless_samplers(sctx))
+		si_decompress_resident_textures(sctx);
+	if (si_compute_uses_bindless_images(sctx))
+		si_decompress_resident_images(sctx);
 }
 
 static void si_clear(struct pipe_context *ctx, unsigned buffers,
-- 
2.13.0



More information about the mesa-dev mailing list