From 1f93fd52d9878b98b75e69dfcf41360f3bc16fe0 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Mon, 14 Mar 2022 19:35:41 -0300 Subject: [PATCH] Do not initialize geometry shader passthrough attributes (#3196) --- Ryujinx.Graphics.Shader/Translation/Translator.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Ryujinx.Graphics.Shader/Translation/Translator.cs b/Ryujinx.Graphics.Shader/Translation/Translator.cs index e594c818a..5119dfb64 100644 --- a/Ryujinx.Graphics.Shader/Translation/Translator.cs +++ b/Ryujinx.Graphics.Shader/Translation/Translator.cs @@ -218,10 +218,17 @@ namespace Ryujinx.Graphics.Shader.Translation while (usedAttributes != UInt128.Zero) { int index = usedAttributes.TrailingZeroCount(); - - InitializeOutputComponent(context, AttributeConsts.UserAttributeBase + index * 4, perPatch: false); + int vecIndex = index / 4; usedAttributes &= ~UInt128.Pow2(index); + + // We don't need to initialize passthrough attributes. + if ((context.Config.PassthroughAttributes & (1 << vecIndex)) != 0) + { + continue; + } + + InitializeOutputComponent(context, AttributeConsts.UserAttributeBase + index * 4, perPatch: false); } UInt128 usedAttributesPerPatch = context.Config.NextInputAttributesPerPatchComponents;