Module: Mesa Branch: main Commit: c70687afe7a6e972b9d799c2a994195be62d8fcc URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c70687afe7a6e972b9d799c2a994195be62d8fcc
Author: Vlad Schiller <[email protected]> Date: Mon Sep 4 12:24:05 2023 +0100 pvr: Implement VK_EXT_host_query_reset Signed-off-by: Vlad Schiller <[email protected]> Reviewed-by: Matt Coster <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25783> --- docs/features.txt | 2 +- src/imagination/vulkan/pvr_device.c | 4 ++++ src/imagination/vulkan/pvr_query.c | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index 7f0e6757297..a03af715a0c 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -467,7 +467,7 @@ Vulkan 1.2 -- all DONE: anv, tu, vn VK_KHR_uniform_buffer_standard_layout DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn) VK_KHR_vulkan_memory_model DONE (anv, hasvk, lvp, radv, tu, v3dv, vn) VK_EXT_descriptor_indexing DONE (anv/gen9+, dzn, lvp, nvk, radv, tu, vn) - VK_EXT_host_query_reset DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn) + VK_EXT_host_query_reset DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn) VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, nvk, radv, tu, vn) VK_EXT_scalar_block_layout DONE (anv, dzn, hasvk, lvp, pvr, radv/gfx7+, tu, vn) VK_EXT_separate_stencil_usage DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn) diff --git a/src/imagination/vulkan/pvr_device.c b/src/imagination/vulkan/pvr_device.c index 9070be17182..e533b7ca549 100644 --- a/src/imagination/vulkan/pvr_device.c +++ b/src/imagination/vulkan/pvr_device.c @@ -184,6 +184,7 @@ static void pvr_physical_device_get_supported_extensions( .KHR_timeline_semaphore = true, .KHR_uniform_buffer_standard_layout = true, .EXT_external_memory_dma_buf = true, + .EXT_host_query_reset = true, .EXT_private_data = true, .EXT_scalar_block_layout = true, .EXT_texel_buffer_alignment = true, @@ -259,6 +260,9 @@ static void pvr_physical_device_get_supported_features( /* Vulkan 1.2 / VK_KHR_uniform_buffer_standard_layout */ .uniformBufferStandardLayout = true, + /* Vulkan 1.2 / VK_EXT_host_query_reset */ + .hostQueryReset = true, + /* Vulkan 1.3 / VK_EXT_private_data */ .privateData = true, diff --git a/src/imagination/vulkan/pvr_query.c b/src/imagination/vulkan/pvr_query.c index 06e563b6d32..ba4acda6cac 100644 --- a/src/imagination/vulkan/pvr_query.c +++ b/src/imagination/vulkan/pvr_query.c @@ -27,6 +27,7 @@ #include <assert.h> #include <stddef.h> #include <stdint.h> +#include <string.h> #include <vulkan/vulkan.h> #include "pvr_bo.h" @@ -278,6 +279,18 @@ void pvr_CmdResetQueryPool(VkCommandBuffer commandBuffer, pvr_add_query_program(cmd_buffer, &query_info); } +void pvr_ResetQueryPool(VkDevice _device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount) +{ + PVR_FROM_HANDLE(pvr_query_pool, pool, queryPool); + uint32_t *availability = + pvr_bo_suballoc_get_map_addr(pool->availability_buffer); + + memset(availability + firstQuery, 0, sizeof(uint32_t) * queryCount); +} + void pvr_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery,
