diff options
Diffstat (limited to 'Ryujinx.Core/Gpu/TextureHelper.cs')
| -rw-r--r-- | Ryujinx.Core/Gpu/TextureHelper.cs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Ryujinx.Core/Gpu/TextureHelper.cs b/Ryujinx.Core/Gpu/TextureHelper.cs new file mode 100644 index 00000000..f0ebc1f0 --- /dev/null +++ b/Ryujinx.Core/Gpu/TextureHelper.cs @@ -0,0 +1,36 @@ +using ChocolArm64.Memory; +using System; + +namespace Ryujinx.Core.Gpu +{ + static class TextureHelper + { + public static ISwizzle GetSwizzle(Texture Texture, int Width, int Bpp) + { + switch (Texture.Swizzle) + { + case TextureSwizzle.Pitch: + case TextureSwizzle.PitchColorKey: + return new LinearSwizzle(Texture.Pitch, Bpp); + + case TextureSwizzle.BlockLinear: + case TextureSwizzle.BlockLinearColorKey: + return new BlockLinearSwizzle(Width, Bpp, Texture.BlockHeight); + } + + throw new NotImplementedException(Texture.Swizzle.ToString()); + } + + public static (AMemory Memory, long Position) GetMemoryAndPosition( + IAMemory Memory, + long Position) + { + if (Memory is NvGpuVmm Vmm) + { + return (Vmm.Memory, Vmm.GetPhysicalAddress(Position)); + } + + return ((AMemory)Memory, Position); + } + } +} |
