Commit 5b2740c5 by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Remove unnecessary barrier in image -> buffer copy

There was already a changeLayout call that inserted an imageBarrier. A TRANSFER_SRC to TRANSFER_SRC barrier was unnecessarily (and manually) added afterwards that was pointless. Bug: angleproject:3816 Change-Id: I8177487fc843fa5869c7b5063c74602933a81d58 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1929270Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarSunny Sun <sunny.sun@arm.com> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent fe2d3ddd
......@@ -2974,24 +2974,6 @@ angle::Result ImageHelper::copyImageDataToBuffer(ContextVk *contextVk,
const VkImageAspectFlags aspectFlags = getAspectFlags();
changeLayout(aspectFlags, ImageLayout::TransferSrc, commandBuffer);
VkImageMemoryBarrier barrier = {};
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
barrier.image = mImage.getHandle();
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
barrier.subresourceRange.aspectMask = aspectFlags;
barrier.subresourceRange.baseArrayLayer = baseLayer;
barrier.subresourceRange.layerCount = layerCount;
barrier.subresourceRange.levelCount = 1;
barrier.subresourceRange.baseMipLevel = static_cast<uint32_t>(sourceLevel);
barrier.oldLayout = getCurrentLayout();
barrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
barrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
commandBuffer->imageBarrier(VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT,
&barrier);
// Allocate staging buffer data
ANGLE_TRY(allocateStagingMemory(contextVk, *bufferSize, outDataPtr, bufferOut, bufferOffsetsOut,
nullptr));
......@@ -3049,11 +3031,6 @@ angle::Result ImageHelper::copyImageDataToBuffer(ContextVk *contextVk,
commandBuffer->copyImageToBuffer(mImage, getCurrentLayout(),
(*bufferOut)->getBuffer().getHandle(), 1, regions);
barrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
barrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
commandBuffer->imageBarrier(VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT,
&barrier);
return angle::Result::Continue;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment