Kaynağa Gözat

Enabling KHR_debug on GLES.

Branimir Karadžić 10 yıl önce
ebeveyn
işleme
eea21fede2
3 değiştirilmiş dosya ile 90 ekleme ve 23 silme
  1. 13 1
      src/glimports.h
  2. 38 22
      src/renderer_gl.cpp
  3. 39 0
      src/renderer_gl.h

+ 13 - 1
src/glimports.h

@@ -26,6 +26,7 @@
 #define GL_IMPORT_ANGLE(_optional, _proto, _func) GL_EXTENSION(_optional, _proto, _func, _func ## ANGLE)
 #define GL_IMPORT_ARB__(_optional, _proto, _func) GL_EXTENSION(_optional, _proto, _func, _func ## ARB)
 #define GL_IMPORT_EXT__(_optional, _proto, _func) GL_EXTENSION(_optional, _proto, _func, _func ## EXT)
+#define GL_IMPORT_KHR__(_optional, _proto, _func) GL_EXTENSION(_optional, _proto, _func, _func ## KHR)
 #define GL_IMPORT_NV___(_optional, _proto, _func) GL_EXTENSION(_optional, _proto, _func, _func ## NV)
 #define GL_IMPORT_OES__(_optional, _proto, _func) GL_EXTENSION(_optional, _proto, _func, _func ## OES)
 #define GL_IMPORT_____x(_optional, _proto, _func) GL_EXTENSION(_optional, _proto, _func, _func ## XXXXX)
@@ -419,6 +420,11 @@ GL_IMPORT______(true,  PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC,    glGetTranslat
 GL_IMPORT_ANGLE(true,  PFNGLBLITFRAMEBUFFERPROC,                   glBlitFramebuffer);
 GL_IMPORT_ANGLE(true,  PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC,    glRenderbufferStorageMultisample);
 
+GL_IMPORT_KHR__(true,  PFNGLDEBUGMESSAGECONTROLPROC,               glDebugMessageControl);
+GL_IMPORT_KHR__(true,  PFNGLDEBUGMESSAGEINSERTPROC,                glDebugMessageInsert);
+GL_IMPORT_KHR__(true,  PFNGLDEBUGMESSAGECALLBACKPROC,              glDebugMessageCallback);
+GL_IMPORT_KHR__(true,  PFNGLGETDEBUGMESSAGELOGPROC,                glGetDebugMessageLog);
+
 #	if BGFX_CONFIG_RENDERER_OPENGLES < 30
 GL_IMPORT_OES__(true,  PFNGLTEXIMAGE3DPROC,                        glTexImage3D);
 GL_IMPORT_OES__(true,  PFNGLTEXSUBIMAGE3DPROC,                     glTexSubImage3D);
@@ -472,6 +478,11 @@ GL_IMPORT_____x(true,  PFNGLMEMORYBARRIERPROC,                     glMemoryBarri
 GL_IMPORT_____x(true,  PFNGLDISPATCHCOMPUTEPROC,                   glDispatchCompute);
 GL_IMPORT_____x(true,  PFNGLDISPATCHCOMPUTEINDIRECTPROC,           glDispatchComputeIndirect);
 
+GL_IMPORT_KHR__(true,  PFNGLDEBUGMESSAGECONTROLPROC,               glDebugMessageControl);
+GL_IMPORT_KHR__(true,  PFNGLDEBUGMESSAGEINSERTPROC,                glDebugMessageInsert);
+GL_IMPORT_KHR__(true,  PFNGLDEBUGMESSAGECALLBACKPROC,              glDebugMessageCallback);
+GL_IMPORT_KHR__(true,  PFNGLGETDEBUGMESSAGELOGPROC,                glGetDebugMessageLog);
+
 GL_IMPORT_NV___(true,  PFNGLDRAWBUFFERSPROC,                       glDrawBuffers);
 GL_IMPORT_NV___(true,  PFNGLGENQUERIESPROC,                        glGenQueries);
 GL_IMPORT_NV___(true,  PFNGLDELETEQUERIESPROC,                     glDeleteQueries);
@@ -481,7 +492,7 @@ GL_IMPORT_NV___(true,  PFNGLGETQUERYOBJECTUI64VPROC,               glGetQueryObj
 
 GL_IMPORT      (true,  PFNGLINVALIDATEFRAMEBUFFERPROC,             glInvalidateFramebuffer, glDiscardFramebufferEXT);
 
-#elif !BGFX_USE_GL_DYNAMIC_LIB
+#	elif !BGFX_USE_GL_DYNAMIC_LIB
 GL_IMPORT______(true,  PFNGLTEXIMAGE3DPROC,                        glTexImage3D);
 GL_IMPORT______(true,  PFNGLTEXSUBIMAGE3DPROC,                     glTexSubImage3D);
 GL_IMPORT______(true,  PFNGLCOMPRESSEDTEXIMAGE3DPROC,              glCompressedTexImage3D);
@@ -552,6 +563,7 @@ GL_IMPORT______(true,  PFNGLINVALIDATEFRAMEBUFFERPROC,             glInvalidateF
 #undef GL_IMPORT______
 #undef GL_IMPORT_ARB__
 #undef GL_IMPORT_EXT__
+#undef GL_IMPORT_KHR__
 #undef GL_IMPORT_NV___
 #undef GL_IMPORT_OES__
 #undef GL_IMPORT_____x

+ 38 - 22
src/renderer_gl.cpp

@@ -863,30 +863,26 @@ namespace bgfx { namespace gl
 
 	const char* toString(GLenum _enum)
 	{
-#if defined(GL_DEBUG_SOURCE_API_ARB)
 		switch (_enum)
 		{
-		case GL_DEBUG_SOURCE_API_ARB:               return "API";
-		case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB:     return "WinSys";
-		case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB:   return "Shader";
-		case GL_DEBUG_SOURCE_THIRD_PARTY_ARB:       return "3rdparty";
-		case GL_DEBUG_SOURCE_APPLICATION_ARB:       return "Application";
-		case GL_DEBUG_SOURCE_OTHER_ARB:             return "Other";
-		case GL_DEBUG_TYPE_ERROR_ARB:               return "Error";
-		case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: return "Deprecated behavior";
-		case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB:  return "Undefined behavior";
-		case GL_DEBUG_TYPE_PORTABILITY_ARB:         return "Portability";
-		case GL_DEBUG_TYPE_PERFORMANCE_ARB:         return "Performance";
-		case GL_DEBUG_TYPE_OTHER_ARB:               return "Other";
-		case GL_DEBUG_SEVERITY_HIGH_ARB:            return "High";
-		case GL_DEBUG_SEVERITY_MEDIUM_ARB:          return "Medium";
-		case GL_DEBUG_SEVERITY_LOW_ARB:             return "Low";
+		case GL_DEBUG_SOURCE_API:               return "API";
+		case GL_DEBUG_SOURCE_WINDOW_SYSTEM:     return "WinSys";
+		case GL_DEBUG_SOURCE_SHADER_COMPILER:   return "Shader";
+		case GL_DEBUG_SOURCE_THIRD_PARTY:       return "3rdparty";
+		case GL_DEBUG_SOURCE_APPLICATION:       return "Application";
+		case GL_DEBUG_SOURCE_OTHER:             return "Other";
+		case GL_DEBUG_TYPE_ERROR:               return "Error";
+		case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: return "Deprecated behavior";
+		case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:  return "Undefined behavior";
+		case GL_DEBUG_TYPE_PORTABILITY:         return "Portability";
+		case GL_DEBUG_TYPE_PERFORMANCE:         return "Performance";
+		case GL_DEBUG_TYPE_OTHER:               return "Other";
+		case GL_DEBUG_SEVERITY_HIGH:            return "High";
+		case GL_DEBUG_SEVERITY_MEDIUM:          return "Medium";
+		case GL_DEBUG_SEVERITY_LOW:             return "Low";
 		default:
 			break;
 		}
-#else
-		BX_UNUSED(_enum);
-#endif // defined(GL_DEBUG_SOURCE_API_ARB)
 
 		return "<unknown>";
 	}
@@ -1228,6 +1224,22 @@ namespace bgfx { namespace gl
 			s_textureFormat[TextureFormat::PTC22].m_supported |= ptc2Supported;
 			s_textureFormat[TextureFormat::PTC24].m_supported |= ptc2Supported;
 
+			if (s_extension[Extension::ARB_debug_output].m_supported
+			||  s_extension[Extension::KHR_debug].m_supported)
+			{
+				GL_CHECK(glDebugMessageCallback(debugProcCb, NULL) );
+				GL_CHECK(glDebugMessageControl(GL_DONT_CARE
+						, GL_DONT_CARE
+						, GL_DEBUG_SEVERITY_MEDIUM
+						, 0
+						, NULL
+						, GL_TRUE
+						) );
+			}
+
+
+
+
 			if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES) )
 			{
 				setTextureFormat(TextureFormat::D32, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT);
@@ -1512,12 +1524,17 @@ namespace bgfx { namespace gl
 				}
 			}
 
-#if BGFX_CONFIG_RENDERER_OPENGL
 			if (s_extension[Extension::ARB_debug_output].m_supported
 			||  s_extension[Extension::KHR_debug].m_supported)
 			{
 				GL_CHECK(glDebugMessageCallback(debugProcCb, NULL) );
-				GL_CHECK(glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_MEDIUM_ARB, 0, NULL, GL_TRUE) );
+				GL_CHECK(glDebugMessageControl(GL_DONT_CARE
+						, GL_DONT_CARE
+						, GL_DEBUG_SEVERITY_MEDIUM
+						, 0
+						, NULL
+						, GL_TRUE
+						) );
 			}
 
 			if (s_extension[Extension::ARB_seamless_cube_map].m_supported)
@@ -1529,7 +1546,6 @@ namespace bgfx { namespace gl
 			{
 				GL_CHECK(glEnable(GL_DEPTH_CLAMP) );
 			}
-#endif // BGFX_CONFIG_RENDERER_OPENGL
 
 			if (NULL == glFrameTerminatorGREMEDY
 			||  !s_extension[Extension::GREMEDY_frame_terminator].m_supported)

+ 39 - 0
src/renderer_gl.h

@@ -582,6 +582,45 @@ typedef uint64_t GLuint64;
 #	define GL_LOCATION 0x930E
 #endif // GL_LOCATION
 
+// _KHR or _ARB...
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS         0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION          0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM        0x8245
+#define GL_DEBUG_SOURCE_API                 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM       0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER     0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY         0x8249
+#define GL_DEBUG_SOURCE_APPLICATION         0x824A
+#define GL_DEBUG_SOURCE_OTHER               0x824B
+#define GL_DEBUG_TYPE_ERROR                 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR   0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR    0x824E
+#define GL_DEBUG_TYPE_PORTABILITY           0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE           0x8250
+#define GL_DEBUG_TYPE_OTHER                 0x8251
+#define GL_DEBUG_TYPE_MARKER                0x8268
+#define GL_DEBUG_TYPE_PUSH_GROUP            0x8269
+#define GL_DEBUG_TYPE_POP_GROUP             0x826A
+#define GL_DEBUG_SEVERITY_NOTIFICATION      0x826B
+#define GL_MAX_DEBUG_GROUP_STACK_DEPTH      0x826C
+#define GL_DEBUG_GROUP_STACK_DEPTH          0x826D
+#define GL_MAX_LABEL_LENGTH                 0x82E8
+#define GL_MAX_DEBUG_MESSAGE_LENGTH         0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES        0x9144
+#define GL_DEBUG_LOGGED_MESSAGES            0x9145
+#define GL_DEBUG_SEVERITY_HIGH              0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM            0x9147
+#define GL_DEBUG_SEVERITY_LOW               0x9148
+
+#ifndef GL_DEPTH_CLAMP
+#	define GL_DEPTH_CLAMP 0x864F
+#endif // GL_DEPTH_CLAMP
+
+#ifndef GL_TEXTURE_CUBE_MAP_SEAMLESS
+#	define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+#endif // GL_TEXTURE_CUBE_MAP_SEAMLESS
+
 #if BX_PLATFORM_NACL
 #	include "glcontext_ppapi.h"
 #elif BX_PLATFORM_WINDOWS