From 80ff2eab2992a3373ee79475d891ef126d67a4a2 Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Mon, 30 Dec 2019 14:47:20 -0300
Subject: [PATCH] Change GPU errors to debug and reduce log messages

---
 Ryujinx.Graphics.Gpu/Engine/Methods.cs    |  2 +-
 Ryujinx.Graphics.Gpu/Image/Texture.cs     |  2 +-
 Ryujinx.Graphics.Gpu/Image/TexturePool.cs |  2 +-
 Ryujinx.Graphics.OpenGL/Debugger.cs       |  2 +-
 Ryujinx.Graphics.OpenGL/EnumConversion.cs | 32 +++++++++++------------
 Ryujinx.Graphics.OpenGL/Pipeline.cs       |  6 ++---
 Ryujinx.Graphics.OpenGL/Program.cs        |  3 ++-
 Ryujinx.Graphics.OpenGL/TextureStorage.cs |  2 +-
 8 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/Ryujinx.Graphics.Gpu/Engine/Methods.cs b/Ryujinx.Graphics.Gpu/Engine/Methods.cs
index 95a25f5c67..35f09ad318 100644
--- a/Ryujinx.Graphics.Gpu/Engine/Methods.cs
+++ b/Ryujinx.Graphics.Gpu/Engine/Methods.cs
@@ -446,7 +446,7 @@ namespace Ryujinx.Graphics.Gpu.Engine
 
                 if (!FormatTable.TryGetAttribFormat(vertexAttrib.UnpackFormat(), out Format format))
                 {
-                    Logger.PrintError(LogClass.Gpu, $"Invalid attribute format 0x{vertexAttrib.UnpackFormat():X}.");
+                    Logger.PrintDebug(LogClass.Gpu, $"Invalid attribute format 0x{vertexAttrib.UnpackFormat():X}.");
 
                     format = Format.R32G32B32A32Float;
                 }
diff --git a/Ryujinx.Graphics.Gpu/Image/Texture.cs b/Ryujinx.Graphics.Gpu/Image/Texture.cs
index 6569786876..9b5c19f3aa 100644
--- a/Ryujinx.Graphics.Gpu/Image/Texture.cs
+++ b/Ryujinx.Graphics.Gpu/Image/Texture.cs
@@ -347,7 +347,7 @@ namespace Ryujinx.Graphics.Gpu.Image
                 {
                     string texInfo = $"{Info.Target} {Info.FormatInfo.Format} {Info.Width}x{Info.Height}x{Info.DepthOrLayers} levels {Info.Levels}";
 
-                    Logger.PrintError(LogClass.Gpu, $"Invalid ASTC texture at 0x{Info.Address:X} ({texInfo}).");
+                    Logger.PrintDebug(LogClass.Gpu, $"Invalid ASTC texture at 0x{Info.Address:X} ({texInfo}).");
                 }
 
                 data = decoded;
diff --git a/Ryujinx.Graphics.Gpu/Image/TexturePool.cs b/Ryujinx.Graphics.Gpu/Image/TexturePool.cs
index c45df96e34..f6aede7979 100644
--- a/Ryujinx.Graphics.Gpu/Image/TexturePool.cs
+++ b/Ryujinx.Graphics.Gpu/Image/TexturePool.cs
@@ -157,7 +157,7 @@ namespace Ryujinx.Graphics.Gpu.Image
 
             if (!FormatTable.TryGetTextureFormat(format, srgb, out FormatInfo formatInfo))
             {
-                Logger.PrintError(LogClass.Gpu, $"Invalid texture format 0x{format:X} (sRGB: {srgb}).");
+                Logger.PrintDebug(LogClass.Gpu, $"Invalid texture format 0x{format:X} (sRGB: {srgb}).");
 
                 formatInfo = FormatInfo.Default;
             }
diff --git a/Ryujinx.Graphics.OpenGL/Debugger.cs b/Ryujinx.Graphics.OpenGL/Debugger.cs
index ff9fcd855a..f34a5048a1 100644
--- a/Ryujinx.Graphics.OpenGL/Debugger.cs
+++ b/Ryujinx.Graphics.OpenGL/Debugger.cs
@@ -34,7 +34,7 @@ namespace Ryujinx.Graphics.OpenGL
             switch (type)
             {
                 case DebugType.DebugTypeError:
-                    Logger.PrintError(LogClass.Gpu, fullMessage);
+                    Logger.PrintDebug(LogClass.Gpu, fullMessage);
                     break;
                 case DebugType.DebugTypePerformance:
                     Logger.PrintWarning(LogClass.Gpu, fullMessage);
diff --git a/Ryujinx.Graphics.OpenGL/EnumConversion.cs b/Ryujinx.Graphics.OpenGL/EnumConversion.cs
index fdd1f97228..0d5ea823b3 100644
--- a/Ryujinx.Graphics.OpenGL/EnumConversion.cs
+++ b/Ryujinx.Graphics.OpenGL/EnumConversion.cs
@@ -28,7 +28,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return TextureWrapMode.ClampToEdge;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(AddressMode)} enum value: {mode}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(AddressMode)} enum value: {mode}.");
 
             return TextureWrapMode.Clamp;
         }
@@ -92,7 +92,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return All.OneMinusConstantAlpha;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(BlendFactor)} enum value: {factor}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(BlendFactor)} enum value: {factor}.");
 
             return All.Zero;
         }
@@ -118,7 +118,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return BlendEquationMode.Max;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(BlendOp)} enum value: {op}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(BlendOp)} enum value: {op}.");
 
             return BlendEquationMode.FuncAdd;
         }
@@ -133,7 +133,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return TextureCompareMode.CompareRToTexture;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(CompareMode)} enum value: {mode}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(CompareMode)} enum value: {mode}.");
 
             return TextureCompareMode.None;
         }
@@ -168,7 +168,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return All.Always;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(CompareOp)} enum value: {op}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(CompareOp)} enum value: {op}.");
 
             return All.Never;
         }
@@ -183,7 +183,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return ClipDepthMode.ZeroToOne;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(DepthMode)} enum value: {mode}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(DepthMode)} enum value: {mode}.");
 
             return ClipDepthMode.NegativeOneToOne;
         }
@@ -198,7 +198,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return All.Stencil;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(DepthStencilMode)} enum value: {mode}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(DepthStencilMode)} enum value: {mode}.");
 
             return All.Depth;
         }
@@ -215,7 +215,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return CullFaceMode.FrontAndBack;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(Face)} enum value: {face}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(Face)} enum value: {face}.");
 
             return CullFaceMode.Back;
         }
@@ -230,7 +230,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return FrontFaceDirection.Ccw;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(FrontFace)} enum value: {frontFace}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(FrontFace)} enum value: {frontFace}.");
 
             return FrontFaceDirection.Cw;
         }
@@ -247,7 +247,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return DrawElementsType.UnsignedInt;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(IndexType)} enum value: {type}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(IndexType)} enum value: {type}.");
 
             return DrawElementsType.UnsignedByte;
         }
@@ -262,7 +262,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return TextureMagFilter.Linear;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(MagFilter)} enum value: {filter}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(MagFilter)} enum value: {filter}.");
 
             return TextureMagFilter.Nearest;
         }
@@ -285,7 +285,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return TextureMinFilter.LinearMipmapLinear;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(MinFilter)} enum value: {filter}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(MinFilter)} enum value: {filter}.");
 
             return TextureMinFilter.Nearest;
         }
@@ -326,7 +326,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return PrimitiveType.Patches;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(PrimitiveTopology)} enum value: {topology}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(PrimitiveTopology)} enum value: {topology}.");
 
             return PrimitiveType.Points;
         }
@@ -353,7 +353,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return OpenTK.Graphics.OpenGL.StencilOp.DecrWrap;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(GAL.StencilOp)} enum value: {op}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(GAL.StencilOp)} enum value: {op}.");
 
             return OpenTK.Graphics.OpenGL.StencilOp.Keep;
         }
@@ -376,7 +376,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return All.Alpha;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(SwizzleComponent)} enum value: {swizzleComponent}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(SwizzleComponent)} enum value: {swizzleComponent}.");
 
             return All.Zero;
         }
@@ -412,7 +412,7 @@ namespace Ryujinx.Graphics.OpenGL
                     return TextureTarget.TextureBuffer;
             }
 
-            Logger.PrintError(LogClass.Gpu, $"Invalid {nameof(Target)} enum value: {target}.");
+            Logger.PrintDebug(LogClass.Gpu, $"Invalid {nameof(Target)} enum value: {target}.");
 
             return TextureTarget.Texture2D;
         }
diff --git a/Ryujinx.Graphics.OpenGL/Pipeline.cs b/Ryujinx.Graphics.OpenGL/Pipeline.cs
index 1a0c71155d..7ca19c9d57 100644
--- a/Ryujinx.Graphics.OpenGL/Pipeline.cs
+++ b/Ryujinx.Graphics.OpenGL/Pipeline.cs
@@ -99,7 +99,7 @@ namespace Ryujinx.Graphics.OpenGL
         {
             if (!_program.IsLinked)
             {
-                Logger.PrintError(LogClass.Gpu, "Dispatch error, shader not linked.");
+                Logger.PrintDebug(LogClass.Gpu, "Dispatch error, shader not linked.");
 
                 return;
             }
@@ -113,7 +113,7 @@ namespace Ryujinx.Graphics.OpenGL
         {
             if (!_program.IsLinked)
             {
-                Logger.PrintError(LogClass.Gpu, "Draw error, shader not linked.");
+                Logger.PrintDebug(LogClass.Gpu, "Draw error, shader not linked.");
 
                 return;
             }
@@ -221,7 +221,7 @@ namespace Ryujinx.Graphics.OpenGL
         {
             if (!_program.IsLinked)
             {
-                Logger.PrintError(LogClass.Gpu, "Draw error, shader not linked.");
+                Logger.PrintDebug(LogClass.Gpu, "Draw error, shader not linked.");
 
                 return;
             }
diff --git a/Ryujinx.Graphics.OpenGL/Program.cs b/Ryujinx.Graphics.OpenGL/Program.cs
index be1cc7de9b..48ec69d13a 100644
--- a/Ryujinx.Graphics.OpenGL/Program.cs
+++ b/Ryujinx.Graphics.OpenGL/Program.cs
@@ -195,7 +195,8 @@ namespace Ryujinx.Graphics.OpenGL
 
             if (status == 0)
             {
-                Logger.PrintError(LogClass.Gpu, $"Shader linking failed: {GL.GetProgramInfoLog(Handle)}");
+                // Use GL.GetProgramInfoLog(Handle), it may be too long to print on the log.
+                Logger.PrintDebug(LogClass.Gpu, "Shader linking failed.");
             }
             else
             {
diff --git a/Ryujinx.Graphics.OpenGL/TextureStorage.cs b/Ryujinx.Graphics.OpenGL/TextureStorage.cs
index ec40a487e9..241b4116ff 100644
--- a/Ryujinx.Graphics.OpenGL/TextureStorage.cs
+++ b/Ryujinx.Graphics.OpenGL/TextureStorage.cs
@@ -136,7 +136,7 @@ namespace Ryujinx.Graphics.OpenGL
                     break;
 
                 default:
-                    Logger.PrintError(LogClass.Gpu, $"Invalid or unsupported texture target: {target}.");
+                    Logger.PrintDebug(LogClass.Gpu, $"Invalid or unsupported texture target: {target}.");
                     break;
             }
         }