diff options
Diffstat (limited to 'Ryujinx.Graphics.OpenGL/Debugger.cs')
-rw-r--r-- | Ryujinx.Graphics.OpenGL/Debugger.cs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.OpenGL/Debugger.cs b/Ryujinx.Graphics.OpenGL/Debugger.cs new file mode 100644 index 00000000..9da98ae1 --- /dev/null +++ b/Ryujinx.Graphics.OpenGL/Debugger.cs @@ -0,0 +1,43 @@ +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); + } + } +} |