fix transfers/descriptor creation
This commit is contained in:
parent
1df3f93a5f
commit
7bef66157b
30
vulkan.d
30
vulkan.d
@ -1306,15 +1306,18 @@ CreateImageView(Descriptor* desc)
|
||||
// TODO: also handle here
|
||||
VkCheck("CreateImageView failure: vkCreateImageView error", result);
|
||||
|
||||
if(desc.image.usage == IU.Draw || desc.image.usage == IU.Depth || desc.image.usage == IU.Convert)
|
||||
{
|
||||
desc.image.shader_layout = IL.General;
|
||||
}
|
||||
else if(desc.image.usage == IU.Texture)
|
||||
{
|
||||
desc.image.shader_layout = IL.ReadOnly;
|
||||
}
|
||||
else assert(false, "Unimplemented usage");
|
||||
switch(desc.image.usage)
|
||||
{
|
||||
case IU.Draw, IU.Depth, IU.Convert, IU.Storage:
|
||||
{
|
||||
desc.image.shader_layout = IL.General;
|
||||
} break;
|
||||
case IU.Texture:
|
||||
{
|
||||
desc.image.shader_layout = IL.ReadOnly;
|
||||
} break;
|
||||
default: assert(false, "Unimplemented usage");
|
||||
}
|
||||
|
||||
desc.image.layout = IL.Undefined;
|
||||
}
|
||||
@ -1427,7 +1430,7 @@ TransferReady()
|
||||
}
|
||||
|
||||
bool
|
||||
Transfer(bool image, T)(Descriptor* desc, T data) if(isArray!(T) || isPointer!(T))
|
||||
Transfer(bool image, T)(Descriptor* desc, T data_param) if(isArray!(T) || isPointer!(T))
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
@ -1435,11 +1438,13 @@ Transfer(bool image, T)(Descriptor* desc, T data) if(isArray!(T) || isPointer!(T
|
||||
|
||||
static if(isArray!(T))
|
||||
{
|
||||
u64 data_length = cast(u64)(data.length * (*data.init.ptr).sizeof);
|
||||
u64 data_length = cast(u64)(data_param.length * (*data_param.init.ptr).sizeof);
|
||||
u8[] data = (cast(u8*)data_param.ptr)[0 .. data_length];
|
||||
}
|
||||
else static if(isPointer!(T))
|
||||
{
|
||||
u64 data_length = cast(u64)(*T).sizeof;
|
||||
T* data = data_param;
|
||||
}
|
||||
|
||||
u64 copied = 0;
|
||||
@ -1458,7 +1463,7 @@ Transfer(bool image, T)(Descriptor* desc, T data) if(isArray!(T) || isPointer!(T
|
||||
|
||||
vkCmdCopyBufferToImage(g_vk.imm_cmd, g_vk.transfer_buf.buffer, desc.image.image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ©);
|
||||
|
||||
Transition(g_vk.imm_cmd, desc, IL.ReadOnly);
|
||||
Transition(g_vk.imm_cmd, desc, desc.image.shader_layout);
|
||||
};
|
||||
|
||||
VkBufferImageCopy copy = {
|
||||
@ -3395,3 +3400,4 @@ version(VULKAN_RENDERER_TEST) unittest
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user