forked from Mirror/Ryujinx
44 lines
1.2 KiB
C#
44 lines
1.2 KiB
C#
|
using OpenTK.Graphics.OpenGL;
|
||
|
using System;
|
||
|
using System.Runtime.InteropServices;
|
||
|
|
||
|
namespace Ryujinx.Graphics.OpenGL
|
||
|
{
|
||
|
public static class Debugger
|
||
|
{
|
||
|
private static DebugProc _debugCallback;
|
||
|
|
||
|
public static void Initialize()
|
||
|
{
|
||
|
GL.Enable(EnableCap.DebugOutputSynchronous);
|
||
|
|
||
|
int[] array = null;
|
||
|
|
||
|
GL.DebugMessageControl(DebugSourceControl.DontCare, DebugTypeControl.DontCare, DebugSeverityControl.DontCare, 0, array, true);
|
||
|
|
||
|
_debugCallback = PrintDbg;
|
||
|
|
||
|
GL.DebugMessageCallback(_debugCallback, IntPtr.Zero);
|
||
|
}
|
||
|
|
||
|
private static void PrintDbg(
|
||
|
DebugSource source,
|
||
|
DebugType type,
|
||
|
int id,
|
||
|
DebugSeverity severity,
|
||
|
int length,
|
||
|
IntPtr message,
|
||
|
IntPtr userParam)
|
||
|
{
|
||
|
string msg = Marshal.PtrToStringAnsi(message);
|
||
|
|
||
|
if (type == DebugType.DebugTypeError && !msg.Contains("link"))
|
||
|
{
|
||
|
throw new Exception(msg);
|
||
|
}
|
||
|
|
||
|
System.Console.WriteLine("GL message: " + source + " " + type + " " + severity + " " + msg);
|
||
|
}
|
||
|
}
|
||
|
}
|