Mesa (radv-wait-query-fix): radv: fix queries with WAIT_BIT returning VK_NOT_READY

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 30 19:21:51 UTC 2019


Module: Mesa
Branch: radv-wait-query-fix
Commit: 2b71b4e79374ee0243de2d83409adab05ee71c69
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b71b4e79374ee0243de2d83409adab05ee71c69

Author: Andres Rodriguez <andresx7 at gmail.com>
Date:   Sat Jul 27 09:44:44 2019 -0400

radv: fix queries with WAIT_BIT returning VK_NOT_READY

When vkGetQueryPoolResults() is called with VK_QUERY_RESULT_WAIT_BIT
set, the driver is supposed to wait for the query to become available
before returning.

Currently, radv returns once the query is indeed ready, but it returns
VK_NOT_READY. It also fails to populate the results.

The problem is a missing volatile in the secondary check for query
availability. This patch removes the secondary check altogether since it
is redundant with the preceding loop.

This bug was found with an unreleased version of SteamVR.

Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/vulkan/radv_query.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c
index 3add078e978..1bdcc998c65 100644
--- a/src/amd/vulkan/radv_query.c
+++ b/src/amd/vulkan/radv_query.c
@@ -1129,7 +1129,7 @@ VkResult radv_GetQueryPoolResults(
 			if (flags & VK_QUERY_RESULT_WAIT_BIT) {
 				while (*(volatile uint64_t *)src == TIMESTAMP_NOT_READY)
 					;
-				available = *(uint64_t *)src != TIMESTAMP_NOT_READY;
+				available = true;
 			}
 
 			if (!available && !(flags & VK_QUERY_RESULT_PARTIAL_BIT))




More information about the mesa-commit mailing list