mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-14 14:01:06 +00:00
Set some access masks in transitions that validation flags up
This commit is contained in:
@@ -898,7 +898,7 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd)
|
||||
|
||||
VkImageMemoryBarrier bbBarrier = {
|
||||
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL,
|
||||
0, 0, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||
0, VK_ACCESS_TRANSFER_READ_BIT, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||
VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
|
||||
Unwrap(backbuffer),
|
||||
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
||||
@@ -906,7 +906,7 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd)
|
||||
|
||||
VkImageMemoryBarrier readBarrier = {
|
||||
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, NULL,
|
||||
0, 0, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
0, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED,
|
||||
readbackIm, // was never wrapped
|
||||
{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }
|
||||
@@ -919,7 +919,10 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd)
|
||||
|
||||
// barrier to switch backbuffer back to present layout
|
||||
std::swap(bbBarrier.oldLayout, bbBarrier.newLayout);
|
||||
std::swap(bbBarrier.srcAccessMask, bbBarrier.dstAccessMask);
|
||||
|
||||
readBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
readBarrier.dstAccessMask = VK_ACCESS_HOST_READ_BIT;
|
||||
readBarrier.oldLayout = readBarrier.newLayout;
|
||||
readBarrier.newLayout = VK_IMAGE_LAYOUT_GENERAL;
|
||||
|
||||
|
||||
@@ -1088,13 +1088,14 @@ bool WrappedVulkan::Prepare_InitialState(WrappedVkRes *res)
|
||||
// transfer back to whatever it was
|
||||
srcimBarrier.oldLayout = srcimBarrier.newLayout;
|
||||
|
||||
srcimBarrier.srcAccessMask = 0;
|
||||
srcimBarrier.srcAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
|
||||
srcimBarrier.dstAccessMask = 0;
|
||||
|
||||
for (size_t si = 0; si < layout->subresourceStates.size(); si++)
|
||||
{
|
||||
srcimBarrier.subresourceRange = layout->subresourceStates[si].subresourceRange;
|
||||
srcimBarrier.newLayout = layout->subresourceStates[si].newLayout;
|
||||
srcimBarrier.dstAccessMask = MakeAccessMask(srcimBarrier.newLayout);
|
||||
DoPipelineBarrier(cmd, 1, &srcimBarrier);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user