anv: Properly fetch partial results in vkGetQueryPoolResults
authorBrian Ho <brian@brkho.com>
Sun, 26 Jan 2020 23:12:11 +0000 (15:12 -0800)
committerMarge Bot <eric+marge@anholt.net>
Tue, 28 Jan 2020 15:17:21 +0000 (15:17 +0000)
commitaf92ce50a7e56d313f5623136d3f09e7c76475fa
tree99b234ab243bfd7eb9acec6e81e1409ccff333db
parent7edcf4a59d060efb5ee7c31f9b8346f7c43a138d
anv: Properly fetch partial results in vkGetQueryPoolResults

Currently, fetching the partial results (VK_QUERY_RESULT_PARTIAL_BIT)
of an unavailable occlusion query via vkGetQueryPoolResults can
return invalid values. anv returns slot.end - slot.begin, but in the
case of unavailable queries, slot.end is still at the initial value
of 0. If slot.begin is non-zero, the occlusion count underflows to
a value that is likely outside the acceptable range of the partial
result.

This commit fixes vkGetQueryPoolResults by always returning 0 if the
query is unavailable and the VK_QUERY_RESULT_PARTIAL_BIT is set.

Cc: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3586>
src/intel/vulkan/genX_query.c