diff options
author | Jason Ekstrand <[email protected]> | 2017-03-27 16:03:57 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-04-04 18:33:52 -0700 |
commit | c964f0e485dc8cb901a54bf40f1d69f503ac0a0a (patch) | |
tree | 95064276060d6e889ada789ce187c59111cb658e /src/intel/vulkan/genX_query.c | |
parent | 82573d0f752f20f76cef773de01efda8a7cc0a31 (diff) |
anv: Query the kernel for reset status
When a client causes a GPU hang (or experiences issues due to a hang in
another client) we want to let it know as soon as possible. In
particular, if it submits work with a fence and calls vkWaitForFences or
vkQueueQaitIdle and it returns VK_SUCCESS, then the client should be
able to trust the results of that rendering. In order to provide this
guarantee, we have to ask the kernel for context status in a few key
locations.
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/intel/vulkan/genX_query.c')
-rw-r--r-- | src/intel/vulkan/genX_query.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c index 3610665b6e8..7ea94044b12 100644 --- a/src/intel/vulkan/genX_query.c +++ b/src/intel/vulkan/genX_query.c @@ -143,8 +143,6 @@ VkResult genX(GetQueryPoolResults)( { ANV_FROM_HANDLE(anv_device, device, _device); ANV_FROM_HANDLE(anv_query_pool, pool, queryPool); - int64_t timeout = INT64_MAX; - int ret; assert(pool->type == VK_QUERY_TYPE_OCCLUSION || pool->type == VK_QUERY_TYPE_PIPELINE_STATISTICS || @@ -157,12 +155,9 @@ VkResult genX(GetQueryPoolResults)( return VK_SUCCESS; if (flags & VK_QUERY_RESULT_WAIT_BIT) { - ret = anv_gem_wait(device, pool->bo.gem_handle, &timeout); - if (ret == -1) { - /* We don't know the real error. */ - return vk_errorf(VK_ERROR_OUT_OF_DEVICE_MEMORY, - "gem_wait failed %m"); - } + VkResult result = anv_device_wait(device, &pool->bo, INT64_MAX); + if (result != VK_SUCCESS) + return result; } void *data_end = pData + dataSize; |