nvk: Add a root descriptor table
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
committed by
Marge Bot
parent
935f316eb0
commit
5017a3b092
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user