Image transition layout for presentation images
This commit is contained in:
@@ -63,6 +63,12 @@ void Image::transitionLayout(vk::CommandBuffer commandBuffer,
|
||||
barrier.dstAccessMask = {};
|
||||
srcStage = vk::PipelineStageFlagBits::eColorAttachmentOutput;
|
||||
dstStage = vk::PipelineStageFlagBits::eBottomOfPipe;
|
||||
} else if (this->layout == vk::ImageLayout::ePresentSrcKHR &&
|
||||
newLayout == vk::ImageLayout::eColorAttachmentOptimal) {
|
||||
barrier.srcAccessMask = {};
|
||||
barrier.dstAccessMask = vk::AccessFlagBits::eColorAttachmentWrite;
|
||||
srcStage = vk::PipelineStageFlagBits::eTopOfPipe;
|
||||
dstStage = vk::PipelineStageFlagBits::eColorAttachmentOutput;
|
||||
} else {
|
||||
log::fatal("Unsupported image layout transition.");
|
||||
throw std::runtime_error("Unsupported image layout transition.");
|
||||
@@ -269,7 +275,8 @@ std::unique_ptr<Image> Image::Builder::build() {
|
||||
region.imageExtent = this->extent;
|
||||
|
||||
vk::CommandBuffer commandBuffer = this->device.beginSingleTimeCommands();
|
||||
result->transitionLayout(commandBuffer, vk::ImageLayout::eTransferDstOptimal);
|
||||
result->transitionLayout(commandBuffer,
|
||||
vk::ImageLayout::eTransferDstOptimal);
|
||||
commandBuffer.copyBufferToImage(stagingBuffer, result->get(),
|
||||
vk::ImageLayout::eTransferDstOptimal,
|
||||
region);
|
||||
@@ -317,7 +324,6 @@ std::unique_ptr<Image> Image::Builder::build() {
|
||||
result->sampler = this->device.get()->createSamplerUnique(samplerInfo);
|
||||
}
|
||||
|
||||
log::trace("created vk::Image.");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user