pvr: Implement VK_EXT_host_query_reset
authorVlad Schiller <vlad-radu.schiller@imgtec.com>
Mon, 4 Sep 2023 11:24:05 +0000 (12:24 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 20 Oct 2023 14:58:12 +0000 (14:58 +0000)
Signed-off-by: Vlad Schiller <vlad-radu.schiller@imgtec.com>
Reviewed-by: Matt Coster <matt.coster@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25783>

docs/features.txt
src/imagination/vulkan/pvr_device.c
src/imagination/vulkan/pvr_query.c

index 7f0e675..a03af71 100644 (file)
@@ -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)
index 9070be1..e533b7c 100644 (file)
@@ -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,
 
index 06e563b..ba4acda 100644 (file)
@@ -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,