summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-05-16 22:31:30 +0200
committerSamuel Pitoiset <[email protected]>2017-06-14 10:04:36 +0200
commit48fe8a6210c808669bf003b62a735c6fb4bd8742 (patch)
treeaa7907257116d9cee93c92dbc989256cf5f517a3
parent2c3a7d584095bacb129a3fbbd6ccd5eac34d1451 (diff)
radeonsi: only decompress resident textures/images when used
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 <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/gallium/drivers/radeonsi/si_blit.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index 8fdc3f268b1..9c38ae9edc8 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -792,8 +792,17 @@ static void si_decompress_textures(struct si_context *sctx, unsigned shader_mask
}
}
- si_decompress_resident_textures(sctx);
- si_decompress_resident_images(sctx);
+ if (shader_mask & u_bit_consecutive(0, SI_NUM_GRAPHICS_SHADERS)) {
+ if (sctx->uses_bindless_samplers)
+ si_decompress_resident_textures(sctx);
+ if (sctx->uses_bindless_images)
+ si_decompress_resident_images(sctx);
+ } else if (shader_mask & (1 << PIPE_SHADER_COMPUTE)) {
+ if (sctx->cs_shader_state.program->uses_bindless_samplers)
+ si_decompress_resident_textures(sctx);
+ if (sctx->cs_shader_state.program->uses_bindless_images)
+ si_decompress_resident_images(sctx);
+ }
si_check_render_feedback(sctx);
}