aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs
diff options
context:
space:
mode:
authorgdk <gab.dark.100@gmail.com>2019-11-15 00:01:54 -0300
committerThog <thog@protonmail.com>2020-01-09 02:13:00 +0100
commit04102e5c9db600d4ea4ffc0b514bda6f5e300bca (patch)
tree0ac17582778c118b98fc6d1a7f26f17b441374fc /Ryujinx.Graphics.Shader/Instructions/InstEmitTexture.cs
parenteea73bc421d359f0df60f377d2f921357a217416 (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.cs28
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