diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-09-01 00:13:35 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-09-01 01:30:36 +0300 |
commit | 9d932b426f0db9350a3fe49cd5bcf8b25e7cf8bb (patch) | |
tree | 000cf7fba17c21bd28eac5e0190a5531b0640c89 /source/blender/gpu | |
parent | 82a197cc7f74be2e8f4fbe2d40fc2aec100c4276 (diff) |
GL: Move MacOS debug callback to gl_debug.cc
And format to use the same callback as standard debugging layer.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/opengl/gl_batch.cc | 1 | ||||
-rw-r--r-- | source/blender/gpu/opengl/gl_context.cc | 34 | ||||
-rw-r--r-- | source/blender/gpu/opengl/gl_context.hh | 7 | ||||
-rw-r--r-- | source/blender/gpu/opengl/gl_debug.cc | 38 | ||||
-rw-r--r-- | source/blender/gpu/opengl/gl_debug.hh | 8 |
5 files changed, 47 insertions, 41 deletions
diff --git a/source/blender/gpu/opengl/gl_batch.cc b/source/blender/gpu/opengl/gl_batch.cc index bc951736db3..63547bf190f 100644 --- a/source/blender/gpu/opengl/gl_batch.cc +++ b/source/blender/gpu/opengl/gl_batch.cc @@ -36,6 +36,7 @@ #include "gl_batch.hh" #include "gl_context.hh" +#include "gl_debug.hh" #include "gl_primitive.hh" #include "gl_vertex_array.hh" diff --git a/source/blender/gpu/opengl/gl_context.cc b/source/blender/gpu/opengl/gl_context.cc index 7d564004a01..666f2b4756a 100644 --- a/source/blender/gpu/opengl/gl_context.cc +++ b/source/blender/gpu/opengl/gl_context.cc @@ -294,37 +294,3 @@ void GLContext::framebuffer_unregister(struct GPUFrameBuffer *fb) } /** \} */ - -/* -------------------------------------------------------------------- */ -/** \name Error Checking - * - * This is only useful for implementation that does not support the KHR_debug extension. - * \{ */ - -void GLContext::check_error(const char *info) -{ - GLenum error = glGetError(); - -#define ERROR_CASE(err) \ - case err: \ - fprintf(stderr, "GL error: %s : %s\n", #err, info); \ - BLI_system_backtrace(stderr); \ - break; - - switch (error) { - ERROR_CASE(GL_INVALID_ENUM) - ERROR_CASE(GL_INVALID_VALUE) - ERROR_CASE(GL_INVALID_OPERATION) - ERROR_CASE(GL_INVALID_FRAMEBUFFER_OPERATION) - ERROR_CASE(GL_OUT_OF_MEMORY) - ERROR_CASE(GL_STACK_UNDERFLOW) - ERROR_CASE(GL_STACK_OVERFLOW) - case GL_NO_ERROR: - break; - default: - fprintf(stderr, "Unknown GL error: %x : %s", error, info); - break; - } -} - -/** \} */ diff --git a/source/blender/gpu/opengl/gl_context.hh b/source/blender/gpu/opengl/gl_context.hh index 55af7d8f65d..99076fa3d1e 100644 --- a/source/blender/gpu/opengl/gl_context.hh +++ b/source/blender/gpu/opengl/gl_context.hh @@ -34,13 +34,6 @@ #include <mutex> -/* Enabled on MacOS by default since there is no support for debug callbacks. */ -#if defined(DEBUG) && defined(__APPLE__) -# define GL_CHECK_ERROR(info) GLContext::check_error(info) -#else -# define GL_CHECK_ERROR(info) -#endif - namespace blender { namespace gpu { diff --git a/source/blender/gpu/opengl/gl_debug.cc b/source/blender/gpu/opengl/gl_debug.cc index 1300cf4065e..2dc0835adfb 100644 --- a/source/blender/gpu/opengl/gl_debug.cc +++ b/source/blender/gpu/opengl/gl_debug.cc @@ -137,4 +137,42 @@ void init_gl_callbacks(void) /** \} */ +/* -------------------------------------------------------------------- */ +/** \name Error Checking + * + * This is only useful for implementation that does not support the KHR_debug extension. + * \{ */ + +void check_gl_error(const char *info) +{ + GLenum error = glGetError(); + +#define ERROR_CASE(err) \ + case err: { \ + char msg[256]; \ + SNPRINTF(msg, "%s : %s", #err, info); \ + debug_callback(0, GL_DEBUG_TYPE_ERROR, 0, GL_DEBUG_SEVERITY_HIGH, 0, msg, NULL); \ + break; \ + } + + switch (error) { + ERROR_CASE(GL_INVALID_ENUM) + ERROR_CASE(GL_INVALID_VALUE) + ERROR_CASE(GL_INVALID_OPERATION) + ERROR_CASE(GL_INVALID_FRAMEBUFFER_OPERATION) + ERROR_CASE(GL_OUT_OF_MEMORY) + ERROR_CASE(GL_STACK_UNDERFLOW) + ERROR_CASE(GL_STACK_OVERFLOW) + case GL_NO_ERROR: + break; + default: + char msg[256]; + SNPRINTF(msg, "Unknown GL error: %x : %s", error, info); + debug_callback(0, GL_DEBUG_TYPE_ERROR, 0, GL_DEBUG_SEVERITY_HIGH, 0, msg, NULL); + break; + } +} + +/** \} */ + } // namespace blender::gpu::debug
\ No newline at end of file diff --git a/source/blender/gpu/opengl/gl_debug.hh b/source/blender/gpu/opengl/gl_debug.hh index 44cd98b72f3..47c9558f13a 100644 --- a/source/blender/gpu/opengl/gl_debug.hh +++ b/source/blender/gpu/opengl/gl_debug.hh @@ -24,6 +24,14 @@ namespace blender { namespace gpu { namespace debug { +/* Enabled on MacOS by default since there is no support for debug callbacks. */ +#if defined(DEBUG) && defined(__APPLE__) +# define GL_CHECK_ERROR(info) debug::check_gl_error(info) +#else +# define GL_CHECK_ERROR(info) +#endif + +void check_gl_error(const char *info); void init_gl_callbacks(void); } // namespace debug |