radv: flush and invalidate CB before resetting query pools on GFX9
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 13 Jun 2019 08:52:02 +0000 (10:52 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 13 Jun 2019 09:23:48 +0000 (11:23 +0200)
We have to emit a CACHE_FLUSH_AND_INV_TS_EVENT to be sure all
prior GPU work is done. While we are at it, also flush and
invalidate DB.

This fixes the following CTS (when the small hint is disabled):
dEQP-VK.query_pool.statistics_query.reset_before_copy.*

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-By: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_query.c

index 3bbd10cbb34959fec872378a0de86f68ade26514..bec7b23af058587f8131bb6c03972edc38faeccc 100644 (file)
@@ -1641,6 +1641,10 @@ static void emit_end_query(struct radv_cmd_buffer *cmd_buffer,
                                               RADV_CMD_FLAG_CS_PARTIAL_FLUSH |
                                               RADV_CMD_FLAG_INV_GLOBAL_L2 |
                                               RADV_CMD_FLAG_INV_VMEM_L1;
+       if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9) {
+               cmd_buffer->active_query_flush_bits |= RADV_CMD_FLAG_FLUSH_AND_INV_CB |
+                                                      RADV_CMD_FLAG_FLUSH_AND_INV_DB;
+       }
 }
 
 void radv_CmdBeginQueryIndexedEXT(