aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-08-07 12:20:37 -0300
committerGitHub <noreply@github.com>2023-08-07 12:20:37 -0300
commit42750a74f82ee69cabfaf3c5497af6a8ebc13eca (patch)
tree5d42a8945c0e692a0a96752752aac00666fe2c43 /src/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs
parent3ab0a71c7bfb60b20008894db3fb6534436753e6 (diff)
Do not add more code after alpha test discard on fragment shader (#5529)1.1.976
* Do not add more code after alpha test discard on fragment shader * Shader cache version bump
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs')
-rw-r--r--src/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs b/src/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs
index 08d4b915..614b275b 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs
@@ -304,11 +304,11 @@ namespace Ryujinx.Graphics.Shader.Translation
PrepareForVertexReturn();
}
- public void PrepareForReturn()
+ public bool PrepareForReturn()
{
if (IsNonMain)
{
- return;
+ return true;
}
if (Config.LastInVertexPipeline &&
@@ -383,13 +383,13 @@ namespace Ryujinx.Graphics.Shader.Translation
AlphaTestOp alphaTestOp = Config.GpuAccessor.QueryAlphaTestCompare();
- if (alphaTestOp != AlphaTestOp.Always && (Config.OmapTargets & 8) != 0)
+ if (alphaTestOp != AlphaTestOp.Always)
{
if (alphaTestOp == AlphaTestOp.Never)
{
this.Discard();
}
- else
+ else if ((Config.OmapTargets & 8) != 0)
{
Instruction comparator = alphaTestOp switch
{
@@ -415,6 +415,12 @@ namespace Ryujinx.Graphics.Shader.Translation
}
}
+ // We don't need to output anything if alpha test always fails.
+ if (alphaTestOp == AlphaTestOp.Never)
+ {
+ return false;
+ }
+
int regIndexBase = 0;
for (int rtIndex = 0; rtIndex < 8; rtIndex++)
@@ -462,6 +468,8 @@ namespace Ryujinx.Graphics.Shader.Translation
}
}
}
+
+ return true;
}
private void GenerateAlphaToCoverageDitherDiscard()