fix transition bug

This commit is contained in:
Matthew 2025-11-15 19:19:18 +11:00
parent bb4188feaa
commit 9dbeec7b63

124
vulkan.d
View File

@ -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
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;
}
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
PushConstants(T)(Vulkan* vk, Pipeline pipeline_id, T* pc)
{
@ -1571,7 +1571,7 @@ void
Transition(VkCommandBuffer cmd, Descriptor* desc, VkImageLayout new_layout)
{
ImageDescCheck(desc);
Transition(cmd, &desc.view.base, new_layout);
Transition(cmd, &desc.view, new_layout);
}
pragma(inline): void