diff options
| author | gdk <gab.dark.100@gmail.com> | 2019-10-13 23:24:31 -0300 |
|---|---|---|
| committer | Thog <thog@protonmail.com> | 2020-01-09 02:13:00 +0100 |
| commit | cdeeac163fb134a34c547cf1f45a4dd21daa41ea (patch) | |
| tree | af5f181aff8d7a7ef601004b79eb6e6fbf6eacda | |
| parent | 1bb08742c1df4ac1a9d4a5240fdf186db77bfbcc (diff) | |
Improved Min/Mip -> MinFilter enum conversion
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Image/SamplerDescriptor.cs | 38 | ||||
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Image/SamplerMinFilter.cs | 8 | ||||
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Image/SamplerMipFilter.cs | 9 |
3 files changed, 52 insertions, 3 deletions
diff --git a/Ryujinx.Graphics.Gpu/Image/SamplerDescriptor.cs b/Ryujinx.Graphics.Gpu/Image/SamplerDescriptor.cs index 0a43dd1b..c94473a2 100644 --- a/Ryujinx.Graphics.Gpu/Image/SamplerDescriptor.cs +++ b/Ryujinx.Graphics.Gpu/Image/SamplerDescriptor.cs @@ -94,10 +94,42 @@ namespace Ryujinx.Graphics.Gpu.Image public MinFilter UnpackMinFilter() { - int minFilter = (int)(Word1 >> 4) & 3; - int mipFilter = (int)(Word1 >> 6) & 3; + SamplerMinFilter minFilter = (SamplerMinFilter)((Word1 >> 4) & 3); + SamplerMipFilter mipFilter = (SamplerMipFilter)((Word1 >> 6) & 3); - return (MinFilter)(minFilter + (mipFilter - 1) * 2); + return ConvertFilter(minFilter, mipFilter); + } + + private static MinFilter ConvertFilter(SamplerMinFilter minFilter, SamplerMipFilter mipFilter) + { + switch (mipFilter) + { + case SamplerMipFilter.None: + switch (minFilter) + { + case SamplerMinFilter.Nearest: return MinFilter.Nearest; + case SamplerMinFilter.Linear: return MinFilter.Linear; + } + break; + + case SamplerMipFilter.Nearest: + switch (minFilter) + { + case SamplerMinFilter.Nearest: return MinFilter.NearestMipmapNearest; + case SamplerMinFilter.Linear: return MinFilter.LinearMipmapNearest; + } + break; + + case SamplerMipFilter.Linear: + switch (minFilter) + { + case SamplerMinFilter.Nearest: return MinFilter.NearestMipmapLinear; + case SamplerMinFilter.Linear: return MinFilter.LinearMipmapLinear; + } + break; + } + + return MinFilter.Nearest; } public ReductionFilter UnpackReductionFilter() diff --git a/Ryujinx.Graphics.Gpu/Image/SamplerMinFilter.cs b/Ryujinx.Graphics.Gpu/Image/SamplerMinFilter.cs new file mode 100644 index 00000000..b3274b64 --- /dev/null +++ b/Ryujinx.Graphics.Gpu/Image/SamplerMinFilter.cs @@ -0,0 +1,8 @@ +namespace Ryujinx.Graphics.Gpu.Image +{ + enum SamplerMinFilter + { + Nearest = 1, + Linear + } +} diff --git a/Ryujinx.Graphics.Gpu/Image/SamplerMipFilter.cs b/Ryujinx.Graphics.Gpu/Image/SamplerMipFilter.cs new file mode 100644 index 00000000..0bc9eb92 --- /dev/null +++ b/Ryujinx.Graphics.Gpu/Image/SamplerMipFilter.cs @@ -0,0 +1,9 @@ +namespace Ryujinx.Graphics.Gpu.Image +{ + enum SamplerMipFilter + { + None = 1, + Nearest, + Linear + } +} |
