Descriptor update

Updated descriptor set build to use function parameters instead of
global vars

Signed-off-by: Piotr Krygier <piotrkrygier@everyonecancode@xyz>
This commit is contained in:
Piotr Krygier
2026-02-09 17:37:28 +01:00
parent 493afb05e6
commit b7a472fe45
4 changed files with 30 additions and 23 deletions
+14 -14
View File
@@ -23,9 +23,6 @@
#define POOL_MAX_SETS (32U)
VkDescriptorSetLayoutBinding g_layout_bindings[DESCRIPTOR_MAX_SETS];
static uint32_t g_layout_bindings_count = 0U;
rse_err_t descriptor_pool_add_type(struct graphics_context_t* context, VkDescriptorType type, uint32_t count)
{
context->descriptor_data.pool_sizes[context->descriptor_data.pool_sizes_count].type = type;
@@ -68,28 +65,31 @@ rse_err_t descriptor_create_new_set(struct graphics_context_t* context, uint32_t
return RSE_ERROR_NO_ERROR;
}
rse_err_t descriptor_add_layout(uint32_t binding,
rse_err_t descriptor_add_layout(struct descriptor_set_layout_bindings_t* layout_bindings,
uint32_t binding,
VkDescriptorType type,
uint32_t descriptor_count,
VkShaderStageFlags shader_stages)
{
g_layout_bindings[g_layout_bindings_count].binding = binding;
g_layout_bindings[g_layout_bindings_count].descriptorType = type;
g_layout_bindings[g_layout_bindings_count].descriptorCount = descriptor_count;
g_layout_bindings[g_layout_bindings_count].stageFlags = shader_stages;
layout_bindings->layout_bindings[layout_bindings->layout_bindings_count].binding = binding;
layout_bindings->layout_bindings[layout_bindings->layout_bindings_count].descriptorType = type;
layout_bindings->layout_bindings[layout_bindings->layout_bindings_count].descriptorCount = descriptor_count;
layout_bindings->layout_bindings[layout_bindings->layout_bindings_count].stageFlags = shader_stages;
g_layout_bindings_count++;
layout_bindings->layout_bindings_count++;
return RSE_ERROR_NO_ERROR;
}
rse_err_t descriptor_set_finish(struct graphics_context_t* context, uint32_t set_id)
rse_err_t descriptor_set_finish(struct graphics_context_t* context,
struct descriptor_set_layout_bindings_t* layout_bindings,
uint32_t set_id)
{
VkDescriptorSetLayoutCreateInfo create_info = {0};
create_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
create_info.bindingCount = g_layout_bindings_count;
create_info.pBindings = g_layout_bindings;
create_info.bindingCount = layout_bindings->layout_bindings_count;
create_info.pBindings = layout_bindings->layout_bindings;
if (VK_SUCCESS != vkCreateDescriptorSetLayout(context->vulkan_handles.device,
&create_info,
@@ -99,8 +99,8 @@ rse_err_t descriptor_set_finish(struct graphics_context_t* context, uint32_t set
return RSE_ERROR_INTERNAL_ERROR;
}
g_layout_bindings_count = 0U;
rse_memset(g_layout_bindings, 0, sizeof(VkDescriptorSetLayoutBinding) * DESCRIPTOR_MAX_SETS);
layout_bindings->layout_bindings_count = 0U;
rse_memset(layout_bindings->layout_bindings, 0, sizeof(VkDescriptorSetLayoutBinding) * DESCRIPTOR_MAX_SETS);
return RSE_ERROR_NO_ERROR;
}