|
|
@@ -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()
|