mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2025-02-21 16:43:35 +00:00
Fix D32S8 copy workaround (AMD)
Fixes water in Pokemon Legends Arceus on AMD GPUs. Possibly fixes other things.
This commit is contained in:
parent
002bfc65ae
commit
f2b1cfe10c
2 changed files with 16 additions and 6 deletions
|
@ -329,7 +329,8 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
int dstLayers,
|
int dstLayers,
|
||||||
int dstLevels,
|
int dstLevels,
|
||||||
bool singleSlice,
|
bool singleSlice,
|
||||||
ImageAspectFlags aspectFlags)
|
ImageAspectFlags aspectFlags,
|
||||||
|
bool forFlush)
|
||||||
{
|
{
|
||||||
bool is3D = Info.Target == Target.Texture3D;
|
bool is3D = Info.Target == Target.Texture3D;
|
||||||
int width = Info.Width;
|
int width = Info.Width;
|
||||||
|
@ -343,7 +344,12 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
|
|
||||||
for (int level = 0; level < levels; level++)
|
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;
|
int endOffset = offset + mipSize;
|
||||||
|
|
||||||
|
|
|
@ -592,7 +592,8 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
1,
|
1,
|
||||||
levels,
|
levels,
|
||||||
true,
|
true,
|
||||||
aspectFlags);
|
aspectFlags,
|
||||||
|
false);
|
||||||
|
|
||||||
BufferHolder.InsertBufferBarrier(
|
BufferHolder.InsertBufferBarrier(
|
||||||
gd,
|
gd,
|
||||||
|
@ -618,7 +619,8 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
1,
|
1,
|
||||||
levels,
|
levels,
|
||||||
true,
|
true,
|
||||||
aspectFlags);
|
aspectFlags,
|
||||||
|
false);
|
||||||
|
|
||||||
InsertImageBarrier(
|
InsertImageBarrier(
|
||||||
gd.Api,
|
gd.Api,
|
||||||
|
@ -680,7 +682,8 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
1,
|
1,
|
||||||
levels,
|
levels,
|
||||||
true,
|
true,
|
||||||
aspectFlags);
|
aspectFlags,
|
||||||
|
false);
|
||||||
|
|
||||||
BufferHolder.InsertBufferBarrier(
|
BufferHolder.InsertBufferBarrier(
|
||||||
gd,
|
gd,
|
||||||
|
@ -706,7 +709,8 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
1,
|
1,
|
||||||
levels,
|
levels,
|
||||||
true,
|
true,
|
||||||
aspectFlags);
|
aspectFlags,
|
||||||
|
false);
|
||||||
}
|
}
|
||||||
|
|
||||||
SlowBlit(d32SrcStorage, d32DstStorage, ImageAspectFlags.ImageAspectDepthBit);
|
SlowBlit(d32SrcStorage, d32DstStorage, ImageAspectFlags.ImageAspectDepthBit);
|
||||||
|
|
Loading…
Reference in a new issue