add array index to descriptor struct

This commit is contained in:
Matthew 2025-12-26 18:51:36 +11:00
parent 11cf96b799
commit e412227cfc

View File

@ -232,16 +232,18 @@ struct Buffer
struct Descriptor struct Descriptor
{ {
union
{
Buffer buf;
Image image;
ImageView view;
BufferView buf_view;
VkSampler sampler;
}
DescType type; DescType type;
u32 binding; u32 binding;
union u32 index;
{ bool array_elem;
Buffer buf;
Image image;
ImageView view;
BufferView buf_view;
VkSampler sampler;
}
} }
enum MipmapMode : VkSamplerMipmapMode enum MipmapMode : VkSamplerMipmapMode
@ -2021,6 +2023,11 @@ PrepareWrite(Vulkan* vk, VkWriteDescriptorSet* write, DescSet set, Descriptor* d
write.dstBinding = desc.binding; write.dstBinding = desc.binding;
write.descriptorCount = 1; write.descriptorCount = 1;
if(desc.array_elem)
{
write.dstArrayElement = desc.index;
}
switch(desc.type) with(DescType) switch(desc.type) with(DescType)
{ {
case Image, StorageImage, InputAttach: case Image, StorageImage, InputAttach:
@ -2038,7 +2045,7 @@ PrepareWrite(Vulkan* vk, VkWriteDescriptorSet* write, DescSet set, Descriptor* d
info.buffer = desc.buf.buffer; info.buffer = desc.buf.buffer;
info.offset = cast(VkDeviceSize)0; info.offset = cast(VkDeviceSize)0;
info.range = cast(VkDeviceSize)desc.buf.size; info.range = cast(VkDeviceSize)desc.buf.size;
write.pBufferInfo = info; write.pBufferInfo = info;
} break; } break;
case UniformTexelBuf, StorageTexelBuf: case UniformTexelBuf, StorageTexelBuf:
{ {