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>
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)
.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,
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;
}
}
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;
+ }
+ }
+}