From 5017a3b09214549e5ce00eba421d07732205e674 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 30 Jan 2023 20:11:48 -0600 Subject: [PATCH] nvk: Add a root descriptor table Part-of: --- src/nouveau/vulkan/nvk_cmd_buffer.c | 2 ++ src/nouveau/vulkan/nvk_cmd_buffer.h | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.c b/src/nouveau/vulkan/nvk_cmd_buffer.c index 2ce7596..c3f26df 100644 --- a/src/nouveau/vulkan/nvk_cmd_buffer.c +++ b/src/nouveau/vulkan/nvk_cmd_buffer.c @@ -264,6 +264,8 @@ nvk_CmdBindDescriptorSets(VkCommandBuffer commandBuffer, VK_FROM_HANDLE(nvk_descriptor_set, set, pDescriptorSets[i]); if (desc->sets[set_idx] != set) { + nvk_push_descriptor_set_ref(cmd->push, set); + desc->root.sets[set_idx] = nvk_descriptor_set_addr(set); desc->sets[set_idx] = set; desc->sets_dirty |= BITFIELD_BIT(set_idx); } diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.h b/src/nouveau/vulkan/nvk_cmd_buffer.h index 7dd34ed..3145ee2 100644 --- a/src/nouveau/vulkan/nvk_cmd_buffer.h +++ b/src/nouveau/vulkan/nvk_cmd_buffer.h @@ -19,7 +19,19 @@ struct nvk_cmd_pool { VK_DEFINE_NONDISP_HANDLE_CASTS(nvk_cmd_pool, vk.base, VkCommandPool, VK_OBJECT_TYPE_COMMAND_POOL) +/** Root descriptor table. This gets pushed to the GPU directly */ +struct nvk_root_descriptor_table { + /* Client push constants */ + uint8_t push[128]; + + /* Descriptor set base addresses */ + uint64_t sets[NVK_MAX_SETS]; + + /* TODO: Dynamic buffer bindings */ +}; + struct nvk_descriptor_state { + struct nvk_root_descriptor_table root; struct nvk_descriptor_set *sets[NVK_MAX_SETS]; uint32_t sets_dirty; }; -- 2.7.4