Skip to content

Commit f0d1853

Browse files
committed
Added a dstStageMask variable to help the stage flags for an image being transferred.
1 parent 8dcfb77 commit f0d1853

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

src/vsg/app/TransferTask.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,12 @@ void vsg::transferImageData(ref_ptr<ImageView> imageView, VkImageLayout targetIm
575575
auto vk_image = image->vk(device->deviceID);
576576
auto aspectMask = imageView->subresourceRange.aspectMask;
577577

578+
// Stage which the associated image will be used, such as set by DescriptorSetLayoutBinding::stageFlags
579+
// Further info:
580+
// https://docs.vulkan.org/refpages/latest/refpages/source/VkPipelineStageFlags.html
581+
// https://registry.khronos.org/VulkanSC/specs/1.0-extensions/man/html/VkDescriptorSetLayoutBinding.html
582+
VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
583+
578584
uint32_t faceWidth = width;
579585
uint32_t faceHeight = height;
580586
uint32_t faceDepth = depth;
@@ -816,7 +822,7 @@ void vsg::transferImageData(ref_ptr<ImageView> imageView, VkImageLayout targetIm
816822
barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
817823

818824
vkCmdPipelineBarrier(commandBuffer,
819-
VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0,
825+
VK_PIPELINE_STAGE_TRANSFER_BIT, dstStageMask, 0,
820826
0, nullptr,
821827
0, nullptr,
822828
1, &barrier);
@@ -833,7 +839,7 @@ void vsg::transferImageData(ref_ptr<ImageView> imageView, VkImageLayout targetIm
833839
barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
834840

835841
vkCmdPipelineBarrier(commandBuffer,
836-
VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0,
842+
VK_PIPELINE_STAGE_TRANSFER_BIT, dstStageMask, 0,
837843
0, nullptr,
838844
0, nullptr,
839845
1, &barrier);
@@ -856,7 +862,7 @@ void vsg::transferImageData(ref_ptr<ImageView> imageView, VkImageLayout targetIm
856862
postCopyBarrier.subresourceRange.baseMipLevel = 0;
857863

858864
vkCmdPipelineBarrier(commandBuffer,
859-
VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0,
865+
VK_PIPELINE_STAGE_TRANSFER_BIT, dstStageMask, 0,
860866
0, nullptr,
861867
0, nullptr,
862868
1, &postCopyBarrier);

0 commit comments

Comments
 (0)