32 if (r_needed ==
false) {
33 return VK_NULL_HANDLE;
36 std::scoped_lock
mutex(mutex_);
38 VkDescriptorSetLayout *layout = vk_descriptor_set_layouts_.lookup_ptr(info);
43 update_layout_bindings(info);
45 vk_descriptor_set_layout_create_info_.bindingCount = vk_descriptor_set_layout_bindings_.
size();
46 vk_descriptor_set_layout_create_info_.pBindings = vk_descriptor_set_layout_bindings_.
data();
49 VkDescriptorSetLayout vk_descriptor_set_layout = VK_NULL_HANDLE;
51 vkCreateDescriptorSetLayout(device.
vk_handle(),
52 &vk_descriptor_set_layout_create_info_,
53 vk_allocation_callbacks,
54 &vk_descriptor_set_layout);
55 BLI_assert(vk_descriptor_set_layout != VK_NULL_HANDLE);
57 vk_descriptor_set_layout_create_info_.bindingCount = 0;
58 vk_descriptor_set_layout_create_info_.pBindings =
nullptr;
59 vk_descriptor_set_layout_bindings_.
clear();
60 vk_descriptor_set_layouts_.add(info, vk_descriptor_set_layout);
63 return vk_descriptor_set_layout;