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