anv/query: Let 32-bit values wrap
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 15 Mar 2017 23:43:54 +0000 (16:43 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 17 Mar 2017 19:11:35 +0000 (12:11 -0700)
From the Vulkan 1.0.39 Specification:

   "If VK_QUERY_RESULT_64_BIT is not set and the result overflows a
   32-bit value, the value may either wrap or saturate."

So we can either clamp or wrap.  Wrapping is both easier and what the
user gets if they use vkCmdCopyQueryPoolResults and we should be
consistent.  We could make vkCmdCopyQueryPoolResults clamp but it's
annoying and ends up burning extra batch for something the spec clearly
doesn't require.

Reviewed-By: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/intel/vulkan/genX_query.c

index b5955d341bfcee5476f6cc6e111e5dd9aad4ee8b..144ca3b4c635a72b64e738b7c7d7a7cbe3fe50df 100644 (file)
@@ -181,8 +181,6 @@ VkResult genX(GetQueryPoolResults)(
             dst[1] = slot[firstQuery + i].available;
       } else {
          uint32_t *dst = pData;
-         if (result > UINT32_MAX)
-            result = UINT32_MAX;
          if (write_results)
             dst[0] = result;
          if (flags & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT)