浏览代码

Modified debug proc to possibly be more appropriate

Zachary Lund 11 年之前
父节点
当前提交
543acf8477
共有 1 个文件被更改,包括 44 次插入63 次删除
  1. 44 63
      libobs-opengl/gl-subsystem.c

+ 44 - 63
libobs-opengl/gl-subsystem.c

@@ -24,40 +24,6 @@
 #undef near
 
 #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(
 	GLenum source, GLenum type, GLuint id, GLenum severity, 
@@ -66,43 +32,58 @@ static void APIENTRY gl_debug_proc(
 	UNUSED_PARAMETER(id);
 	UNUSED_PARAMETER(data);
 
-	if(severity == GL_DEBUG_SEVERITY_NOTIFICATION)
-		severity = GL_DEBUG_SEVERITY_LOW + 1;
-
-	int source_table_offset = GL_DEBUG_SOURCE_OFFSET(source);
-	int type_table_offset = GL_DEBUG_TYPE_OFFSET(type);
-	int sev_table_offset = GL_DEBUG_SEVERITY_OFFSET(severity);
-
-	int source_table_size =
-		sizeof(debug_source_table) / sizeof(debug_source_table[0]);
-	int type_table_size =
-		sizeof(debug_type_table) / sizeof(debug_type_table[0]);
-	int sev_table_size =
-		sizeof(debug_severity_table) / sizeof(debug_severity_table[0]);
-
-	if(source_table_offset <= 0 || source_table_offset >= source_table_size)
-	{
-		blog(LOG_DEBUG, "Unknown source value: 0x%x", source);
-		source_table_offset = 0;
+	char *source_str, *type_str, *severity_str;
+
+	switch(source) {
+	case GL_DEBUG_SOURCE_API:
+		source_str = "API"; break;
+	case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
+		source_str = "Window System"; break;
+	case GL_DEBUG_SOURCE_SHADER_COMPILER:
+		source_str = "Shader Compiler"; break;
+	case GL_DEBUG_SOURCE_THIRD_PARTY:
+		source_str = "Third Party"; break;
+	case GL_DEBUG_SOURCE_APPLICATION:
+		source_str = "Application"; break;
+	case GL_DEBUG_SOURCE_OTHER:
+		source_str = "Other"; break;
+	default:
+		source_str = "Unknown";
 	}
 
-	if(type_table_offset <= 0 || type_table_offset >= type_table_size)
-	{
-		blog(LOG_DEBUG, "Unknown type value: 0x%x", type);
-		type_table_offset = 0;
+	switch(type) {
+	case GL_DEBUG_TYPE_ERROR:
+		type_str = "Error"; break;
+	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)
-	{
-		blog(LOG_DEBUG, "Unknown severity value: 0x%x", severity);
-		sev_table_offset = 0;
+	switch(severity) {
+	case GL_DEBUG_SEVERITY_HIGH:
+		severity_str = "High"; break;
+	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,
 		"[%s][%s]{%s}: %.*s",
-		debug_source_table[source_table_offset],
-		debug_type_table[type_table_offset],
-		debug_severity_table[sev_table_offset],
+		source_str, type_str, severity_str,
 		length, message
 	);
 }