anv: Implement VK_EXT_host_query_reset
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 5 Mar 2019 02:01:44 +0000 (20:01 -0600)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Mon, 18 Mar 2019 14:48:41 +0000 (14:48 +0000)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_extensions.py
src/intel/vulkan/genX_query.c

index 83fa3936c195ca08bca7f0790e524d4e103fcc70..a6ecc657f4bcf25220efbfc9a1671142662c6140 100644 (file)
@@ -971,6 +971,13 @@ void anv_GetPhysicalDeviceFeatures2(
          break;
       }
 
+      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: {
+         VkPhysicalDeviceHostQueryResetFeaturesEXT *features =
+            (VkPhysicalDeviceHostQueryResetFeaturesEXT *)ext;
+         features->hostQueryReset = true;
+         break;
+      }
+
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT: {
          VkPhysicalDeviceInlineUniformBlockFeaturesEXT *features =
             (VkPhysicalDeviceInlineUniformBlockFeaturesEXT *)ext;
index 6fff293dee4368ac81ad010ddbeba3912e6b419f..e4404c59f34d35dea1f21d6a2c8c4ac0e1680db6 100644 (file)
@@ -126,6 +126,7 @@ EXTENSIONS = [
     Extension('VK_EXT_external_memory_host',              1, True),
     Extension('VK_EXT_global_priority',                   1,
               'device->has_context_priority'),
+    Extension('VK_EXT_host_query_reset',                  1, True),
     Extension('VK_EXT_inline_uniform_block',              1, True),
     Extension('VK_EXT_pci_bus_info',                      2, True),
     Extension('VK_EXT_post_depth_coverage',               1, 'device->info.gen >= 9'),
index 794d92dc6c9ecd644f48f29acedd084e12034fa1..5d7b5fb458e9a22522bfe61df1a24e5345134c7e 100644 (file)
@@ -402,6 +402,20 @@ void genX(CmdResetQueryPool)(
    }
 }
 
+void genX(ResetQueryPoolEXT)(
+    VkDevice                                    _device,
+    VkQueryPool                                 queryPool,
+    uint32_t                                    firstQuery,
+    uint32_t                                    queryCount)
+{
+   ANV_FROM_HANDLE(anv_query_pool, pool, queryPool);
+
+   for (uint32_t i = 0; i < queryCount; i++) {
+      uint64_t *slot = pool->bo.map + (firstQuery + i) * pool->stride;
+      *slot = 0;
+   }
+}
+
 static const uint32_t vk_pipeline_stat_to_reg[] = {
    GENX(IA_VERTICES_COUNT_num),
    GENX(IA_PRIMITIVES_COUNT_num),