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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user