From 586bca76dd031c1abef718831aa9a77b00a5d0c6 Mon Sep 17 00:00:00 2001 From: Yusuf Khan Date: Thu, 2 May 2024 23:36:32 -0500 Subject: [PATCH] nvk: remove NVK_MME_COPY_QUERIES Its not being used by anything, and it gets sent to the GPU, remove it. Signed-off-by: Yusuf Khan Reviewed-by: Mary Guillemard Part-of: --- src/nouveau/vulkan/nvk_mme.c | 1 - src/nouveau/vulkan/nvk_mme.h | 2 - src/nouveau/vulkan/nvk_query_pool.c | 134 +--------------------------- 3 files changed, 1 insertion(+), 136 deletions(-) diff --git a/src/nouveau/vulkan/nvk_mme.c b/src/nouveau/vulkan/nvk_mme.c index 3688cf4abf1..80dc2df9ff6 100644 --- a/src/nouveau/vulkan/nvk_mme.c +++ b/src/nouveau/vulkan/nvk_mme.c @@ -18,7 +18,6 @@ static const nvk_mme_builder_func mme_builders[NVK_MME_COUNT] = { [NVK_MME_ADD_CS_INVOCATIONS] = nvk_mme_add_cs_invocations, [NVK_MME_DISPATCH_INDIRECT] = nvk_mme_dispatch_indirect, [NVK_MME_WRITE_CS_INVOCATIONS] = nvk_mme_write_cs_invocations, - [NVK_MME_COPY_QUERIES] = nvk_mme_copy_queries, [NVK_MME_XFB_COUNTER_LOAD] = nvk_mme_xfb_counter_load, [NVK_MME_XFB_DRAW_INDIRECT] = nvk_mme_xfb_draw_indirect, [NVK_MME_SET_PRIV_REG] = nvk_mme_set_priv_reg, diff --git a/src/nouveau/vulkan/nvk_mme.h b/src/nouveau/vulkan/nvk_mme.h index 8798bb2e2fb..3a4304418fa 100644 --- a/src/nouveau/vulkan/nvk_mme.h +++ b/src/nouveau/vulkan/nvk_mme.h @@ -21,7 +21,6 @@ enum nvk_mme { NVK_MME_ADD_CS_INVOCATIONS, NVK_MME_DISPATCH_INDIRECT, NVK_MME_WRITE_CS_INVOCATIONS, - NVK_MME_COPY_QUERIES, NVK_MME_XFB_COUNTER_LOAD, NVK_MME_XFB_DRAW_INDIRECT, NVK_MME_SET_PRIV_REG, @@ -125,7 +124,6 @@ void nvk_mme_draw_indexed_indirect_count(struct mme_builder *b); void nvk_mme_add_cs_invocations(struct mme_builder *b); void nvk_mme_dispatch_indirect(struct mme_builder *b); void nvk_mme_write_cs_invocations(struct mme_builder *b); -void nvk_mme_copy_queries(struct mme_builder *b); void nvk_mme_xfb_counter_load(struct mme_builder *b); void nvk_mme_xfb_draw_indirect(struct mme_builder *b); void nvk_mme_set_priv_reg(struct mme_builder *b); diff --git a/src/nouveau/vulkan/nvk_query_pool.c b/src/nouveau/vulkan/nvk_query_pool.c index 4e964a4e951..d3a8e7d03fe 100644 --- a/src/nouveau/vulkan/nvk_query_pool.c +++ b/src/nouveau/vulkan/nvk_query_pool.c @@ -986,139 +986,6 @@ nvk_meta_copy_query_pool_results(struct nvk_cmd_buffer *cmd, memcpy(desc->root.push, push_save, NVK_MAX_PUSH_SIZE); } -void -nvk_mme_copy_queries(struct mme_builder *b) -{ - if (b->devinfo->cls_eng3d < TURING_A) - return; - - struct mme_value64 dst_addr = mme_load_addr64(b); - struct mme_value64 dst_stride = mme_load_addr64(b); - struct mme_value64 avail_addr = mme_load_addr64(b); - struct mme_value64 report_addr = mme_load_addr64(b); - - struct mme_value query_count = mme_load(b); - struct mme_value control = mme_load(b); - - struct mme_value flags = control; - struct mme_value write64 = - mme_and(b, flags, mme_imm(VK_QUERY_RESULT_64_BIT)); - struct mme_value query_stride = - mme_merge(b, mme_zero(), control, 0, 16, 8); - struct mme_value is_timestamp = - mme_merge(b, mme_zero(), control, 0, 1, 24); - - mme_while(b, ugt, query_count, mme_zero()) { - struct mme_value dw_per_query = mme_srl(b, query_stride, mme_imm(2)); - mme_tu104_read_fifoed(b, report_addr, dw_per_query); - mme_free_reg(b, dw_per_query); - - struct mme_value64 write_addr = mme_mov64(b, dst_addr); - struct mme_value report_count = mme_srl(b, query_stride, mme_imm(4)); - mme_while(b, ugt, report_count, mme_zero()) { - struct mme_value result_lo = mme_alloc_reg(b); - struct mme_value result_hi = mme_alloc_reg(b); - struct mme_value64 result = mme_value64(result_lo, result_hi); - - mme_if(b, ine, is_timestamp, mme_zero()) { - mme_load_to(b, mme_zero()); - mme_load_to(b, mme_zero()); - mme_load_to(b, result_lo); - mme_load_to(b, result_hi); - mme_sub_to(b, report_count, report_count, mme_imm(1)); - } - mme_if(b, ieq, is_timestamp, mme_zero()) { - struct mme_value begin_lo = mme_load(b); - struct mme_value begin_hi = mme_load(b); - struct mme_value64 begin = mme_value64(begin_lo, begin_hi); - mme_load_to(b, mme_zero()); - mme_load_to(b, mme_zero()); - - struct mme_value end_lo = mme_load(b); - struct mme_value end_hi = mme_load(b); - struct mme_value64 end = mme_value64(end_lo, end_hi); - mme_load_to(b, mme_zero()); - mme_load_to(b, mme_zero()); - - mme_sub64_to(b, result, end, begin); - mme_sub_to(b, report_count, report_count, mme_imm(2)); - - mme_free_reg64(b, begin); - mme_free_reg64(b, end); - } - - mme_store_global(b, write_addr, result_lo); - mme_add64_to(b, write_addr, write_addr, mme_imm64(4)); - mme_if(b, ine, write64, mme_zero()) { - mme_store_global(b, write_addr, result_hi); - mme_add64_to(b, write_addr, write_addr, mme_imm64(4)); - } - } - - struct mme_value with_availability = - mme_and(b, flags, mme_imm(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT)); - mme_if(b, ine, with_availability, mme_zero()) { - mme_tu104_read_fifoed(b, avail_addr, mme_imm(1)); - struct mme_value avail = mme_load(b); - mme_store_global(b, write_addr, avail); - mme_if(b, ine, write64, mme_zero()) { - mme_add64_to(b, write_addr, write_addr, mme_imm64(4)); - mme_store_global(b, write_addr, mme_zero()); - } - } - mme_free_reg(b, with_availability); - - mme_add64_to(b, avail_addr, avail_addr, mme_imm64(4)); - - mme_add64_to(b, report_addr, report_addr, - mme_value64(query_stride, mme_zero())); - - mme_add64_to(b, dst_addr, dst_addr, dst_stride); - - mme_sub_to(b, query_count, query_count, mme_imm(1)); - } -} - -static void -nvk_cmd_copy_query_pool_results_mme(struct nvk_cmd_buffer *cmd, - struct nvk_query_pool *pool, - uint32_t first_query, - uint32_t query_count, - uint64_t dst_addr, - uint64_t dst_stride, - VkQueryResultFlags flags) -{ - /* TODO: vkCmdCopyQueryPoolResults() with a compute shader */ - ASSERTED struct nvk_device *dev = nvk_cmd_buffer_device(cmd); - assert(nvk_device_physical(dev)->info.cls_eng3d >= TURING_A); - - struct nv_push *p = nvk_cmd_buffer_push(cmd, 13); - P_IMMD(p, NVC597, SET_MME_DATA_FIFO_CONFIG, FIFO_SIZE_SIZE_4KB); - P_1INC(p, NVC597, CALL_MME_MACRO(NVK_MME_COPY_QUERIES)); - - P_INLINE_DATA(p, dst_addr >> 32); - P_INLINE_DATA(p, dst_addr); - P_INLINE_DATA(p, dst_stride >> 32); - P_INLINE_DATA(p, dst_stride); - - uint64_t avail_start = nvk_query_available_addr(pool, first_query); - P_INLINE_DATA(p, avail_start >> 32); - P_INLINE_DATA(p, avail_start); - - uint64_t report_start = nvk_query_report_addr(pool, first_query); - P_INLINE_DATA(p, report_start >> 32); - P_INLINE_DATA(p, report_start); - - P_INLINE_DATA(p, query_count); - - uint32_t is_timestamp = pool->vk.query_type == VK_QUERY_TYPE_TIMESTAMP; - - uint32_t control = (flags & 0xff) | - (pool->query_stride << 8) | - (is_timestamp << 24); - P_INLINE_DATA(p, control); -} - VKAPI_ATTR void VKAPI_CALL nvk_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, @@ -1154,3 +1021,4 @@ nvk_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, nvk_meta_copy_query_pool_results(cmd, pool, firstQuery, queryCount, dst_addr, stride, flags); } +