From 2b34985d93e7914ead00227aa2842846df3c487f Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 4 Oct 2018 10:37:09 +0200 Subject: [PATCH] radv: fix resetting the pool for timestamp queries MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Since the driver no longer uses the availability bit for timestamp queries it shouldn't reset it. Instead, it should reset the query values to UINT32_MAX. This fixes VM faults. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108164 Signed-off-by: Samuel Pitoiset Tested-by: Józef Kucia Reviewed-by: Dave Airlie --- src/amd/vulkan/radv_query.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index d607d24cfc6..41af16ba768 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -1088,20 +1088,18 @@ void radv_CmdResetQueryPool( { RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); RADV_FROM_HANDLE(radv_query_pool, pool, queryPool); + uint32_t value = pool->type == VK_QUERY_TYPE_TIMESTAMP + ? TIMESTAMP_NOT_READY : 0; uint32_t flush_bits = 0; flush_bits |= radv_fill_buffer(cmd_buffer, pool->bo, firstQuery * pool->stride, - queryCount * pool->stride, 0); - - if (pool->type == VK_QUERY_TYPE_TIMESTAMP || - pool->type == VK_QUERY_TYPE_PIPELINE_STATISTICS) { - uint32_t value = pool->type == VK_QUERY_TYPE_TIMESTAMP - ? TIMESTAMP_NOT_READY : 0; + queryCount * pool->stride, value); + if (pool->type == VK_QUERY_TYPE_PIPELINE_STATISTICS) { flush_bits |= radv_fill_buffer(cmd_buffer, pool->bo, pool->availability_offset + firstQuery * 4, - queryCount * 4, value); + queryCount * 4, 0); } if (flush_bits) { -- 2.30.2