Set some access masks in transitions that validation flags up

This commit is contained in:
baldurk
2016-03-07 23:30:59 +01:00
parent 560b5966d6
commit 44ff7086bb
2 changed files with 7 additions and 3 deletions
+5 -2
View File
@@ -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;
+2 -1
View File
@@ -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);
}