From 2fe07933bd5385f731b490ba22ee2086bfccfe63 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 28 Feb 2018 20:22:29 +0100 Subject: [PATCH] radv: keep track of the query pool size Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen --- src/amd/vulkan/radv_private.h | 1 + src/amd/vulkan/radv_query.c | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index b76d2eb5cbb..752b6a75922 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1606,6 +1606,7 @@ struct radv_query_pool { struct radeon_winsys_bo *bo; uint32_t stride; uint32_t availability_offset; + uint64_t size; char *ptr; VkQueryType type; uint32_t pipeline_stats_mask; diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index b1393a2ec77..ff2782bae89 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -748,7 +748,6 @@ VkResult radv_CreateQueryPool( VkQueryPool* pQueryPool) { RADV_FROM_HANDLE(radv_device, device, _device); - uint64_t size; struct radv_query_pool *pool = vk_alloc2(&device->alloc, pAllocator, sizeof(*pool), 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); @@ -774,12 +773,12 @@ VkResult radv_CreateQueryPool( pool->type = pCreateInfo->queryType; pool->pipeline_stats_mask = pCreateInfo->pipelineStatistics; pool->availability_offset = pool->stride * pCreateInfo->queryCount; - size = pool->availability_offset; + pool->size = pool->availability_offset; if (pCreateInfo->queryType == VK_QUERY_TYPE_TIMESTAMP || pCreateInfo->queryType == VK_QUERY_TYPE_PIPELINE_STATISTICS) - size += 4 * pCreateInfo->queryCount; + pool->size += 4 * pCreateInfo->queryCount; - pool->bo = device->ws->buffer_create(device->ws, size, + pool->bo = device->ws->buffer_create(device->ws, pool->size, 64, RADEON_DOMAIN_GTT, RADEON_FLAG_NO_INTERPROCESS_SHARING); if (!pool->bo) { @@ -794,7 +793,7 @@ VkResult radv_CreateQueryPool( vk_free2(&device->alloc, pAllocator, pool); return vk_error(VK_ERROR_OUT_OF_DEVICE_MEMORY); } - memset(pool->ptr, 0, size); + memset(pool->ptr, 0, pool->size); *pQueryPool = radv_query_pool_to_handle(pool); return VK_SUCCESS; -- 2.30.2