Răsfoiți Sursa

Force dynamic state update after rasterizer discard disable (#7007)

gdkchan 1 an în urmă
părinte
comite
1668ba913f
1 a modificat fișierele cu 7 adăugiri și 0 ștergeri
  1. 7 0
      src/Ryujinx.Graphics.Vulkan/PipelineBase.cs

+ 7 - 0
src/Ryujinx.Graphics.Vulkan/PipelineBase.cs

@@ -1020,6 +1020,13 @@ namespace Ryujinx.Graphics.Vulkan
         {
             _newState.RasterizerDiscardEnable = discard;
             SignalStateChange();
+
+            if (!discard && Gd.Vendor == Vendor.Qualcomm)
+            {
+                // On Adreno, enabling rasterizer discard somehow corrupts the viewport state.
+                // Force it to be updated on next use to work around this bug.
+                DynamicState.ForceAllDirty();
+            }
         }
 
         public void SetRenderTargetColorMasks(ReadOnlySpan<uint> componentMask)