fix transition bug
This commit is contained in:
parent
bb4188feaa
commit
9dbeec7b63
124
vulkan.d
124
vulkan.d
@ -1021,67 +1021,6 @@ CreateImageView(Vulkan* vk, ImageView* view, u32 w, u32 h, u32 ch, u8[] data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pragma(inline): void
|
|
||||||
BeginComputePass(Vulkan* vk)
|
|
||||||
{
|
|
||||||
VkResult result = vkWaitForFences(vk.device, 1, &vk.comp_fence, VK_TRUE, 1000000000);
|
|
||||||
VkCheckA("BeginComputePass failure: vkWaitForFences error", result);
|
|
||||||
|
|
||||||
result = vkResetFences(vk.device, 1, &vk.comp_fence);
|
|
||||||
VkCheckA("BeginComputepass failure: vkResetFences error", result);
|
|
||||||
|
|
||||||
|
|
||||||
result = vkResetCommandBuffer(vk.comp_cmd, 0);
|
|
||||||
VkCheckA("BeginComputePass failure: vkResetCommandBuffer error", result);
|
|
||||||
|
|
||||||
VkCommandBufferBeginInfo cmd_info = {
|
|
||||||
sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
|
|
||||||
flags: VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
|
|
||||||
};
|
|
||||||
|
|
||||||
result = vkBeginCommandBuffer(vk.comp_cmd, &cmd_info);
|
|
||||||
VkCheckA("BeginComputePass failure: vkBeginCommandBuffer error", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
pragma(inline): void
|
|
||||||
FinishComputePass(Vulkan* vk)
|
|
||||||
{
|
|
||||||
VkResult result = vkEndCommandBuffer(vk.comp_cmd);
|
|
||||||
VkCheckA("FinishComputePass failure: vkEndCommandBuffer error", result);
|
|
||||||
|
|
||||||
VkCommandBufferSubmitInfo cmd_info = {
|
|
||||||
sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO,
|
|
||||||
commandBuffer: vk.comp_cmd,
|
|
||||||
};
|
|
||||||
|
|
||||||
VkSubmitInfo2 submit_info = {
|
|
||||||
sType: VK_STRUCTURE_TYPE_SUBMIT_INFO_2,
|
|
||||||
commandBufferInfoCount: 1,
|
|
||||||
pCommandBufferInfos: &cmd_info,
|
|
||||||
};
|
|
||||||
|
|
||||||
result = vkQueueSubmit2(vk.gfx_queue, 1, &submit_info, vk.comp_fence);
|
|
||||||
VkCheckA("FinishComputePass failure: vkQueueSubmit2 error", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
pragma(inline): void
|
|
||||||
CreateBufferView(Vulkan* vk, Descriptor* desc, u64 size, Format format, DescType type)
|
|
||||||
{
|
|
||||||
CreateBuffer(vk, &desc.buf_view.base, BT.BufferView, size, false);
|
|
||||||
|
|
||||||
VkBufferViewCreateInfo info = {
|
|
||||||
sType: VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
|
|
||||||
buffer: desc.buf_view.buffer,
|
|
||||||
format: format,
|
|
||||||
range: size,
|
|
||||||
};
|
|
||||||
|
|
||||||
VkResult result = vkCreateBufferView(vk.device, &info, null, &desc.buf_view.view);
|
|
||||||
VkCheckA("CreateBufferView failure: vkCreateBufferView failed", result);
|
|
||||||
|
|
||||||
desc.buf_view.size = size;
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
@ -1151,6 +1090,67 @@ CreateImageView(Vulkan* vk, ImageView* view, u32 w, u32 h, Format format, ImageU
|
|||||||
view.usage = usage;
|
view.usage = usage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pragma(inline): void
|
||||||
|
BeginComputePass(Vulkan* vk)
|
||||||
|
{
|
||||||
|
VkResult result = vkWaitForFences(vk.device, 1, &vk.comp_fence, VK_TRUE, 1000000000);
|
||||||
|
VkCheckA("BeginComputePass failure: vkWaitForFences error", result);
|
||||||
|
|
||||||
|
result = vkResetFences(vk.device, 1, &vk.comp_fence);
|
||||||
|
VkCheckA("BeginComputepass failure: vkResetFences error", result);
|
||||||
|
|
||||||
|
|
||||||
|
result = vkResetCommandBuffer(vk.comp_cmd, 0);
|
||||||
|
VkCheckA("BeginComputePass failure: vkResetCommandBuffer error", result);
|
||||||
|
|
||||||
|
VkCommandBufferBeginInfo cmd_info = {
|
||||||
|
sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
|
||||||
|
flags: VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
|
||||||
|
};
|
||||||
|
|
||||||
|
result = vkBeginCommandBuffer(vk.comp_cmd, &cmd_info);
|
||||||
|
VkCheckA("BeginComputePass failure: vkBeginCommandBuffer error", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
pragma(inline): void
|
||||||
|
FinishComputePass(Vulkan* vk)
|
||||||
|
{
|
||||||
|
VkResult result = vkEndCommandBuffer(vk.comp_cmd);
|
||||||
|
VkCheckA("FinishComputePass failure: vkEndCommandBuffer error", result);
|
||||||
|
|
||||||
|
VkCommandBufferSubmitInfo cmd_info = {
|
||||||
|
sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO,
|
||||||
|
commandBuffer: vk.comp_cmd,
|
||||||
|
};
|
||||||
|
|
||||||
|
VkSubmitInfo2 submit_info = {
|
||||||
|
sType: VK_STRUCTURE_TYPE_SUBMIT_INFO_2,
|
||||||
|
commandBufferInfoCount: 1,
|
||||||
|
pCommandBufferInfos: &cmd_info,
|
||||||
|
};
|
||||||
|
|
||||||
|
result = vkQueueSubmit2(vk.gfx_queue, 1, &submit_info, vk.comp_fence);
|
||||||
|
VkCheckA("FinishComputePass failure: vkQueueSubmit2 error", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
pragma(inline): void
|
||||||
|
CreateBufferView(Vulkan* vk, Descriptor* desc, u64 size, Format format, DescType type)
|
||||||
|
{
|
||||||
|
CreateBuffer(vk, &desc.buf_view.base, BT.BufferView, size, false);
|
||||||
|
|
||||||
|
VkBufferViewCreateInfo info = {
|
||||||
|
sType: VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
|
||||||
|
buffer: desc.buf_view.buffer,
|
||||||
|
format: format,
|
||||||
|
range: size,
|
||||||
|
};
|
||||||
|
|
||||||
|
VkResult result = vkCreateBufferView(vk.device, &info, null, &desc.buf_view.view);
|
||||||
|
VkCheckA("CreateBufferView failure: vkCreateBufferView failed", result);
|
||||||
|
|
||||||
|
desc.buf_view.size = size;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PushConstants(T)(Vulkan* vk, Pipeline pipeline_id, T* pc)
|
PushConstants(T)(Vulkan* vk, Pipeline pipeline_id, T* pc)
|
||||||
{
|
{
|
||||||
@ -1571,7 +1571,7 @@ void
|
|||||||
Transition(VkCommandBuffer cmd, Descriptor* desc, VkImageLayout new_layout)
|
Transition(VkCommandBuffer cmd, Descriptor* desc, VkImageLayout new_layout)
|
||||||
{
|
{
|
||||||
ImageDescCheck(desc);
|
ImageDescCheck(desc);
|
||||||
Transition(cmd, &desc.view.base, new_layout);
|
Transition(cmd, &desc.view, new_layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
pragma(inline): void
|
pragma(inline): void
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user