From ca9734c2233a25ecec4d47eaaa2173364b1958c8 Mon Sep 17 00:00:00 2001 From: Vlad Schiller Date: Mon, 4 Sep 2023 12:24:05 +0100 Subject: [PATCH] pvr: Use correct index when writing query availability data The availability data would be written to a different location in the user provided buffer depending on whether the query for a given index was available. Fix this by using fixed indicies when writing the query and availability data. Fixes conformance failures seen in the dEQP-VK.query_pool.occlusion_query.get_reset_* test group when implementing VK_EXT_host_query_reset. Fixes: 279c7c6d5ad ("pvr: Implement vkGetQueryPoolResults API.") Signed-off-by: Vlad Schiller Reviewed-by: Frank Binns Part-of: --- src/imagination/vulkan/pvr_query.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/imagination/vulkan/pvr_query.c b/src/imagination/vulkan/pvr_query.c index 63c9a04ad9e..06e563b6d32 100644 --- a/src/imagination/vulkan/pvr_query.c +++ b/src/imagination/vulkan/pvr_query.c @@ -224,7 +224,6 @@ VkResult pvr_GetQueryPoolResults(VkDevice _device, for (uint32_t i = 0; i < queryCount; i++) { bool is_available = pvr_query_is_available(pool, firstQuery + i); uint64_t count = 0; - uint32_t idx = 0; if (flags & VK_QUERY_RESULT_WAIT_BIT && !is_available) { result = pvr_wait_for_available(device, pool, firstQuery + i); @@ -238,12 +237,12 @@ VkResult pvr_GetQueryPoolResults(VkDevice _device, count += query_results[pool->result_stride * j + firstQuery + i]; if (is_available || (flags & VK_QUERY_RESULT_PARTIAL_BIT)) - pvr_write_query_to_buffer(data, flags, idx++, count); + pvr_write_query_to_buffer(data, flags, 0, count); else result = VK_NOT_READY; if (flags & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT) - pvr_write_query_to_buffer(data, flags, idx++, is_available); + pvr_write_query_to_buffer(data, flags, 1, is_available); data += stride; }