From d1146a5af20dcda5bb6bf8cb2f702bca1c789408 Mon Sep 17 00:00:00 2001
From: riperiperi <rhy3756547@hotmail.com>
Date: Sun, 20 Mar 2022 17:48:43 +0000
Subject: [PATCH] Don't restore Viewport 0 if it hasn't been set yet. (#3219)

Fixes a driver crash when starting some games caused by #3217
---
 Ryujinx.Graphics.OpenGL/Pipeline.cs | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/Ryujinx.Graphics.OpenGL/Pipeline.cs b/Ryujinx.Graphics.OpenGL/Pipeline.cs
index 35278629b3..114fa68557 100644
--- a/Ryujinx.Graphics.OpenGL/Pipeline.cs
+++ b/Ryujinx.Graphics.OpenGL/Pipeline.cs
@@ -612,7 +612,7 @@ namespace Ryujinx.Graphics.OpenGL
                     _program?.Bind();
                     _unit0Sampler?.Bind(0);
 
-                    GL.ViewportArray(0, 1, _viewportArray);
+                    RestoreViewport0();
 
                     Enable(EnableCap.CullFace, _cullEnable);
                     Enable(EnableCap.StencilTest, _stencilTestEnable);
@@ -1501,7 +1501,10 @@ namespace Ryujinx.Graphics.OpenGL
 
         public void RestoreViewport0()
         {
-            GL.ViewportArray(0, 1, _viewportArray);
+            if (_viewportArray.Length > 0)
+            {
+                GL.ViewportArray(0, 1, _viewportArray);
+            }
         }
 
         public bool TryHostConditionalRendering(ICounterEvent value, ulong compare, bool isEqual)