add bindings to creating descriptors
This commit is contained in:
parent
748c8ec00e
commit
4b43421dc9
30
vulkan.d
30
vulkan.d
@ -564,9 +564,10 @@ CreatePipelineLayout(T)(Vulkan* vk, T layouts, u32 push_const_size, bool compute
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CreateBuffer(Vulkan* vk, Descriptor* desc, BufferType type, u64 size, bool host_visible, DescType desc_type)
|
CreateBuffer(Vulkan* vk, Descriptor* desc, BufferType type, u64 size, bool host_visible, DescType desc_type, u32 binding)
|
||||||
{
|
{
|
||||||
desc.type = desc_type;
|
desc.type = desc_type;
|
||||||
|
desc.binding = binding;
|
||||||
CreateBuffer(vk, &desc.buf, type, size, host_visible);
|
CreateBuffer(vk, &desc.buf, type, size, host_visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -955,10 +956,11 @@ WaitForTransfers(Vulkan* vk)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CreateImageView(Vulkan* vk, Descriptor* view, u32 w, u32 h, u32 ch, u8[] data, DescType type = DT.Image)
|
CreateImageView(Vulkan* vk, Descriptor* view, u32 w, u32 h, u32 ch, u8[] data, DescType type = DT.Image, u32 binding)
|
||||||
{
|
{
|
||||||
ImageDescCheck(type);
|
ImageDescCheck(type);
|
||||||
view.type = type;
|
view.type = type;
|
||||||
|
view.binding = binding;
|
||||||
CreateImageView(vk, &view.view, w, h, ch, data);
|
CreateImageView(vk, &view.view, w, h, ch, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -974,13 +976,13 @@ CreateImageView(Vulkan* vk, ImageView* view, u32 w, u32 h, u32 ch, u8[] data)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Descriptor buf = { binding: 1 };
|
Descriptor buf;
|
||||||
CreateBuffer(vk, &buf, BT.Storage, w * h * ch, false, DT.Storage);
|
CreateBuffer(vk, &buf, BT.Storage, w * h * ch, false, DT.Storage, 1);
|
||||||
bool result = Transfer(vk, &buf.buf, data);
|
bool result = Transfer(vk, &buf.buf, data);
|
||||||
assert(result, "CreateImageView failure: Buffer Transfer error");
|
assert(result, "CreateImageView failure: Buffer Transfer error");
|
||||||
|
|
||||||
Descriptor conv_view = { binding: 0 };
|
Descriptor conv_view;
|
||||||
CreateImageView(vk, &conv_view, w, h, FMT.RGBA_F32, IU.Convert, DT.StorageImage);
|
CreateImageView(vk, &conv_view, w, h, FMT.RGBA_F32, IU.Convert, DT.StorageImage, 0);
|
||||||
|
|
||||||
Write(vk, vk.conv_desc_set, [conv_view, buf]);
|
Write(vk, vk.conv_desc_set, [conv_view, buf]);
|
||||||
|
|
||||||
@ -1026,10 +1028,11 @@ CreateImageView(Vulkan* vk, ImageView* view, u32 w, u32 h, u32 ch, u8[] data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CreateImageView(Vulkan* vk, Descriptor* desc, u32 w, u32 h, Format format, ImageUsage usage, DescType type)
|
CreateImageView(Vulkan* vk, Descriptor* desc, u32 w, u32 h, Format format, ImageUsage usage, DescType type, u32 binding)
|
||||||
{
|
{
|
||||||
ImageDescCheck(type);
|
ImageDescCheck(type);
|
||||||
desc.type = type;
|
desc.type = type;
|
||||||
|
desc.binding = binding;
|
||||||
CreateImageView(vk, &desc.view, w, h, format, usage);
|
CreateImageView(vk, &desc.view, w, h, format, usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1148,7 +1151,7 @@ FinishComputePass(Vulkan* vk)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pragma(inline): void
|
pragma(inline): void
|
||||||
CreateBufferView(Vulkan* vk, Descriptor* desc, u64 size, Format format, DescType type)
|
CreateBufferView(Vulkan* vk, Descriptor* desc, u64 size, Format format, DescType type, u32 binding)
|
||||||
{
|
{
|
||||||
CreateBuffer(vk, &desc.buf_view.base, BT.BufferView, size, false);
|
CreateBuffer(vk, &desc.buf_view.base, BT.BufferView, size, false);
|
||||||
|
|
||||||
@ -1162,6 +1165,7 @@ CreateBufferView(Vulkan* vk, Descriptor* desc, u64 size, Format format, DescType
|
|||||||
VkResult result = vkCreateBufferView(vk.device, &info, null, &desc.buf_view.view);
|
VkResult result = vkCreateBufferView(vk.device, &info, null, &desc.buf_view.view);
|
||||||
VkCheckA("CreateBufferView failure: vkCreateBufferView failed", result);
|
VkCheckA("CreateBufferView failure: vkCreateBufferView failed", result);
|
||||||
|
|
||||||
|
desc.binding = binding;
|
||||||
desc.buf_view.size = size;
|
desc.buf_view.size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2246,8 +2250,8 @@ CreateDrawImages(Vulkan* vk)
|
|||||||
u32 w = vk.swapchain_extent.width;
|
u32 w = vk.swapchain_extent.width;
|
||||||
u32 h = vk.swapchain_extent.height;
|
u32 h = vk.swapchain_extent.height;
|
||||||
|
|
||||||
CreateImageView(vk, &vk.draw_image, w, h, draw_format, IU.Draw, DT.StorageImage);
|
CreateImageView(vk, &vk.draw_image, w, h, draw_format, IU.Draw, DT.StorageImage, 0);
|
||||||
CreateImageView(vk, &vk.depth_image, w, h, depth_format, IU.Depth, DT.Image);
|
CreateImageView(vk, &vk.depth_image, w, h, depth_format, IU.Depth, DT.Image, 0);
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user