Insert barriers around vkCmdBlitImage (may fix some amd flicker)

This commit is contained in:
riperiperi 2022-01-24 13:34:44 +00:00
parent 3f38a8526c
commit 0fe19f51c0

View file

@ -55,6 +55,20 @@ namespace Ryujinx.Graphics.Vulkan
var filter = linearFilter && !dstInfo.Format.IsDepthOrStencil() ? Filter.Linear : Filter.Nearest;
TextureView.InsertImageBarrier(
api,
commandBuffer,
srcImage,
TextureStorage.DefaultAccessMask,
AccessFlags.AccessTransferReadBit,
PipelineStageFlags.PipelineStageAllCommandsBit,
PipelineStageFlags.PipelineStageTransferBit,
srcAspectFlags,
srcLayer,
srcLevel,
layers,
levels);
for (int level = 0; level < levels; level++)
{
var srcSl = new ImageSubresourceLayers(srcAspectFlags, (uint)srcLevel, (uint)srcLayer, (uint)layers);
@ -81,6 +95,20 @@ namespace Ryujinx.Graphics.Vulkan
layers = Math.Max(1, layers >> 1);
}
}
TextureView.InsertImageBarrier(
api,
commandBuffer,
dstImage,
AccessFlags.AccessTransferWriteBit,
TextureStorage.DefaultAccessMask,
PipelineStageFlags.PipelineStageTransferBit,
PipelineStageFlags.PipelineStageAllCommandsBit,
dstAspectFlags,
dstLayer,
dstLevel,
layers,
levels);
}
public static void Copy(