fix descriptor writes

This commit is contained in:
Matthew 2025-11-15 19:35:37 +11:00
parent 767990e654
commit 12aeecd99b

View File

@ -186,6 +186,7 @@ enum ImageLayout : VkImageLayout
Undefined = VK_IMAGE_LAYOUT_UNDEFINED,
General = VK_IMAGE_LAYOUT_GENERAL,
ColorAttach = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
ReadOnly = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
}
struct Image
@ -212,6 +213,7 @@ struct ImageView
{
Image base;
VkImageView view;
ImageLayout shader_layout;
alias base this;
}
@ -936,8 +938,6 @@ ImmSubmit(Vulkan* vk, Buffer* buf, VkBufferCopy copy, void function(Vulkan*, Buf
return success;
}
bool
TransferAssets(Vulkan* vk)
{
@ -1088,6 +1088,16 @@ CreateImageView(Vulkan* vk, ImageView* view, u32 w, u32 h, Format format, ImageU
view.h = h;
view.depth_image = usage == IU.Depth;
view.usage = usage;
if(usage == IU.Draw)
{
view.shader_layout = ImageLayout.General;
}
else if(usage == IU.Texture)
{
view.shader_layout = ImageLayout.ReadOnly;
}
else assert(false, "Unimplemented usage");
}
pragma(inline): void
@ -1972,7 +1982,7 @@ PrepareWrite(Vulkan* vk, VkWriteDescriptorSet* write, DescSet set, Descriptor* d
VkDescriptorImageInfo* info = Alloc!(VkDescriptorImageInfo)(arena);
info.imageView = desc.view.view;
info.imageLayout = desc.view.layout;
info.imageLayout = desc.view.shader_layout;
write.pImageInfo = info;
} break;
case Uniform, Storage: