diff --git a/vulkan.d b/vulkan.d index 8a0d83e..b4e01dd 100644 --- a/vulkan.d +++ b/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 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