aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2019-09-10 10:56:24 +0200
committerSamuel Pitoiset <[email protected]>2019-09-16 12:08:22 +0200
commit7314f6ef97cd3dabb75774abc6283a8813e158ca (patch)
tree733a283fb9d819648bc7940e2a269eabc3ffd859
parent2d89d8f33359eb517f9e1b4b81f2fddbe47ddfa3 (diff)
radv/gfx10: make GDS idle when leaving the IB
NGG streamout uses GDS and we have to make sure that another process isn't going to overwrite GDS while our shaders are busy. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r--src/amd/vulkan/radv_cmd_buffer.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 5b736c67ae8..f0fdad68a94 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -3615,6 +3615,13 @@ VkResult radv_EndCommandBuffer(
*/
cmd_buffer->state.flush_bits |= cmd_buffer->active_query_flush_bits;
+ /* Since NGG streamout uses GDS, we need to make GDS idle when
+ * we leave the IB, otherwise another process might overwrite
+ * it while our shaders are busy.
+ */
+ if (cmd_buffer->gds_needed)
+ cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_PS_PARTIAL_FLUSH;
+
si_emit_cache_flush(cmd_buffer);
}