Mesa (master): turnip: Implement vkCmdResetQueryPool
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jan 24 18:31:13 UTC 2020
Module: Mesa
Branch: master
Commit: 9a3656b9fd92849b74a9866528faf4c4157cc0ef
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a3656b9fd92849b74a9866528faf4c4157cc0ef
Author: Brian Ho <brian at brkho.com>
Date: Fri Jan 3 11:33:06 2020 -0500
turnip: Implement vkCmdResetQueryPool
Clears the available bit for each requested query on the GPU.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3279>
---
src/freedreno/vulkan/tu_query.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/src/freedreno/vulkan/tu_query.c b/src/freedreno/vulkan/tu_query.c
index 96c977d004c..5585d9eb79a 100644
--- a/src/freedreno/vulkan/tu_query.c
+++ b/src/freedreno/vulkan/tu_query.c
@@ -282,12 +282,50 @@ tu_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer,
{
}
+static void
+emit_reset_occlusion_query_pool(struct tu_cmd_buffer *cmdbuf,
+ struct tu_query_pool *pool,
+ uint32_t firstQuery,
+ uint32_t queryCount)
+{
+ struct tu_cs *cs = &cmdbuf->cs;
+
+ for (uint32_t i = 0; i < queryCount; i++) {
+ uint32_t query = firstQuery + i;
+ uint64_t available_iova = occlusion_query_iova(pool, query, available);
+ uint64_t result_iova = occlusion_query_iova(pool, query, result);
+ tu_cs_reserve_space(cmdbuf->device, cs, 11);
+ tu_cs_emit_pkt7(cs, CP_MEM_WRITE, 4);
+ tu_cs_emit_qw(cs, available_iova);
+ tu_cs_emit_qw(cs, 0x0);
+
+ tu_cs_emit_pkt7(cs, CP_MEM_WRITE, 4);
+ tu_cs_emit_qw(cs, result_iova);
+ tu_cs_emit_qw(cs, 0x0);
+ }
+}
+
void
tu_CmdResetQueryPool(VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t firstQuery,
uint32_t queryCount)
{
+ TU_FROM_HANDLE(tu_cmd_buffer, cmdbuf, commandBuffer);
+ TU_FROM_HANDLE(tu_query_pool, pool, queryPool);
+
+ switch (pool->type) {
+ case VK_QUERY_TYPE_OCCLUSION:
+ emit_reset_occlusion_query_pool(cmdbuf, pool, firstQuery, queryCount);
+ break;
+ case VK_QUERY_TYPE_PIPELINE_STATISTICS:
+ case VK_QUERY_TYPE_TIMESTAMP:
+ unreachable("Unimplemented query type");
+ default:
+ assert(!"Invalid query type");
+ }
+
+ tu_bo_list_add(&cmdbuf->bo_list, &pool->bo, MSM_SUBMIT_BO_WRITE);
}
static void
More information about the mesa-commit
mailing list