diff options
author | Marek Olšák <[email protected]> | 2014-09-20 11:48:58 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-09-24 14:48:02 +0200 |
commit | 604b58b554f00ab9eb06eff47bfd4f859424c0ae (patch) | |
tree | 5653a243199e7b620a3970d1e1865e6d58f83d52 /src/gallium/drivers/radeonsi/si_compute.c | |
parent | 628f8ee1d9dac7d88f6826242b8fb1f271b98efa (diff) |
radeonsi/compute: flush caches with si_emit_cache_flush
Reviewed-by: Alex Deucher <[email protected]>
Reviewed-by: Tom Stellard <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_compute.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_compute.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c index 3ad9182d5fe..e24c6e22bb4 100644 --- a/src/gallium/drivers/radeonsi/si_compute.c +++ b/src/gallium/drivers/radeonsi/si_compute.c @@ -189,17 +189,14 @@ static void si_launch_grid( radeon_emit(cs, 0x80000000); radeon_emit(cs, 0x80000000); - pm4->compute_pkt = true; - - si_pm4_cmd_begin(pm4, PKT3_EVENT_WRITE); - si_pm4_cmd_add(pm4, EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH) | - EVENT_INDEX(0x7) | - EVENT_WRITE_INV_L2); - si_pm4_cmd_end(pm4, false); + sctx->b.flags |= R600_CONTEXT_INV_TEX_CACHE | + R600_CONTEXT_INV_SHADER_CACHE | + R600_CONTEXT_INV_CONST_CACHE | + R600_CONTEXT_FLUSH_WITH_INV_L2 | + R600_CONTEXT_FLAG_COMPUTE; + si_emit_cache_flush(&sctx->b, NULL); - si_pm4_inval_texture_cache(pm4); - si_pm4_inval_shader_cache(pm4); - si_cmd_surface_sync(pm4, pm4->cp_coher_cntl); + pm4->compute_pkt = true; /* Upload the kernel arguments */ @@ -368,10 +365,6 @@ static void si_launch_grid( si_pm4_cmd_add(pm4, EVENT_TYPE(V_028A90_CS_PARTIAL_FLUSH | EVENT_INDEX(0x4))); si_pm4_cmd_end(pm4, false); - si_pm4_inval_texture_cache(pm4); - si_pm4_inval_shader_cache(pm4); - si_cmd_surface_sync(pm4, pm4->cp_coher_cntl); - si_pm4_emit(sctx, pm4); #if 0 @@ -382,6 +375,12 @@ static void si_launch_grid( #endif si_pm4_free_state(sctx, pm4, ~0); + + sctx->b.flags |= R600_CONTEXT_INV_TEX_CACHE | + R600_CONTEXT_INV_SHADER_CACHE | + R600_CONTEXT_INV_CONST_CACHE | + R600_CONTEXT_FLAG_COMPUTE; + si_emit_cache_flush(&sctx->b, NULL); } |