Module: Mesa Branch: main Commit: 34cc37910f362dd8d51ef47de0ca592f0e42571a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=34cc37910f362dd8d51ef47de0ca592f0e42571a
Author: Yiwei Zhang <[email protected]> Date: Mon May 1 16:58:11 2023 +0000 radv: respect VK_QUERY_RESULT_WAIT_BIT in GetQueryPoolResults The flag was ignored for VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT and VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT. Cc: mesa-stable Signed-off-by: Yiwei Zhang <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22781> --- src/amd/vulkan/radv_query.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index 77851e2ae20..1dbf3c20572 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -1384,11 +1384,13 @@ radv_GetQueryPoolResults(VkDevice _device, VkQueryPool queryPool, uint32_t first * u64 PrimitiveStorageNeeded; * } */ - available = 1; - for (int j = 0; j < 4; j++) { - if (!(p_atomic_read(src64 + j) & 0x8000000000000000UL)) - available = 0; - } + do { + available = 1; + for (int j = 0; j < 4; j++) { + if (!(p_atomic_read(src64 + j) & 0x8000000000000000UL)) + available = 0; + } + } while (!available && (flags & VK_QUERY_RESULT_WAIT_BIT)); if (!available && !(flags & VK_QUERY_RESULT_PARTIAL_BIT)) result = VK_NOT_READY; @@ -1423,11 +1425,13 @@ radv_GetQueryPoolResults(VkDevice _device, VkQueryPool queryPool, uint32_t first * u64 PrimitiveStorageNeeded; * } */ - available = 1; - if (!(p_atomic_read(src64 + 0) & 0x8000000000000000UL) || - !(p_atomic_read(src64 + 2) & 0x8000000000000000UL)) { - available = 0; - } + do { + available = 1; + if (!(p_atomic_read(src64 + 0) & 0x8000000000000000UL) || + !(p_atomic_read(src64 + 2) & 0x8000000000000000UL)) { + available = 0; + } + } while (!available && (flags & VK_QUERY_RESULT_WAIT_BIT)); if (!available && !(flags & VK_QUERY_RESULT_PARTIAL_BIT)) result = VK_NOT_READY;
