From eea21fede2a0629a6c3e2e5f575c6586370c3184 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Tue, 21 Apr 2015 20:30:31 -0700 Subject: [PATCH] Enabling KHR_debug on GLES. --- src/glimports.h | 14 ++++++++++- src/renderer_gl.cpp | 60 ++++++++++++++++++++++++++++----------------- src/renderer_gl.h | 39 +++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 23 deletions(-) diff --git a/src/glimports.h b/src/glimports.h index 6a67f8d8e..84b66dbb2 100644 --- a/src/glimports.h +++ b/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 diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index fa0011bb7..5af3493f8 100644 --- a/src/renderer_gl.cpp +++ b/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 ""; } @@ -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) diff --git a/src/renderer_gl.h b/src/renderer_gl.h index 338550f0a..fbeb76ae6 100644 --- a/src/renderer_gl.h +++ b/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