aboutsummaryrefslogtreecommitdiffstats
path: root/src/vk-renderer.cpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2021-01-12 08:53:17 +0100
committerladevieq <ladevie.quentin@gmail.com>2021-01-12 08:53:17 +0100
commit8efb7d35814c7d132f16c65d0a6c19823ceb09a8 (patch)
tree47ea77b15c83f1e052046e90ab5d26a6bfdedc54 /src/vk-renderer.cpp
parent0fe938746ed89ff900d970a349511b9788631422 (diff)
Fix swapchain images initial layout transition
Diffstat (limited to 'src/vk-renderer.cpp')
-rw-r--r--src/vk-renderer.cpp62
1 files changed, 31 insertions, 31 deletions
diff --git a/src/vk-renderer.cpp b/src/vk-renderer.cpp
index ac1edd4..9cd1ed3 100644
--- a/src/vk-renderer.cpp
+++ b/src/vk-renderer.cpp
@@ -479,40 +479,40 @@ void vkrenderer::initialization_frame() {
vkBeginCommandBuffer(command_buffer, &cmd_buf_begin_info);
- for (size_t image_index; image_index < swapchain_images_count; image_index++) {
- VkImageSubresourceRange image_subresource_range = {};
- image_subresource_range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
- image_subresource_range.baseMipLevel = 0;
- image_subresource_range.levelCount = 1;
- image_subresource_range.baseArrayLayer = 0;
- image_subresource_range.layerCount = 1;
-
- VkImageMemoryBarrier image_memory_barrier = {};
- image_memory_barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
- image_memory_barrier.pNext = nullptr;
- image_memory_barrier.srcAccessMask = 0;
- image_memory_barrier.dstAccessMask = 0;
- image_memory_barrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
- image_memory_barrier.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
- image_memory_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
- image_memory_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
- image_memory_barrier.image = swapchain_images[image_index];
- image_memory_barrier.subresourceRange = image_subresource_range;
+ VkImageSubresourceRange image_subresource_range = {};
+ image_subresource_range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
+ image_subresource_range.baseMipLevel = 0;
+ image_subresource_range.levelCount = 1;
+ image_subresource_range.baseArrayLayer = 0;
+ image_subresource_range.layerCount = 1;
- vkCmdPipelineBarrier(
- command_buffer,
- VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
- VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
- VK_DEPENDENCY_DEVICE_GROUP_BIT,
- 0,
- nullptr,
- 0,
- nullptr,
- 1,
- &image_memory_barrier
- );
+ std::vector<VkImageMemoryBarrier> image_barriers { swapchain_images_count };
+ for (size_t image_index = 0; image_index < swapchain_images_count; image_index++) {
+ image_barriers[image_index].sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
+ image_barriers[image_index].pNext = nullptr;
+ image_barriers[image_index].srcAccessMask = 0;
+ image_barriers[image_index].dstAccessMask = 0;
+ image_barriers[image_index].oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+ image_barriers[image_index].newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
+ image_barriers[image_index].srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
+ image_barriers[image_index].dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
+ image_barriers[image_index].image = swapchain_images[image_index];
+ image_barriers[image_index].subresourceRange = image_subresource_range;
}
+ vkCmdPipelineBarrier(
+ command_buffer,
+ VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
+ VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
+ VK_DEPENDENCY_DEVICE_GROUP_BIT,
+ 0,
+ nullptr,
+ 0,
+ nullptr,
+ image_barriers.size(),
+ image_barriers.data()
+ );
+
vkEndCommandBuffer(command_buffer);
VkSubmitInfo submit_info = {};