Log shader compile errors with Warning level (#2617)

* Log shader compile errors with Warning level

These are infrequent enough that I think it's worth dumping any errors into the log. They also keep causing graphical glitches, and the only indication that anything went wrong is a debug log that is never enabled.

* Add maximum length for shader log
This commit is contained in:
riperiperi 2023-02-09 02:50:18 +00:00 committed by GitHub
parent ec8d4f3af5
commit f1943fd0b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,6 +10,8 @@ namespace Ryujinx.Graphics.OpenGL
{ {
class Program : IProgram class Program : IProgram
{ {
private const int MaxShaderLogLength = 2048;
public int Handle { get; private set; } public int Handle { get; private set; }
public bool IsLinked public bool IsLinked
@ -115,9 +117,16 @@ namespace Ryujinx.Graphics.OpenGL
if (status == 0) if (status == 0)
{ {
// Use GL.GetProgramInfoLog(Handle), it may be too long to print on the log.
_status = ProgramLinkStatus.Failure; _status = ProgramLinkStatus.Failure;
Logger.Debug?.Print(LogClass.Gpu, "Shader linking failed.");
string log = GL.GetProgramInfoLog(Handle);
if (log.Length > MaxShaderLogLength)
{
log = log.Substring(0, MaxShaderLogLength) + "...";
}
Logger.Warning?.Print(LogClass.Gpu, $"Shader linking failed: \n{log}");
} }
else else
{ {