Module: Mesa
Branch: main
Commit: af3e7ba1057e122c9ccd6d0f09b233ca8278af28
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=af3e7ba1057e122c9ccd6d0f09b233ca8278af28

Author: Faith Ekstrand <faith.ekstr...@collabora.com>
Date:   Sat Dec  9 00:07:44 2023 -0600

nvk: Stash descriptor set sizes

To save space in the root descriptor table, we put these in the CPU-only
descriptor structure instead.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26615>

---

 src/nouveau/vulkan/nvk_cmd_buffer.c | 2 ++
 src/nouveau/vulkan/nvk_cmd_buffer.h | 1 +
 2 files changed, 3 insertions(+)

diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.c 
b/src/nouveau/vulkan/nvk_cmd_buffer.c
index 45e29886a50..a82aae63068 100644
--- a/src/nouveau/vulkan/nvk_cmd_buffer.c
+++ b/src/nouveau/vulkan/nvk_cmd_buffer.c
@@ -582,6 +582,7 @@ nvk_CmdBindDescriptorSets(VkCommandBuffer commandBuffer,
 
       if (desc->sets[set_idx] != set) {
          desc->root.sets[set_idx] = nvk_descriptor_set_addr(set);
+         desc->set_sizes[set_idx] = set->size;
          desc->sets[set_idx] = set;
          desc->sets_dirty |= BITFIELD_BIT(set_idx);
 
@@ -703,6 +704,7 @@ nvk_cmd_buffer_flush_push_descriptors(struct nvk_cmd_buffer 
*cmd,
       }
 
       desc->root.sets[set_idx] = push_set_addr;
+      desc->set_sizes[set_idx] = sizeof(push_set->data);
    }
 }
 
diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.h 
b/src/nouveau/vulkan/nvk_cmd_buffer.h
index bff156d6a9f..9a0727710b6 100644
--- a/src/nouveau/vulkan/nvk_cmd_buffer.h
+++ b/src/nouveau/vulkan/nvk_cmd_buffer.h
@@ -65,6 +65,7 @@ struct nvk_root_descriptor_table {
 
 struct nvk_descriptor_state {
    struct nvk_root_descriptor_table root;
+   uint32_t set_sizes[NVK_MAX_SETS];
    struct nvk_descriptor_set *sets[NVK_MAX_SETS];
    uint32_t sets_dirty;
 

Reply via email to