From 42fb0646a16bce52212b93e8cfec48cfded7e72d Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 30 Jan 2023 20:11:58 -0600 Subject: [PATCH] nvk: Fully populate QMDs before uploading Part-of: --- src/nouveau/vulkan/nvk_cmd_dispatch.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/nouveau/vulkan/nvk_cmd_dispatch.c b/src/nouveau/vulkan/nvk_cmd_dispatch.c index 74dcd5c502a..1b7db5c270c 100644 --- a/src/nouveau/vulkan/nvk_cmd_dispatch.c +++ b/src/nouveau/vulkan/nvk_cmd_dispatch.c @@ -88,19 +88,24 @@ nvk_CmdDispatch(VkCommandBuffer commandBuffer, memcpy(root_table_map, &desc->root, sizeof(desc->root)); - uint32_t *qmd; + uint32_t qmd[128]; + memset(qmd, 0, sizeof(qmd)); + memcpy(qmd, pipeline->qmd_template, sizeof(pipeline->qmd_template)); + + gv100_compute_setup_launch_desc(qmd, groupCountX, groupCountY, groupCountZ); + + gp100_cp_launch_desc_set_cb(qmd, 0, root_table_size, root_table_addr); + gp100_cp_launch_desc_set_cb(qmd, 1, root_table_size, root_table_addr); + uint64_t qmd_addr; - result = nvk_cmd_buffer_upload_alloc(cmd, 512, &qmd_addr, (void **)&qmd); + void *qmd_map; + result = nvk_cmd_buffer_upload_alloc(cmd, sizeof(qmd), &qmd_addr,&qmd_map); if (unlikely(result != VK_SUCCESS)) { vk_command_buffer_set_error(&cmd->vk, result); return; } - memcpy(qmd, pipeline->qmd_template, 256); - gv100_compute_setup_launch_desc(qmd, groupCountX, groupCountY, groupCountZ); - - gp100_cp_launch_desc_set_cb(qmd, 0, root_table_size, root_table_addr); - gp100_cp_launch_desc_set_cb(qmd, 1, root_table_size, root_table_addr); + memcpy(qmd_map, qmd, sizeof(qmd)); struct nv_push *p = P_SPACE(cmd->push, 6);