Mesa (master): lavapipe: add host query reset

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Mar 15 21:46:39 UTC 2021


Module: Mesa
Branch: master
Commit: b0de4468c24839aca3c659acc138f3db66bdcbb5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b0de4468c24839aca3c659acc138f3db66bdcbb5

Author: Dave Airlie <airlied at redhat.com>
Date:   Mon Mar 15 08:10:36 2021 +1000

lavapipe: add host query reset

This just resets the queries on the host size.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9594>

---

 docs/features.txt                           |  2 +-
 src/gallium/frontends/lavapipe/lvp_device.c |  7 +++++++
 src/gallium/frontends/lavapipe/lvp_query.c  | 19 +++++++++++++++++++
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/docs/features.txt b/docs/features.txt
index de421cbd5ec..0747e5b3bfc 100644
--- a/docs/features.txt
+++ b/docs/features.txt
@@ -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)
diff --git a/src/gallium/frontends/lavapipe/lvp_device.c b/src/gallium/frontends/lavapipe/lvp_device.c
index 8457ac17475..6c17d20154d 100644
--- a/src/gallium/frontends/lavapipe/lvp_device.c
+++ b/src/gallium/frontends/lavapipe/lvp_device.c
@@ -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;
       }
diff --git a/src/gallium/frontends/lavapipe/lvp_query.c b/src/gallium/frontends/lavapipe/lvp_query.c
index 7bf4346a46e..b0bd1f2c862 100644
--- a/src/gallium/frontends/lavapipe/lvp_query.c
+++ b/src/gallium/frontends/lavapipe/lvp_query.c
@@ -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;
+      }
+   }
+}



More information about the mesa-commit mailing list