53 lines
2.6 KiB
C
53 lines
2.6 KiB
C
|
|
#ifndef _PIUMA_RENDER_GL_HELPERS_H_
|
||
|
|
#define _PIUMA_RENDER_GL_HELPERS_H_
|
||
|
|
|
||
|
|
#include "../debug/logger.h"
|
||
|
|
|
||
|
|
inline void APIENTRY glDebugOutput(GLenum source, GLenum type, unsigned int id, GLenum severity, GLsizei length, const char *message, const void *userParam)
|
||
|
|
{
|
||
|
|
// ignore non-significant error/warning codes
|
||
|
|
if(id == 131169 || id == 131185 || id == 131218 || id == 131204)
|
||
|
|
return;
|
||
|
|
|
||
|
|
if (severity == GL_DEBUG_SEVERITY_NOTIFICATION)
|
||
|
|
return;
|
||
|
|
|
||
|
|
// @Cleanup: LOG does not replace printf here. We need to merge the multiple printfs into a single log message
|
||
|
|
LOG(LOG_DEBUG, "---------------");
|
||
|
|
LOG(LOG_DEBUG, "Debug message (%u): %s", id, message);
|
||
|
|
|
||
|
|
switch (source)
|
||
|
|
{
|
||
|
|
case GL_DEBUG_SOURCE_API: LOG(LOG_DEBUG, "Source: API"); break;
|
||
|
|
case GL_DEBUG_SOURCE_WINDOW_SYSTEM: LOG(LOG_DEBUG, "Source: Window System"); break;
|
||
|
|
case GL_DEBUG_SOURCE_SHADER_COMPILER: LOG(LOG_DEBUG, "Source: Shader Compiler"); break;
|
||
|
|
case GL_DEBUG_SOURCE_THIRD_PARTY: LOG(LOG_DEBUG, "Source: Third Party"); break;
|
||
|
|
case GL_DEBUG_SOURCE_APPLICATION: LOG(LOG_DEBUG, "Source: Application"); break;
|
||
|
|
case GL_DEBUG_SOURCE_OTHER: LOG(LOG_DEBUG, "Source: Other"); break;
|
||
|
|
}
|
||
|
|
|
||
|
|
switch (type)
|
||
|
|
{
|
||
|
|
case GL_DEBUG_TYPE_ERROR: LOG(LOG_DEBUG, "Type: Error"); break;
|
||
|
|
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: LOG(LOG_DEBUG, "Type: Deprecated Behaviour"); break;
|
||
|
|
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: LOG(LOG_DEBUG, "Type: Undefined Behaviour"); break;
|
||
|
|
case GL_DEBUG_TYPE_PORTABILITY: LOG(LOG_DEBUG, "Type: Portability"); break;
|
||
|
|
case GL_DEBUG_TYPE_PERFORMANCE: LOG(LOG_DEBUG, "Type: Performance"); break;
|
||
|
|
case GL_DEBUG_TYPE_MARKER: LOG(LOG_DEBUG, "Type: Marker"); break;
|
||
|
|
case GL_DEBUG_TYPE_PUSH_GROUP: LOG(LOG_DEBUG, "Type: Push Group"); break;
|
||
|
|
case GL_DEBUG_TYPE_POP_GROUP: LOG(LOG_DEBUG, "Type: Pop Group"); break;
|
||
|
|
case GL_DEBUG_TYPE_OTHER: LOG(LOG_DEBUG, "Type: Other"); break;
|
||
|
|
}
|
||
|
|
|
||
|
|
switch (severity)
|
||
|
|
{
|
||
|
|
case GL_DEBUG_SEVERITY_HIGH: LOG(LOG_DEBUG, "Severity: high"); break;
|
||
|
|
case GL_DEBUG_SEVERITY_MEDIUM: LOG(LOG_DEBUG, "Severity: medium"); break;
|
||
|
|
case GL_DEBUG_SEVERITY_LOW: LOG(LOG_DEBUG, "Severity: low"); break;
|
||
|
|
case GL_DEBUG_SEVERITY_NOTIFICATION: LOG(LOG_DEBUG, "Severity: notification"); break;
|
||
|
|
}
|
||
|
|
LOG(LOG_DEBUG, "");
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|