aboutsummaryrefslogtreecommitdiffstats
path: root/src/vk-api.cpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2021-01-31 19:36:15 +0100
committerladevieq <ladevie.quentin@gmail.com>2021-01-31 19:36:15 +0100
commit6d156207ae26eb2398df87192a9cbf872cc166c8 (patch)
tree7e6c1e0eae88b389667e862bfe8def897ccf62a8 /src/vk-api.cpp
parentd685be6799bffcf0c0f2a39d6982a44debfc7ad7 (diff)
Pipeline execution, command buffer submission & presentation api
functions
Diffstat (limited to 'src/vk-api.cpp')
-rw-r--r--src/vk-api.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/vk-api.cpp b/src/vk-api.cpp
index 4e8df48..6144c9e 100644
--- a/src/vk-api.cpp
+++ b/src/vk-api.cpp
@@ -544,6 +544,45 @@ void vkapi::image_barrier(VkCommandBuffer command_buffer, VkImageLayout src_layo
);
}
+void vkapi::run_compute_pipeline(VkCommandBuffer command_buffer, ComputePipeline pipeline, VkDescriptorSet set, size_t group_count_x, size_t group_count_y, size_t group_count_z) {
+ vkCmdBindDescriptorSets(command_buffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipeline.layout, 0, 1, &set, 0, nullptr);
+
+ vkCmdBindPipeline(command_buffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipeline.handle);
+
+ vkCmdDispatch(command_buffer, group_count_x, group_count_y, group_count_z);
+}
+
void vkapi::end_record(VkCommandBuffer command_buffer) {
VKRESULT(vkEndCommandBuffer(command_buffer))
}
+
+VkResult vkapi::submit(VkCommandBuffer command_buffer, VkSemaphore wait_semaphore, VkSemaphore signal_semaphore, VkFence submission_fence) {
+ VkPipelineStageFlags wait_stage = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
+
+ VkSubmitInfo submit_info = {};
+ submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
+ submit_info.pNext = nullptr;
+ submit_info.waitSemaphoreCount = 1;
+ submit_info.pWaitSemaphores = &wait_semaphore;
+ submit_info.pWaitDstStageMask = &wait_stage;
+ submit_info.signalSemaphoreCount = 1;
+ submit_info.pSignalSemaphores = &signal_semaphore;
+ submit_info.commandBufferCount = 1;
+ submit_info.pCommandBuffers = &command_buffer;
+
+ return vkQueueSubmit(context.queue, 1, &submit_info, submission_fence);
+}
+
+VkResult vkapi::present(Swapchain swapchain, uint32_t image_index, VkSemaphore wait_semaphore) {
+ VkPresentInfoKHR present_info = {};
+ present_info.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
+ present_info.pNext = nullptr;
+ present_info.waitSemaphoreCount = 1;
+ present_info.pWaitSemaphores = &wait_semaphore;
+ present_info.swapchainCount = 1;
+ present_info.pSwapchains = &swapchain.handle;
+ present_info.pImageIndices = &image_index;
+ present_info.pResults = nullptr;
+
+ return vkQueuePresentKHR(context.queue, &present_info);
+}