aboutsummaryrefslogtreecommitdiffstats
path: root/src/vk-api.cpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2021-01-30 21:46:39 +0100
committerladevieq <ladevie.quentin@gmail.com>2021-01-30 21:46:39 +0100
commitd7fdab1113623478fecf509c3fd81268d9459b84 (patch)
tree9635a6d07534dde1d3c29ee8dbc1c49eb1c4fb90 /src/vk-api.cpp
parentf24c2bba8159e5a42397ecfc82a669a94f5ad4b3 (diff)
Add record commands and image barrier functions to api
Diffstat (limited to 'src/vk-api.cpp')
-rw-r--r--src/vk-api.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/vk-api.cpp b/src/vk-api.cpp
index c81927e..063aafb 100644
--- a/src/vk-api.cpp
+++ b/src/vk-api.cpp
@@ -504,3 +504,46 @@ void vkapi::update_descriptor_set_image(VkDescriptorSet set, VkDescriptorSetLayo
vkUpdateDescriptorSets(context.device, 1, &write_descriptor, 0, nullptr);
}
+
+
+void vkapi::start_record(VkCommandBuffer command_buffer) {
+ VkCommandBufferBeginInfo cmd_buf_begin_info = {};
+ cmd_buf_begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
+ cmd_buf_begin_info.pNext = nullptr;
+ cmd_buf_begin_info.flags = 0;
+ cmd_buf_begin_info.pInheritanceInfo = nullptr;
+
+ vkBeginCommandBuffer(command_buffer, &cmd_buf_begin_info);
+}
+
+void vkapi::image_barrier(VkCommandBuffer command_buffer, VkImageLayout src_layout, VkImageLayout dst_layout, VkPipelineStageFlagBits src_stage, VkPipelineStageFlagBits dst_stage, VkAccessFlags src_access, VkAccessFlags dst_access, Image image) {
+ VkImageMemoryBarrier undefined_to_general_barrier = {};
+ undefined_to_general_barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
+ undefined_to_general_barrier.pNext = nullptr;
+ undefined_to_general_barrier.srcAccessMask = src_access;
+ undefined_to_general_barrier.dstAccessMask = dst_access;
+ undefined_to_general_barrier.oldLayout = src_layout;
+ undefined_to_general_barrier.newLayout = dst_layout;
+ undefined_to_general_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
+ undefined_to_general_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
+ undefined_to_general_barrier.image = image.handle;
+ undefined_to_general_barrier.subresourceRange = image.subresource_range;
+
+ // api.image_barrier(cmd_buffer, src_stage, dst_stage, image);
+ vkCmdPipelineBarrier(
+ command_buffer,
+ src_stage,
+ dst_stage,
+ 0,
+ 0,
+ nullptr,
+ 0,
+ nullptr,
+ 1,
+ &undefined_to_general_barrier
+ );
+}
+
+void vkapi::end_record(VkCommandBuffer command_buffer) {
+ VKRESULT(vkEndCommandBuffer(command_buffer))
+}