diff options
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Instructions/InstEmitSurface.cs')
-rw-r--r-- | src/Ryujinx.Graphics.Shader/Instructions/InstEmitSurface.cs | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Instructions/InstEmitSurface.cs b/src/Ryujinx.Graphics.Shader/Instructions/InstEmitSurface.cs index 6bf7de7f..0aac0ffa 100644 --- a/src/Ryujinx.Graphics.Shader/Instructions/InstEmitSurface.cs +++ b/src/Ryujinx.Graphics.Shader/Instructions/InstEmitSurface.cs @@ -1,5 +1,6 @@ using Ryujinx.Graphics.Shader.Decoders; using Ryujinx.Graphics.Shader.IntermediateRepresentation; +using Ryujinx.Graphics.Shader.StructuredIr; using Ryujinx.Graphics.Shader.Translation; using System; using System.Collections.Generic; @@ -194,7 +195,7 @@ namespace Ryujinx.Graphics.Shader.Instructions if (type == SamplerType.None) { - context.Config.GpuAccessor.Log("Invalid image atomic sampler type."); + context.TranslatorContext.GpuAccessor.Log("Invalid image atomic sampler type."); return; } @@ -258,7 +259,7 @@ namespace Ryujinx.Graphics.Shader.Instructions // TODO: FP and 64-bit formats. TextureFormat format = size == SuatomSize.Sd32 || size == SuatomSize.Sd64 - ? (isBindless ? TextureFormat.Unknown : context.Config.GetTextureFormatAtomic(imm)) + ? (isBindless ? TextureFormat.Unknown : ShaderProperties.GetTextureFormatAtomic(context.TranslatorContext.GpuAccessor, imm)) : GetTextureFormat(size); if (compareAndSwap) @@ -277,7 +278,7 @@ namespace Ryujinx.Graphics.Shader.Instructions flags |= TextureFlags.Bindless; } - int binding = isBindless ? 0 : context.Config.ResourceManager.GetTextureOrImageBinding( + int binding = isBindless ? 0 : context.ResourceManager.GetTextureOrImageBinding( Instruction.ImageAtomic, type, format, @@ -309,13 +310,11 @@ namespace Ryujinx.Graphics.Shader.Instructions return; } - context.Config.SetUsedFeature(FeatureFlags.IntegerSampling); - SamplerType type = ConvertSamplerType(dimensions); if (type == SamplerType.None) { - context.Config.GpuAccessor.Log("Invalid image store sampler type."); + context.TranslatorContext.GpuAccessor.Log("Invalid image store sampler type."); return; } @@ -388,9 +387,9 @@ namespace Ryujinx.Graphics.Shader.Instructions Array.Resize(ref dests, outputIndex); } - TextureFormat format = isBindless ? TextureFormat.Unknown : context.Config.GetTextureFormat(handle); + TextureFormat format = isBindless ? TextureFormat.Unknown : ShaderProperties.GetTextureFormat(context.TranslatorContext.GpuAccessor, handle); - int binding = isBindless ? 0 : context.Config.ResourceManager.GetTextureOrImageBinding( + int binding = isBindless ? 0 : context.ResourceManager.GetTextureOrImageBinding( Instruction.ImageLoad, type, format, @@ -433,7 +432,7 @@ namespace Ryujinx.Graphics.Shader.Instructions TextureFormat format = GetTextureFormat(size); - int binding = isBindless ? 0 : context.Config.ResourceManager.GetTextureOrImageBinding( + int binding = isBindless ? 0 : context.ResourceManager.GetTextureOrImageBinding( Instruction.ImageLoad, type, format, @@ -477,7 +476,7 @@ namespace Ryujinx.Graphics.Shader.Instructions if (type == SamplerType.None) { - context.Config.GpuAccessor.Log("Invalid image reduction sampler type."); + context.TranslatorContext.GpuAccessor.Log("Invalid image reduction sampler type."); return; } @@ -539,7 +538,7 @@ namespace Ryujinx.Graphics.Shader.Instructions // TODO: FP and 64-bit formats. TextureFormat format = size == SuatomSize.Sd32 || size == SuatomSize.Sd64 - ? (isBindless ? TextureFormat.Unknown : context.Config.GetTextureFormatAtomic(imm)) + ? (isBindless ? TextureFormat.Unknown : ShaderProperties.GetTextureFormatAtomic(context.TranslatorContext.GpuAccessor, imm)) : GetTextureFormat(size); sourcesList.Add(Rb()); @@ -553,7 +552,7 @@ namespace Ryujinx.Graphics.Shader.Instructions flags |= TextureFlags.Bindless; } - int binding = isBindless ? 0 : context.Config.ResourceManager.GetTextureOrImageBinding( + int binding = isBindless ? 0 : context.ResourceManager.GetTextureOrImageBinding( Instruction.ImageAtomic, type, format, @@ -582,7 +581,7 @@ namespace Ryujinx.Graphics.Shader.Instructions if (type == SamplerType.None) { - context.Config.GpuAccessor.Log("Invalid image store sampler type."); + context.TranslatorContext.GpuAccessor.Log("Invalid image store sampler type."); return; } @@ -647,7 +646,7 @@ namespace Ryujinx.Graphics.Shader.Instructions if (!isBindless) { - format = context.Config.GetTextureFormat(imm); + format = ShaderProperties.GetTextureFormat(context.TranslatorContext.GpuAccessor, imm); } } else @@ -680,7 +679,7 @@ namespace Ryujinx.Graphics.Shader.Instructions flags |= TextureFlags.Coherent; } - int binding = isBindless ? 0 : context.Config.ResourceManager.GetTextureOrImageBinding( + int binding = isBindless ? 0 : context.ResourceManager.GetTextureOrImageBinding( Instruction.ImageStore, type, format, |