From d46741a48033b5136fa189c1b80a574986e68f64 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sat, 1 Nov 2025 16:04:40 +1100 Subject: [PATCH] add write descriptor function for array descriptors --- vulkan.d | 50 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/vulkan.d b/vulkan.d index 83a1a6e..88efcdb 100644 --- a/vulkan.d +++ b/vulkan.d @@ -2247,41 +2247,63 @@ InitGlobalDescSet(Vulkan* vk) } void -Write(Vulkan* vk, DescSet set, ImageView* view, u32 index, DescType type) +Write(Vulkan* vk, DescSet set, ImageView* view, u32 binding, DescType type) { VkDescriptorImageInfo info = { - imageView: view.view, + imageView: view.view, imageLayout: view.layout, }; VkWriteDescriptorSet write = { - sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, - dstSet: set.handle, - dstBinding: index, + sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, + dstSet: set.handle, + dstBinding: binding, descriptorCount: 1, - descriptorType: type, - pImageInfo: &info, + descriptorType: type, + pImageInfo: &info, }; vkUpdateDescriptorSets(vk.device, 1, &write, 0, null); } void -Write(Vulkan* vk, DescSet set, Buffer* buffer, u32 index, DescType type) +Write(Vulkan* vk, DescSet set, Buffer* buffer, u32 binding, DescType type) { VkDescriptorBufferInfo info = { buffer: buffer.buffer, - range: buffer.size, + range: buffer.size, offset: 0, }; VkWriteDescriptorSet write = { - sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, - dstSet: set.handle, - dstBinding: index, + sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, + dstSet: set.handle, + dstBinding: binding, descriptorCount: 1, - descriptorType: type, - pBufferInfo: &info, + descriptorType: type, + pBufferInfo: &info, + }; + + vkUpdateDescriptorSets(vk.device, 1, &write, 0, null); +} + +void +Write(Vulkan* vk, DescSet set, Buffer* buffer, u32 binding, u32 index, DescType type) +{ + VkDescriptorBufferInfo info = { + buffer: buffer.buffer, + range: buffer.size, + offset: 0, + }; + + VkWriteDescriptorSet write = { + sType: VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, + dstSet: set.handle, + dstBinding: binding, + dstArrayElement: index, + descriptorCount: 1, + descriptorType: type, + pBufferInfo: &info, }; vkUpdateDescriptorSets(vk.device, 1, &write, 0, null);