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 /Ryujinx.Graphics.Gpu/Image/SamplerDescriptor.cs | |
| parent | 1bb08742c1df4ac1a9d4a5240fdf186db77bfbcc (diff) | |
Improved Min/Mip -> MinFilter enum conversion
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Image/SamplerDescriptor.cs')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Image/SamplerDescriptor.cs | 38 |
1 files changed, 35 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() |
