فهرست منبع

Do not initialize geometry shader passthrough attributes (#3196)

gdkchan 4 سال پیش
والد
کامیت
1f93fd52d9
1فایلهای تغییر یافته به همراه9 افزوده شده و 2 حذف شده
  1. 9 2
      Ryujinx.Graphics.Shader/Translation/Translator.cs

+ 9 - 2
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;