| 417 | } |
| 418 | } |
| 419 | |
| 420 | // Create an image memory barrier for changing the layout of |
| 421 | // an image and put it into an active command buffer |
| 422 | // See chapter 12.4 "Image Layout" for details |
| 423 | |
| 424 | void image_layout_transition(VkCommandBuffer command_buffer, |
| 425 | VkImage image, |
| 426 | VkPipelineStageFlags src_stage_mask, |
| 427 | VkPipelineStageFlags dst_stage_mask, |
| 428 | VkAccessFlags src_access_mask, |
| 429 | VkAccessFlags dst_access_mask, |
| 430 | VkImageLayout old_layout, |
| 431 | VkImageLayout new_layout, |
| 432 | VkImageSubresourceRange const &subresource_range) |
| 433 | { |
| 434 | // Create an image barrier object |
| 435 | VkImageMemoryBarrier image_memory_barrier{}; |
| 436 | image_memory_barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; |
| 437 | image_memory_barrier.srcAccessMask = src_access_mask; |
| 438 | image_memory_barrier.dstAccessMask = dst_access_mask; |
| 439 | image_memory_barrier.oldLayout = old_layout; |
| 440 | image_memory_barrier.newLayout = new_layout; |
| 441 | image_memory_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; |
| 442 | image_memory_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; |
| 443 | image_memory_barrier.image = image; |
| 444 | image_memory_barrier.subresourceRange = subresource_range; |
| 445 | |
| 446 | // Put barrier inside setup command buffer |
no test coverage detected