mirror of https://github.com/xemu-project/xemu.git
nv2a: Log gl errors to stderr
This commit is contained in:
parent
49edc43439
commit
c8ceb6a4ed
|
@ -44,6 +44,97 @@
|
|||
static bool has_GL_GREMEDY_frame_terminator = false;
|
||||
static bool has_GL_KHR_debug = false;
|
||||
|
||||
#ifdef STREAM_GL_DEBUG_MESSAGES
|
||||
|
||||
static const char *gl_debug_type_names[] = {
|
||||
"ERROR",
|
||||
"DEPRECATED",
|
||||
"UNDEFINED",
|
||||
"PORTABILITY",
|
||||
"PERFORMANCE",
|
||||
"MARKER",
|
||||
"PUSH_GROUP",
|
||||
"POP_GROUP",
|
||||
"OTHER",
|
||||
};
|
||||
|
||||
static const char *gl_debug_severity_names[] = {
|
||||
"HIGH",
|
||||
"MEDIUM",
|
||||
"LOW",
|
||||
"NOTIFICATION",
|
||||
};
|
||||
|
||||
static void APIENTRY print_gl_debug_message(GLenum /*source*/, GLenum type,
|
||||
GLuint id, GLenum severity,
|
||||
GLsizei length,
|
||||
const GLchar *message,
|
||||
const void *userParam)
|
||||
{
|
||||
const char *type_name = "<UNKNOWN>";
|
||||
const char *severity_name = "<UNKNOWN>";
|
||||
|
||||
if (type != GL_DEBUG_TYPE_ERROR) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
default:
|
||||
break;
|
||||
case GL_DEBUG_TYPE_ERROR:
|
||||
type_name = gl_debug_type_names[0];
|
||||
break;
|
||||
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
|
||||
type_name = gl_debug_type_names[1];
|
||||
break;
|
||||
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
|
||||
type_name = gl_debug_type_names[2];
|
||||
break;
|
||||
case GL_DEBUG_TYPE_PORTABILITY:
|
||||
type_name = gl_debug_type_names[3];
|
||||
break;
|
||||
case GL_DEBUG_TYPE_PERFORMANCE:
|
||||
type_name = gl_debug_type_names[4];
|
||||
break;
|
||||
case GL_DEBUG_TYPE_MARKER:
|
||||
type_name = gl_debug_type_names[5];
|
||||
break;
|
||||
case GL_DEBUG_TYPE_PUSH_GROUP:
|
||||
type_name = gl_debug_type_names[6];
|
||||
break;
|
||||
case GL_DEBUG_TYPE_POP_GROUP:
|
||||
type_name = gl_debug_type_names[7];
|
||||
break;
|
||||
case GL_DEBUG_TYPE_OTHER:
|
||||
type_name = gl_debug_type_names[8];
|
||||
break;
|
||||
}
|
||||
|
||||
switch (severity) {
|
||||
default:
|
||||
break;
|
||||
case GL_DEBUG_SEVERITY_HIGH:
|
||||
severity_name = gl_debug_severity_names[0];
|
||||
break;
|
||||
case GL_DEBUG_SEVERITY_MEDIUM:
|
||||
severity_name = gl_debug_severity_names[1];
|
||||
break;
|
||||
case GL_DEBUG_SEVERITY_LOW:
|
||||
severity_name = gl_debug_severity_names[2];
|
||||
break;
|
||||
case GL_DEBUG_SEVERITY_NOTIFICATION:
|
||||
severity_name = gl_debug_severity_names[3];
|
||||
break;
|
||||
}
|
||||
|
||||
if (length < 0) {
|
||||
fprintf(stderr,"GLDBG[%s][%s]> %s\n", type_name, severity_name, message);
|
||||
} else {
|
||||
fprintf(stderr,"GLDBG[%s][%s]> %*s\n", type_name, severity_name, length, message);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void gl_debug_initialize(void)
|
||||
{
|
||||
has_GL_KHR_debug = glo_check_extension("GL_KHR_debug");
|
||||
|
@ -62,8 +153,12 @@ void gl_debug_initialize(void)
|
|||
* so skip the call for this platform.
|
||||
*/
|
||||
#else
|
||||
glEnable(GL_DEBUG_OUTPUT);
|
||||
assert(glGetError() == GL_NO_ERROR);
|
||||
glEnable(GL_DEBUG_OUTPUT);
|
||||
assert(glGetError() == GL_NO_ERROR);
|
||||
#endif
|
||||
|
||||
#ifdef STREAM_GL_DEBUG_MESSAGES
|
||||
glDebugMessageCallback(print_gl_debug_message, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue