lavapipe: add host query reset

This just resets the queries on the host size.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9594>
This commit is contained in:
Dave Airlie 2021-03-15 08:10:36 +10:00
parent 6865ec210b
commit b0de4468c2
3 changed files with 27 additions and 1 deletions

View file

@ -466,7 +466,7 @@ Vulkan 1.2 -- all DONE: anv
VK_KHR_uniform_buffer_standard_layout DONE (anv, lvp, radv)
VK_KHR_vulkan_memory_model DONE (anv, radv)
VK_EXT_descriptor_indexing DONE (anv/gen9+, radv)
VK_EXT_host_query_reset DONE (anv, radv, tu)
VK_EXT_host_query_reset DONE (anv, lvp, radv, tu)
VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, radv, tu)
VK_EXT_scalar_block_layout DONE (anv, lvp, radv/gfx7+)
VK_EXT_separate_stencil_usage DONE (anv)

View file

@ -120,6 +120,7 @@ static const struct vk_device_extension_table lvp_device_extensions_supported =
.EXT_calibrated_timestamps = true,
.EXT_conditional_rendering = true,
.EXT_extended_dynamic_state = true,
.EXT_host_query_reset = true,
.EXT_index_type_uint8 = true,
.EXT_post_depth_coverage = true,
.EXT_private_data = true,
@ -518,6 +519,12 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceFeatures2(
features->scalarBlockLayout = true;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: {
VkPhysicalDeviceHostQueryResetFeaturesEXT *features =
(VkPhysicalDeviceHostQueryResetFeaturesEXT *)ext;
features->hostQueryReset = true;
break;
}
default:
break;
}

View file

@ -193,3 +193,22 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_GetQueryPoolResults(
}
return vk_result;
}
VKAPI_ATTR void VKAPI_CALL lvp_ResetQueryPool(
VkDevice _device,
VkQueryPool queryPool,
uint32_t firstQuery,
uint32_t queryCount)
{
LVP_FROM_HANDLE(lvp_device, device, _device);
LVP_FROM_HANDLE(lvp_query_pool, pool, queryPool);
for (uint32_t i = 0; i < queryCount; i++) {
uint32_t idx = i + firstQuery;
if (pool->queries[idx]) {
device->queue.ctx->destroy_query(device->queue.ctx, pool->queries[idx]);
pool->queries[idx] = NULL;
}
}
}