(Vulkan) Avoid callocs and memsets

This commit is contained in:
twinaphex 2020-06-28 23:56:33 +02:00
parent fc2e11d4b7
commit 26969dd4e1

View File

@ -1418,7 +1418,7 @@ static struct vk_descriptor_pool *vulkan_alloc_descriptor_pool(
VkDescriptorPoolCreateInfo pool_info;
VkDescriptorSetAllocateInfo alloc_info;
struct vk_descriptor_pool *pool =
(struct vk_descriptor_pool*)calloc(1, sizeof(*pool));
(struct vk_descriptor_pool*)malloc(sizeof(*pool));
if (!pool)
return NULL;
@ -1429,6 +1429,11 @@ static struct vk_descriptor_pool *vulkan_alloc_descriptor_pool(
pool_info.poolSizeCount = manager->num_sizes;
pool_info.pPoolSizes = manager->sizes;
pool->pool = VK_NULL_HANDLE;
for (i = 0; i < VULKAN_DESCRIPTOR_MANAGER_BLOCK_SETS; i++)
pool->sets[i] = VK_NULL_HANDLE;
pool->next = NULL;
vkCreateDescriptorPool(device, &pool_info, NULL, &pool->pool);
/* Just allocate all descriptor sets up front. */
@ -1471,12 +1476,22 @@ struct vk_descriptor_manager vulkan_create_descriptor_manager(
unsigned num_sizes,
VkDescriptorSetLayout set_layout)
{
unsigned i;
struct vk_descriptor_manager manager;
memset(&manager, 0, sizeof(manager));
retro_assert(num_sizes <= VULKAN_MAX_DESCRIPTOR_POOL_SIZES);
manager.current = NULL;
manager.count = 0;
for (i = 0; i < VULKAN_MAX_DESCRIPTOR_POOL_SIZES; i++)
{
manager.sizes[i].type = VK_DESCRIPTOR_TYPE_SAMPLER;
manager.sizes[i].descriptorCount = 0;
}
memcpy(manager.sizes, sizes, num_sizes * sizeof(*sizes));
manager.num_sizes = num_sizes;
manager.set_layout = set_layout;
manager.num_sizes = num_sizes;
manager.head = vulkan_alloc_descriptor_pool(device, &manager);
retro_assert(manager.head);
@ -1533,12 +1548,13 @@ static struct vk_buffer_node *vulkan_buffer_chain_alloc_node(
size_t size, VkBufferUsageFlags usage)
{
struct vk_buffer_node *node = (struct vk_buffer_node*)
calloc(1, sizeof(*node));
malloc(sizeof(*node));
if (!node)
return NULL;
node->buffer = vulkan_create_buffer(
context, size, usage);
node->next = NULL;
return node;
}