OpenGL-Fehler lassen sich mit einer Kombination aus glGetError() und den Debug-Ausgaben von Mesa genauer eingrenzen. Eine am 15. Oktober 2015 veröffentlichten Anleitung zeigt dafür kurze C-Beispiele und eine Ausgabe, die den betroffenen OpenGL-Aufruf benennt.
glGetError() liefert zunächst nur einen Fehlercode aus dem OpenGL-Zustand. Die im Beispiel verwendete Schleife liest so lange Fehler aus, bis GL_NO_ERROR erreicht ist. Dabei werden Werte wie GL_INVALID_OPERATION, GL_INVALID_ENUM, GL_INVALID_VALUE und GL_INVALID_FRAMEBUFFER_OPERATION in lesbare Bezeichnungen übersetzt.
Mesa ergänzt den Fehlercode um eine Meldung
Die Abfrage zeigt allerdings nicht automatisch, an welcher Stelle der Fehler entstanden ist. Der Beitrag verweist deshalb auf die Umgebungsvariable MESA_DEBUG. Mit MESA_DEBUG=1 kann Mesa zusätzliche Hinweise ausgeben, etwa Mesa: User error: GL_INVALID_VALUE in glClear(0x5f01).
Für längere Renderpfade empfiehlt die Anleitung eine Makrofunktion, die die Fehlerabfrage am Ende eines OpenGL-Aufrufs ausführt. So lässt sich die Position der Abfrage im eigenen Quelltext festhalten, während Mesa den konkreten Fehler und den betroffenen Funktionsaufruf ergänzt. Die Arbeitsweise knüpft an die frühere Übersicht zu Mesa 11.0 an, die bereits die Abhängigkeit von Grafikfunktionen und Treibern beschrieben hat.
Die vollständigen Codebeispiele und die beschriebenen Ausgaben stehen in der Originalanleitung zum OpenGL-Debugging mit Mesa.
