aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-12-26 13:05:26 -0300
committerGitHub <noreply@github.com>2021-12-26 13:05:26 -0300
commita87f7f202973d2ab0db088f97b3538ae724bbe69 (patch)
treee8030e9b16694ccd44d9ada61ec4520a79fbb76f
parent7c7bf30ad38d0d80ed9c125b7c894eba2293df66 (diff)
Fix DMA copy fast path line size when xCount < stride (#2942)
-rw-r--r--Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs1
-rw-r--r--Ryujinx.Graphics.Gpu/Image/Texture.cs1
-rw-r--r--Ryujinx.Graphics.Texture/LayoutConverter.cs3
3 files changed, 4 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs b/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs
index 856d52a9..c00e2bef 100644
--- a/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs
+++ b/Ryujinx.Graphics.Gpu/Engine/Dma/DmaClass.cs
@@ -222,6 +222,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Dma
target.Info.Height,
1,
1,
+ xCount * srcBpp,
srcStride,
target.Info.FormatInfo.BytesPerPixel,
srcSpan);
diff --git a/Ryujinx.Graphics.Gpu/Image/Texture.cs b/Ryujinx.Graphics.Gpu/Image/Texture.cs
index a13edc69..590356e3 100644
--- a/Ryujinx.Graphics.Gpu/Image/Texture.cs
+++ b/Ryujinx.Graphics.Gpu/Image/Texture.cs
@@ -760,6 +760,7 @@ namespace Ryujinx.Graphics.Gpu.Image
Info.FormatInfo.BlockWidth,
Info.FormatInfo.BlockHeight,
Info.Stride,
+ Info.Stride,
Info.FormatInfo.BytesPerPixel,
data);
}
diff --git a/Ryujinx.Graphics.Texture/LayoutConverter.cs b/Ryujinx.Graphics.Texture/LayoutConverter.cs
index 970d08cb..1039ea26 100644
--- a/Ryujinx.Graphics.Texture/LayoutConverter.cs
+++ b/Ryujinx.Graphics.Texture/LayoutConverter.cs
@@ -248,6 +248,7 @@ namespace Ryujinx.Graphics.Texture
int height,
int blockWidth,
int blockHeight,
+ int lineSize,
int stride,
int bytesPerPixel,
ReadOnlySpan<byte> data)
@@ -256,7 +257,7 @@ namespace Ryujinx.Graphics.Texture
int h = BitUtils.DivRoundUp(height, blockHeight);
int outStride = BitUtils.AlignUp(w * bytesPerPixel, HostStrideAlignment);
- int lineSize = Math.Min(stride, outStride);
+ lineSize = Math.Min(lineSize, outStride);
Span<byte> output = new byte[h * outStride];