Fix D32S8 copy workaround (AMD)

Fixes water in Pokemon Legends Arceus on AMD GPUs. Possibly fixes other things.
This commit is contained in:
riperiperi 2022-06-14 23:59:04 +01:00
parent 002bfc65ae
commit f2b1cfe10c
2 changed files with 16 additions and 6 deletions

View file

@ -329,7 +329,8 @@ namespace Ryujinx.Graphics.Vulkan
int dstLayers,
int dstLevels,
bool singleSlice,
ImageAspectFlags aspectFlags)
ImageAspectFlags aspectFlags,
bool forFlush)
{
bool is3D = Info.Target == Target.Texture3D;
int width = Info.Width;
@ -343,7 +344,12 @@ namespace Ryujinx.Graphics.Vulkan
for (int level = 0; level < levels; level++)
{
int mipSize = GetBufferDataLength(Info.GetMipSize(level));
int mipSize = Info.GetMipSize(level);
if (forFlush)
{
mipSize = GetBufferDataLength(mipSize);
}
int endOffset = offset + mipSize;

View file

@ -592,7 +592,8 @@ namespace Ryujinx.Graphics.Vulkan
1,
levels,
true,
aspectFlags);
aspectFlags,
false);
BufferHolder.InsertBufferBarrier(
gd,
@ -618,7 +619,8 @@ namespace Ryujinx.Graphics.Vulkan
1,
levels,
true,
aspectFlags);
aspectFlags,
false);
InsertImageBarrier(
gd.Api,
@ -680,7 +682,8 @@ namespace Ryujinx.Graphics.Vulkan
1,
levels,
true,
aspectFlags);
aspectFlags,
false);
BufferHolder.InsertBufferBarrier(
gd,
@ -706,7 +709,8 @@ namespace Ryujinx.Graphics.Vulkan
1,
levels,
true,
aspectFlags);
aspectFlags,
false);
}
SlowBlit(d32SrcStorage, d32DstStorage, ImageAspectFlags.ImageAspectDepthBit);