fix descriptor writes
This commit is contained in:
parent
767990e654
commit
12aeecd99b
16
vulkan.d
16
vulkan.d
@ -186,6 +186,7 @@ enum ImageLayout : VkImageLayout
|
|||||||
Undefined = VK_IMAGE_LAYOUT_UNDEFINED,
|
Undefined = VK_IMAGE_LAYOUT_UNDEFINED,
|
||||||
General = VK_IMAGE_LAYOUT_GENERAL,
|
General = VK_IMAGE_LAYOUT_GENERAL,
|
||||||
ColorAttach = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
ColorAttach = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||||
|
ReadOnly = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Image
|
struct Image
|
||||||
@ -212,6 +213,7 @@ struct ImageView
|
|||||||
{
|
{
|
||||||
Image base;
|
Image base;
|
||||||
VkImageView view;
|
VkImageView view;
|
||||||
|
ImageLayout shader_layout;
|
||||||
|
|
||||||
alias base this;
|
alias base this;
|
||||||
}
|
}
|
||||||
@ -936,8 +938,6 @@ ImmSubmit(Vulkan* vk, Buffer* buf, VkBufferCopy copy, void function(Vulkan*, Buf
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
TransferAssets(Vulkan* vk)
|
TransferAssets(Vulkan* vk)
|
||||||
{
|
{
|
||||||
@ -1088,6 +1088,16 @@ CreateImageView(Vulkan* vk, ImageView* view, u32 w, u32 h, Format format, ImageU
|
|||||||
view.h = h;
|
view.h = h;
|
||||||
view.depth_image = usage == IU.Depth;
|
view.depth_image = usage == IU.Depth;
|
||||||
view.usage = usage;
|
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
|
pragma(inline): void
|
||||||
@ -1972,7 +1982,7 @@ PrepareWrite(Vulkan* vk, VkWriteDescriptorSet* write, DescSet set, Descriptor* d
|
|||||||
VkDescriptorImageInfo* info = Alloc!(VkDescriptorImageInfo)(arena);
|
VkDescriptorImageInfo* info = Alloc!(VkDescriptorImageInfo)(arena);
|
||||||
|
|
||||||
info.imageView = desc.view.view;
|
info.imageView = desc.view.view;
|
||||||
info.imageLayout = desc.view.layout;
|
info.imageLayout = desc.view.shader_layout;
|
||||||
write.pImageInfo = info;
|
write.pImageInfo = info;
|
||||||
} break;
|
} break;
|
||||||
case Uniform, Storage:
|
case Uniform, Storage:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user