diff options
| author | gdk <gab.dark.100@gmail.com> | 2019-11-15 00:01:54 -0300 |
|---|---|---|
| committer | Thog <thog@protonmail.com> | 2020-01-09 02:13:00 +0100 |
| commit | 04102e5c9db600d4ea4ffc0b514bda6f5e300bca (patch) | |
| tree | 0ac17582778c118b98fc6d1a7f26f17b441374fc /Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs | |
| parent | eea73bc421d359f0df60f377d2f921357a217416 (diff) | |
Make the shader translator more error resilient
Diffstat (limited to 'Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs')
| -rw-r--r-- | Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs b/Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs index 2654a05b..4a05b43b 100644 --- a/Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs +++ b/Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs @@ -170,7 +170,7 @@ namespace Ryujinx.Graphics.Shader.Instructions if (op is OpCodeTexs texsOp) { type = GetSamplerType (texsOp.Target); - flags = GetSamplerFlags(texsOp.Target); + flags = GetTextureFlags(texsOp.Target); if ((type & SamplerType.Array) != 0) { @@ -240,7 +240,7 @@ namespace Ryujinx.Graphics.Shader.Instructions else if (op is OpCodeTlds tldsOp) { type = GetSamplerType (tldsOp.Target); - flags = GetSamplerFlags(tldsOp.Target) | TextureFlags.IntCoords; + flags = GetTextureFlags(tldsOp.Target) | TextureFlags.IntCoords; switch (tldsOp.Target) { @@ -874,7 +874,9 @@ namespace Ryujinx.Graphics.Shader.Instructions return SamplerType.Texture3D; } - throw new ArgumentException($"Invalid image target \"{target}\"."); + // TODO: Error. + + return SamplerType.Texture2D; } private static SamplerType GetSamplerType(TextureDimensions dimensions) @@ -923,7 +925,9 @@ namespace Ryujinx.Graphics.Shader.Instructions return SamplerType.TextureCube; } - throw new ArgumentException($"Invalid texture type \"{type}\"."); + // TODO: Error. + + return SamplerType.Texture2D; } private static SamplerType GetSamplerType(TexelLoadTarget type) @@ -950,10 +954,12 @@ namespace Ryujinx.Graphics.Shader.Instructions return SamplerType.Texture2D | SamplerType.Array; } - throw new ArgumentException($"Invalid texture type \"{type}\"."); + // TODO: Error. + + return SamplerType.Texture2D; } - private static TextureFlags GetSamplerFlags(Decoders.TextureTarget type) + private static TextureFlags GetTextureFlags(Decoders.TextureTarget type) { switch (type) { @@ -976,10 +982,12 @@ namespace Ryujinx.Graphics.Shader.Instructions return TextureFlags.None; } - throw new ArgumentException($"Invalid texture type \"{type}\"."); + // TODO: Error. + + return TextureFlags.None; } - private static TextureFlags GetSamplerFlags(TexelLoadTarget type) + private static TextureFlags GetTextureFlags(TexelLoadTarget type) { switch (type) { @@ -997,7 +1005,9 @@ namespace Ryujinx.Graphics.Shader.Instructions return TextureFlags.LodLevel | TextureFlags.Offset; } - throw new ArgumentException($"Invalid texture type \"{type}\"."); + // TODO: Error. + + return TextureFlags.None; } } }
\ No newline at end of file |
