diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c index 8458213d078..83ac5ee7c27 100644 --- a/src/intel/vulkan/genX_query.c +++ b/src/intel/vulkan/genX_query.c @@ -2066,10 +2066,17 @@ genX(CmdWriteAccelerationStructuresPropertiesKHR)( ANV_FROM_HANDLE(anv_cmd_buffer, cmd_buffer, commandBuffer); ANV_FROM_HANDLE(anv_query_pool, pool, queryPool); - anv_add_pending_pipe_bits(cmd_buffer, - ANV_PIPE_END_OF_PIPE_SYNC_BIT | - ANV_PIPE_DATA_CACHE_FLUSH_BIT, - "read BVH data using CS"); + /* L1/L2 caches flushes should have been dealt with by pipeline barriers. + * Unfortunately some platforms require L3 flush because CS (reading the + * dispatch parameters) is not L3 coherent. + */ + if (!ANV_DEVINFO_HAS_COHERENT_L3_CS(cmd_buffer->device->info)) { + anv_add_pending_pipe_bits(cmd_buffer, + ANV_PIPE_END_OF_PIPE_SYNC_BIT | + ANV_PIPE_DATA_CACHE_FLUSH_BIT, + "read BVH data using CS"); + genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer); + } if (append_query_clear_flush( cmd_buffer, pool,