aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-12-26 17:29:50 -0200
committerGitHub <noreply@github.com>2018-12-26 17:29:50 -0200
commit1fd1ec5664fdf6f29c04f2449cd3d8645e520661 (patch)
tree345ad94bf4cba023e1a8d59c0ec740b3ce6ee7c3
parent0f5b6dfbe8d4bcc4df3f670e366a967d8ea103db (diff)
Do not attempt to read unused attribute, fix attributes count (#520)
-rw-r--r--Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs2
-rw-r--r--Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs5
2 files changed, 6 insertions, 1 deletions
diff --git a/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs b/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
index 92bdd658..e6fb7ea1 100644
--- a/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
+++ b/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
@@ -878,7 +878,7 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- if (DeclInfo.Index >= 16)
+ if (DeclInfo.Index >= 32)
{
throw new InvalidOperationException($"Shader attribute offset {Abuf.Offs} is invalid.");
}
diff --git a/Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs b/Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs
index 6fb038ac..fefd2e67 100644
--- a/Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs
+++ b/Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs
@@ -734,6 +734,11 @@ namespace Ryujinx.Graphics.Graphics3d
long VbPosition = MakeInt64From2xInt32(NvGpuEngine3dReg.VertexArrayNAddress + ArrayIndex * 4);
+ if (VbPosition == 0)
+ {
+ continue;
+ }
+
bool IsConst = ((Packed >> 6) & 1) != 0;
int Offset = (Packed >> 7) & 0x3fff;