Skip to content

Instantly share code, notes, and snippets.

@sjhalayka
Created May 16, 2023 16:49
Show Gist options
  • Save sjhalayka/4bfd79b1d9407d80ac149503fe878762 to your computer and use it in GitHub Desktop.
Save sjhalayka/4bfd79b1d9407d80ac149503fe878762 to your computer and use it in GitHub Desktop.
pipeline_barrier
...
VkBufferImageCopy copyRegion{};
copyRegion.bufferOffset = 0;
copyRegion.bufferRowLength = 0;
copyRegion.bufferImageHeight = 0;
copyRegion.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
copyRegion.imageSubresource.mipLevel = 0;
copyRegion.imageSubresource.baseArrayLayer = 0;
copyRegion.imageSubresource.layerCount = 1;
copyRegion.imageOffset = { 0, 0, 0 };
copyRegion.imageExtent.width = size_x;
copyRegion.imageExtent.height = size_y;
copyRegion.imageExtent.depth = 1;
vkCmdCopyImageToBuffer(screenshotCmdBuffer, screenshotStorageImage.image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, screenshotStagingBuffer.buffer, 1, &copyRegion);
VkBufferMemoryBarrier barrier = {};
barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
barrier.dstAccessMask = VK_ACCESS_HOST_READ_BIT;
barrier.buffer = screenshotStagingBuffer.buffer;
barrier.size = screenshotStagingBuffer.size;
vkCmdPipelineBarrier(
screenshotCmdBuffer,
VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT,
0,
0, nullptr,
1, &barrier,
0, nullptr
);
vulkanDevice->flushCommandBuffer(screenshotCmdBuffer, queue);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment