From 66eb00414726786f46d98727e26c74f0b12fe27c Mon Sep 17 00:00:00 2001 From: Nick Kreeger Date: Thu, 25 Jul 2019 21:58:58 -0700 Subject: [PATCH] save --- binding/egl_context_wrapper.cc | 6 ++++++ binding/egl_context_wrapper.h | 6 ++++++ binding/webgl_rendering_context.cc | 16 ++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/binding/egl_context_wrapper.cc b/binding/egl_context_wrapper.cc index 37dccf1..6ddbdfa 100644 --- a/binding/egl_context_wrapper.cc +++ b/binding/egl_context_wrapper.cc @@ -440,6 +440,12 @@ void EGLContextWrapper::BindProcAddresses() { glViewport = reinterpret_cast(eglGetProcAddress("glViewport")); +#if DEBUG + // Debug specific + glDebugMessageCallback = reinterpret_cast( + eglGetProcAddress("glDebugMessageCallback")); +#endif + // ANGLE specific glRequestExtensionANGLE = reinterpret_cast( eglGetProcAddress("glRequestExtensionANGLE")); diff --git a/binding/egl_context_wrapper.h b/binding/egl_context_wrapper.h index 09b05f6..53ca0ba 100644 --- a/binding/egl_context_wrapper.h +++ b/binding/egl_context_wrapper.h @@ -27,6 +27,7 @@ #include "angle/include/GLES2/gl2.h" #include "angle/include/GLES2/gl2ext.h" #include "angle/include/GLES3/gl3.h" +#include "angle/include/GLES3/gl32.h" // TODO - debug this? #include #include @@ -228,6 +229,11 @@ class EGLContextWrapper { PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer; PFNGLVIEWPORTPROC glViewport; +#if DEBUG + // Debug specific + PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback; +#endif + // ANGLE specific PFNGLREQUESTEXTENSIONANGLEPROC glRequestExtensionANGLE; diff --git a/binding/webgl_rendering_context.cc b/binding/webgl_rendering_context.cc index 3ff94f8..bf734ab 100644 --- a/binding/webgl_rendering_context.cc +++ b/binding/webgl_rendering_context.cc @@ -373,6 +373,17 @@ static napi_status GetArrayLikeBuffer(napi_env env, napi_value array_like_value, return napi_invalid_arg; } +#if DEBUG +void DebugMessageCallback(GLenum source, GLenum type, GLuint id, + GLenum severity, GLsizei length, + const GLchar *message, const void *userParam) { + fprintf(stderr, + "GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n", + (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""), type, severity, + message); +} +#endif + napi_ref WebGLRenderingContext::constructor_ref_; WebGLRenderingContext::WebGLRenderingContext(napi_env env) @@ -391,6 +402,11 @@ WebGLRenderingContext::WebGLRenderingContext(napi_env env) return; } alloc_count_ = 0; + +#if DEBUG + eglContextWrapper_->glEnable(GL_DEBUG_OUTPUT); + eglContextWrapper_->glDebugMessageCallback(DebugMessageCallback, 0); +#endif } WebGLRenderingContext::~WebGLRenderingContext() {