Merge pull request #157 from computerquip/master

Touch up for debug proc
master
computerquip 2014-07-11 17:35:34 -05:00
commit 0198816b29
1 changed files with 43 additions and 62 deletions

View File

@ -24,40 +24,6 @@
#undef near #undef near
#ifdef _DEBUG #ifdef _DEBUG
/* Tables for OpenGL debug */
static const char* debug_source_table[] = {
"Unknown",
"API",
"Window System",
"Shader Compiler",
"Third Party"
"Application",
"Other"
};
static const char* debug_type_table[] = {
"Unknown",
"Error",
"Deprecated Behavior",
"Undefined Behavior",
"Portability",
"Performance",
"Other"
};
static const char* debug_severity_table[] = {
"Unknown",
"High",
"Medium",
"Low",
"Notification"
};
/* ARB and core values are the same. They'll always be linear so no hardcoding.
* The values subtracted are the lowest value in the list of valid values. */
#define GL_DEBUG_SOURCE_OFFSET(x) (x - GL_DEBUG_SOURCE_API_ARB + 1)
#define GL_DEBUG_TYPE_OFFSET(x) (x - GL_DEBUG_TYPE_ERROR_ARB + 1)
#define GL_DEBUG_SEVERITY_OFFSET(x) (x - GL_DEBUG_SEVERITY_HIGH_ARB + 1)
static void APIENTRY gl_debug_proc( static void APIENTRY gl_debug_proc(
GLenum source, GLenum type, GLuint id, GLenum severity, GLenum source, GLenum type, GLuint id, GLenum severity,
@ -66,43 +32,58 @@ static void APIENTRY gl_debug_proc(
UNUSED_PARAMETER(id); UNUSED_PARAMETER(id);
UNUSED_PARAMETER(data); UNUSED_PARAMETER(data);
if(severity == GL_DEBUG_SEVERITY_NOTIFICATION) char *source_str, *type_str, *severity_str;
severity = GL_DEBUG_SEVERITY_LOW + 1;
int source_table_offset = GL_DEBUG_SOURCE_OFFSET(source); switch(source) {
int type_table_offset = GL_DEBUG_TYPE_OFFSET(type); case GL_DEBUG_SOURCE_API:
int sev_table_offset = GL_DEBUG_SEVERITY_OFFSET(severity); source_str = "API"; break;
case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
int source_table_size = source_str = "Window System"; break;
sizeof(debug_source_table) / sizeof(debug_source_table[0]); case GL_DEBUG_SOURCE_SHADER_COMPILER:
int type_table_size = source_str = "Shader Compiler"; break;
sizeof(debug_type_table) / sizeof(debug_type_table[0]); case GL_DEBUG_SOURCE_THIRD_PARTY:
int sev_table_size = source_str = "Third Party"; break;
sizeof(debug_severity_table) / sizeof(debug_severity_table[0]); case GL_DEBUG_SOURCE_APPLICATION:
source_str = "Application"; break;
if(source_table_offset <= 0 || source_table_offset >= source_table_size) case GL_DEBUG_SOURCE_OTHER:
{ source_str = "Other"; break;
blog(LOG_DEBUG, "Unknown source value: 0x%x", source); default:
source_table_offset = 0; source_str = "Unknown";
} }
if(type_table_offset <= 0 || type_table_offset >= type_table_size) switch(type) {
{ case GL_DEBUG_TYPE_ERROR:
blog(LOG_DEBUG, "Unknown type value: 0x%x", type); type_str = "Error"; break;
type_table_offset = 0; case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
type_str = "Deprecated Behavior"; break;
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
type_str = "Undefined Behavior"; break;
case GL_DEBUG_TYPE_PORTABILITY:
type_str = "Portability"; break;
case GL_DEBUG_TYPE_PERFORMANCE:
type_str = "Performance"; break;
case GL_DEBUG_TYPE_OTHER:
type_str = "Other"; break;
default:
type_str = "Unknown";
} }
if(sev_table_offset <= 0 || sev_table_offset >= sev_table_size) switch(severity) {
{ case GL_DEBUG_SEVERITY_HIGH:
blog(LOG_DEBUG, "Unknown severity value: 0x%x", severity); severity_str = "High"; break;
sev_table_offset = 0; case GL_DEBUG_SEVERITY_MEDIUM:
severity_str = "Medium"; break;
case GL_DEBUG_SEVERITY_LOW:
severity_str = "Low"; break;
case GL_DEBUG_SEVERITY_NOTIFICATION:
severity_str = "Notification"; break;
default:
severity_str = "Unknown";
} }
blog(LOG_DEBUG, blog(LOG_DEBUG,
"[%s][%s]{%s}: %.*s", "[%s][%s]{%s}: %.*s",
debug_source_table[source_table_offset], source_str, type_str, severity_str,
debug_type_table[type_table_offset],
debug_severity_table[sev_table_offset],
length, message length, message
); );
} }