summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-08-29 17:37:14 +0200
committerSamuel Pitoiset <[email protected]>2017-08-30 09:33:55 +0200
commit59101e771d63d3d623828a173454fdbbcb719ec3 (patch)
tree7ef5598ef998947bccbdbab8a953df07c806cf44
parenta2234614b6a7b53b4f8ba68e0bc9136e4b265d0e (diff)
radeonsi: update dirty_level_mask before dispatching
This fixes a rendering issue with Hitman when bindless textures are enabled. Fixes: 2263610827 ("radeonsi: flush DB caches only when transitioning from DB to texturing") Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/gallium/drivers/radeon/r600_pipe_common.h1
-rw-r--r--src/gallium/drivers/radeonsi/si_compute.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
index 59886ecccc6..d76d4a13841 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -569,6 +569,7 @@ struct r600_common_context {
unsigned gpu_reset_counter;
unsigned last_dirty_tex_counter;
unsigned last_compressed_colortex_counter;
+ unsigned last_num_draw_calls;
struct threaded_context *tc;
struct u_suballocator *allocator_zeroed_memory;
diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c
index 3ebd22c3c16..ca334949d77 100644
--- a/src/gallium/drivers/radeonsi/si_compute.c
+++ b/src/gallium/drivers/radeonsi/si_compute.c
@@ -782,6 +782,11 @@ static void si_launch_grid(
program->shader.compilation_failed)
return;
+ if (sctx->b.last_num_draw_calls != sctx->b.num_draw_calls) {
+ si_update_fb_dirtiness_after_rendering(sctx);
+ sctx->b.last_num_draw_calls = sctx->b.num_draw_calls;
+ }
+
si_decompress_compute_textures(sctx);
/* Add buffer sizes for memory checking in need_cs_space. */