Make OpenGL debug contexts a flag --debug-gpu instead of a compile time
option. This makes sense, since contexts get created at runtime, there is little reason to require recompilation for this. Only works on linux currently, will be doing more OSs later
This commit is contained in:
@@ -411,7 +411,6 @@ option(WITH_GL_EGL "Use the EGL OpenGL system library instead of th
|
|||||||
option(WITH_GL_PROFILE_COMPAT "Support using the OpenGL 'compatibility' profile. (deprecated)" ON )
|
option(WITH_GL_PROFILE_COMPAT "Support using the OpenGL 'compatibility' profile. (deprecated)" ON )
|
||||||
option(WITH_GL_PROFILE_CORE "Support using the OpenGL 3.2+ 'core' profile." OFF)
|
option(WITH_GL_PROFILE_CORE "Support using the OpenGL 3.2+ 'core' profile." OFF)
|
||||||
option(WITH_GL_PROFILE_ES20 "Support using OpenGL ES 2.0. (thru either EGL or the AGL/WGL/XGL 'es20' profile)" OFF)
|
option(WITH_GL_PROFILE_ES20 "Support using OpenGL ES 2.0. (thru either EGL or the AGL/WGL/XGL 'es20' profile)" OFF)
|
||||||
option(WITH_GPU_DEBUG "Create a debug OpenGL context (allows inserting custom messages and getting notifications for bad GL use)" OFF)
|
|
||||||
|
|
||||||
mark_as_advanced(
|
mark_as_advanced(
|
||||||
WITH_GLEW_MX
|
WITH_GLEW_MX
|
||||||
@@ -420,7 +419,6 @@ mark_as_advanced(
|
|||||||
WITH_GL_PROFILE_COMPAT
|
WITH_GL_PROFILE_COMPAT
|
||||||
WITH_GL_PROFILE_CORE
|
WITH_GL_PROFILE_CORE
|
||||||
WITH_GL_PROFILE_ES20
|
WITH_GL_PROFILE_ES20
|
||||||
WITH_GPU_DEBUG
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if(WITH_GL_PROFILE_COMPAT)
|
if(WITH_GL_PROFILE_COMPAT)
|
||||||
@@ -2351,10 +2349,6 @@ if(WITH_GL_EGL)
|
|||||||
list(APPEND GL_DEFINITIONS -DWITH_EGL)
|
list(APPEND GL_DEFINITIONS -DWITH_EGL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_GPU_DEBUG)
|
|
||||||
list(APPEND GL_DEFINITIONS -DWITH_GPU_DEBUG)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Configure OpenMP.
|
# Configure OpenMP.
|
||||||
if(WITH_OPENMP)
|
if(WITH_OPENMP)
|
||||||
@@ -2862,7 +2856,6 @@ if(FIRST_RUN)
|
|||||||
info_cfg_option(WITH_GL_PROFILE_COMPAT)
|
info_cfg_option(WITH_GL_PROFILE_COMPAT)
|
||||||
info_cfg_option(WITH_GL_PROFILE_CORE)
|
info_cfg_option(WITH_GL_PROFILE_CORE)
|
||||||
info_cfg_option(WITH_GL_PROFILE_ES20)
|
info_cfg_option(WITH_GL_PROFILE_ES20)
|
||||||
info_cfg_option(WITH_GPU_DEBUG)
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
info_cfg_option(WITH_GL_ANGLE)
|
info_cfg_option(WITH_GL_ANGLE)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -57,7 +57,8 @@ typedef struct {
|
|||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GHOST_glStereoVisual = (1 << 0),
|
GHOST_glStereoVisual = (1 << 0),
|
||||||
GHOST_glWarnSupport = (1 << 1)
|
GHOST_glWarnSupport = (1 << 1),
|
||||||
|
GHOST_glDebugContext = (1 << 2),
|
||||||
} GHOST_GLFlags;
|
} GHOST_GLFlags;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -46,11 +46,8 @@ extern "C" GLXEWContext *glxewContext;
|
|||||||
|
|
||||||
|
|
||||||
#ifndef GHOST_OPENGL_GLX_CONTEXT_FLAGS
|
#ifndef GHOST_OPENGL_GLX_CONTEXT_FLAGS
|
||||||
# ifdef WITH_GPU_DEBUG
|
/* leave as convenience define for the future */
|
||||||
# define GHOST_OPENGL_GLX_CONTEXT_FLAGS GLX_CONTEXT_DEBUG_BIT_ARB
|
#define GHOST_OPENGL_GLX_CONTEXT_FLAGS 0
|
||||||
# else
|
|
||||||
# define GHOST_OPENGL_GLX_CONTEXT_FLAGS 0
|
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY
|
#ifndef GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY
|
||||||
|
@@ -306,7 +306,7 @@ createWindow(const STR_String& title,
|
|||||||
left, top, width, height,
|
left, top, width, height,
|
||||||
state, parentWindow, type,
|
state, parentWindow, type,
|
||||||
((glSettings.flags & GHOST_glStereoVisual) != 0), exclusive,
|
((glSettings.flags & GHOST_glStereoVisual) != 0), exclusive,
|
||||||
glSettings.numOfAASamples);
|
glSettings.numOfAASamples, (glSettings.flags & GHOST_glDebugContext) != 0);
|
||||||
|
|
||||||
if (window) {
|
if (window) {
|
||||||
/* Both are now handle in GHOST_WindowX11.cpp
|
/* Both are now handle in GHOST_WindowX11.cpp
|
||||||
|
@@ -272,8 +272,7 @@ static XVisualInfo *x11_visualinfo_from_glx(
|
|||||||
}
|
}
|
||||||
|
|
||||||
GHOST_WindowX11::
|
GHOST_WindowX11::
|
||||||
GHOST_WindowX11(
|
GHOST_WindowX11(GHOST_SystemX11 *system,
|
||||||
GHOST_SystemX11 *system,
|
|
||||||
Display *display,
|
Display *display,
|
||||||
const STR_String &title,
|
const STR_String &title,
|
||||||
GHOST_TInt32 left,
|
GHOST_TInt32 left,
|
||||||
@@ -285,7 +284,7 @@ GHOST_WindowX11(
|
|||||||
GHOST_TDrawingContextType type,
|
GHOST_TDrawingContextType type,
|
||||||
const bool stereoVisual,
|
const bool stereoVisual,
|
||||||
const bool exclusive,
|
const bool exclusive,
|
||||||
const GHOST_TUns16 numOfAASamples)
|
const GHOST_TUns16 numOfAASamples, const bool is_debug)
|
||||||
: GHOST_Window(width, height, state, stereoVisual, exclusive, numOfAASamples),
|
: GHOST_Window(width, height, state, stereoVisual, exclusive, numOfAASamples),
|
||||||
m_display(display),
|
m_display(display),
|
||||||
m_visualInfo(NULL),
|
m_visualInfo(NULL),
|
||||||
@@ -301,7 +300,8 @@ GHOST_WindowX11(
|
|||||||
#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
|
#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING)
|
||||||
m_xic(NULL),
|
m_xic(NULL),
|
||||||
#endif
|
#endif
|
||||||
m_valid_setup(false)
|
m_valid_setup(false),
|
||||||
|
m_is_debug_context(is_debug)
|
||||||
{
|
{
|
||||||
if (type == GHOST_kDrawingContextTypeOpenGL) {
|
if (type == GHOST_kDrawingContextTypeOpenGL) {
|
||||||
m_visualInfo = x11_visualinfo_from_glx(m_display, stereoVisual, &m_wantNumOfAASamples);
|
m_visualInfo = x11_visualinfo_from_glx(m_display, stereoVisual, &m_wantNumOfAASamples);
|
||||||
@@ -1284,7 +1284,7 @@ GHOST_Context *GHOST_WindowX11::newDrawingContext(GHOST_TDrawingContextType type
|
|||||||
m_visualInfo,
|
m_visualInfo,
|
||||||
GLX_CONTEXT_OPENGL_CORE_PROFILE_BIT,
|
GLX_CONTEXT_OPENGL_CORE_PROFILE_BIT,
|
||||||
3, 2,
|
3, 2,
|
||||||
GHOST_OPENGL_GLX_CONTEXT_FLAGS,
|
GHOST_OPENGL_GLX_CONTEXT_FLAGS | (m_is_debug_context ? GLX_CONTEXT_DEBUG_BIT_ARB : 0),
|
||||||
GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY);
|
GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY);
|
||||||
#elif defined(WITH_GL_PROFILE_ES20)
|
#elif defined(WITH_GL_PROFILE_ES20)
|
||||||
GHOST_Context *context = new GHOST_ContextGLX(
|
GHOST_Context *context = new GHOST_ContextGLX(
|
||||||
@@ -1295,7 +1295,7 @@ GHOST_Context *GHOST_WindowX11::newDrawingContext(GHOST_TDrawingContextType type
|
|||||||
m_visualInfo,
|
m_visualInfo,
|
||||||
GLX_CONTEXT_ES2_PROFILE_BIT_EXT,
|
GLX_CONTEXT_ES2_PROFILE_BIT_EXT,
|
||||||
2, 0,
|
2, 0,
|
||||||
GHOST_OPENGL_GLX_CONTEXT_FLAGS,
|
GHOST_OPENGL_GLX_CONTEXT_FLAGS | (m_is_debug_context ? GLX_CONTEXT_DEBUG_BIT_ARB : 0),
|
||||||
GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY);
|
GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY);
|
||||||
#elif defined(WITH_GL_PROFILE_COMPAT)
|
#elif defined(WITH_GL_PROFILE_COMPAT)
|
||||||
GHOST_Context *context = new GHOST_ContextGLX(
|
GHOST_Context *context = new GHOST_ContextGLX(
|
||||||
@@ -1306,7 +1306,7 @@ GHOST_Context *GHOST_WindowX11::newDrawingContext(GHOST_TDrawingContextType type
|
|||||||
m_visualInfo,
|
m_visualInfo,
|
||||||
0, // profile bit
|
0, // profile bit
|
||||||
0, 0,
|
0, 0,
|
||||||
GHOST_OPENGL_GLX_CONTEXT_FLAGS,
|
GHOST_OPENGL_GLX_CONTEXT_FLAGS | (m_is_debug_context ? GLX_CONTEXT_DEBUG_BIT_ARB : 0),
|
||||||
GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY);
|
GHOST_OPENGL_GLX_RESET_NOTIFICATION_STRATEGY);
|
||||||
#else
|
#else
|
||||||
# error
|
# error
|
||||||
|
@@ -88,7 +88,8 @@ public:
|
|||||||
GHOST_TDrawingContextType type = GHOST_kDrawingContextTypeNone,
|
GHOST_TDrawingContextType type = GHOST_kDrawingContextTypeNone,
|
||||||
const bool stereoVisual = false,
|
const bool stereoVisual = false,
|
||||||
const bool exclusive = false,
|
const bool exclusive = false,
|
||||||
const GHOST_TUns16 numOfAASamples = 0
|
const GHOST_TUns16 numOfAASamples = 0,
|
||||||
|
const bool is_debug = false
|
||||||
);
|
);
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@@ -354,6 +355,7 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool m_valid_setup;
|
bool m_valid_setup;
|
||||||
|
bool m_is_debug_context;
|
||||||
|
|
||||||
void icccmSetState(int state);
|
void icccmSetState(int state);
|
||||||
int icccmGetState() const;
|
int icccmGetState() const;
|
||||||
|
@@ -128,6 +128,7 @@ enum {
|
|||||||
G_DEBUG_SIMDATA = (1 << 9), /* sim debug data display */
|
G_DEBUG_SIMDATA = (1 << 9), /* sim debug data display */
|
||||||
G_DEBUG_GPU_MEM = (1 << 10), /* gpu memory in status bar */
|
G_DEBUG_GPU_MEM = (1 << 10), /* gpu memory in status bar */
|
||||||
G_DEBUG_DEPSGRAPH_NO_THREADS = (1 << 11), /* sinle threaded depsgraph */
|
G_DEBUG_DEPSGRAPH_NO_THREADS = (1 << 11), /* sinle threaded depsgraph */
|
||||||
|
G_DEBUG_GPU = (1 << 12), /* gpu debug */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define G_DEBUG_ALL (G_DEBUG | G_DEBUG_FFMPEG | G_DEBUG_PYTHON | G_DEBUG_EVENTS | G_DEBUG_WM | G_DEBUG_JOBS | \
|
#define G_DEBUG_ALL (G_DEBUG | G_DEBUG_FFMPEG | G_DEBUG_PYTHON | G_DEBUG_EVENTS | G_DEBUG_WM | G_DEBUG_JOBS | \
|
||||||
|
@@ -49,9 +49,9 @@ const char *gpuErrorString(GLenum err);
|
|||||||
/* prints current OpenGL state */
|
/* prints current OpenGL state */
|
||||||
void GPU_state_print(void);
|
void GPU_state_print(void);
|
||||||
|
|
||||||
void gpu_assert_no_gl_errors(const char *file, int line, const char *str);
|
void GPU_assert_no_gl_errors(const char *file, int line, const char *str);
|
||||||
|
|
||||||
# define GPU_ASSERT_NO_GL_ERRORS(str) gpu_assert_no_gl_errors(__FILE__, __LINE__, (str))
|
# define GPU_ASSERT_NO_GL_ERRORS(str) GPU_assert_no_gl_errors(__FILE__, __LINE__, (str))
|
||||||
|
|
||||||
# define GPU_CHECK_ERRORS_AROUND(glProcCall) \
|
# define GPU_CHECK_ERRORS_AROUND(glProcCall) \
|
||||||
( \
|
( \
|
||||||
@@ -61,14 +61,8 @@ void gpu_assert_no_gl_errors(const char *file, int line, const char *str);
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
#ifdef WITH_GPU_DEBUG
|
|
||||||
/* inserts a debug marker message for the debug context messaging system */
|
/* inserts a debug marker message for the debug context messaging system */
|
||||||
void gpu_string_marker(size_t size, const char *str);
|
void GPU_string_marker(size_t size, const char *str);
|
||||||
|
|
||||||
# define GPU_STRING_MARKER(size, str) gpu_string_marker((size), (str))
|
|
||||||
#else /* WITH_GPU_DEBUG */
|
|
||||||
# define GPU_STRING_MARKER(len, str) ((void)(size),(void)(str))
|
|
||||||
#endif /* WITH_GPU_DEBUG */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -153,8 +153,6 @@ const char* gpuErrorString(GLenum err)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef WITH_GPU_DEBUG
|
|
||||||
|
|
||||||
/* Debug callbacks need the same calling convention as OpenGL functions.
|
/* Debug callbacks need the same calling convention as OpenGL functions.
|
||||||
*/
|
*/
|
||||||
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
|
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
|
||||||
@@ -191,10 +189,10 @@ void gpu_debug_init(void)
|
|||||||
|
|
||||||
#if !defined(WITH_GLEW_ES) && !defined(GLEW_ES_ONLY)
|
#if !defined(WITH_GLEW_ES) && !defined(GLEW_ES_ONLY)
|
||||||
if (GLEW_VERSION_4_3) {
|
if (GLEW_VERSION_4_3) {
|
||||||
//glEnable(GL_DEBUG_OUTPUT);
|
glEnable(GL_DEBUG_OUTPUT);
|
||||||
glDebugMessageCallback(gpu_debug_proc, mxGetCurrentContext());
|
glDebugMessageCallback(gpu_debug_proc, mxGetCurrentContext());
|
||||||
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
|
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
|
||||||
GPU_STRING_MARKER(sizeof(success), success);
|
GPU_string_marker(sizeof(success), success);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -203,7 +201,7 @@ void gpu_debug_init(void)
|
|||||||
#ifndef GLEW_ES_ONLY
|
#ifndef GLEW_ES_ONLY
|
||||||
glDebugMessageCallback(gpu_debug_proc, mxGetCurrentContext());
|
glDebugMessageCallback(gpu_debug_proc, mxGetCurrentContext());
|
||||||
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
|
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
|
||||||
GPU_STRING_MARKER(sizeof(success), success);
|
GPU_string_marker(sizeof(success), success);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -212,7 +210,7 @@ void gpu_debug_init(void)
|
|||||||
if (GLEW_ARB_debug_output) {
|
if (GLEW_ARB_debug_output) {
|
||||||
glDebugMessageCallbackARB(gpu_debug_proc, mxGetCurrentContext());
|
glDebugMessageCallbackARB(gpu_debug_proc, mxGetCurrentContext());
|
||||||
glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
|
glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
|
||||||
GPU_STRING_MARKER(sizeof(success), success);
|
GPU_string_marker(sizeof(success), success);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -220,7 +218,7 @@ void gpu_debug_init(void)
|
|||||||
if (GLEW_AMD_debug_output) {
|
if (GLEW_AMD_debug_output) {
|
||||||
glDebugMessageCallbackAMD(gpu_debug_proc_amd, mxGetCurrentContext());
|
glDebugMessageCallbackAMD(gpu_debug_proc_amd, mxGetCurrentContext());
|
||||||
glDebugMessageEnableAMD(GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
|
glDebugMessageEnableAMD(GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE);
|
||||||
GPU_STRING_MARKER(sizeof(success), success);
|
GPU_string_marker(sizeof(success), success);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -268,7 +266,7 @@ void gpu_debug_exit(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gpu_string_marker(size_t length, const char *buf)
|
void GPU_string_marker(size_t length, const char *buf)
|
||||||
{
|
{
|
||||||
#ifndef WITH_GLEW_ES
|
#ifndef WITH_GLEW_ES
|
||||||
#ifndef GLEW_ES_ONLY
|
#ifndef GLEW_ES_ONLY
|
||||||
@@ -310,8 +308,6 @@ void gpu_string_marker(size_t length, const char *buf)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* WITH_GPU_DEBUG */
|
|
||||||
|
|
||||||
void GPU_print_error_debug(const char *str)
|
void GPU_print_error_debug(const char *str)
|
||||||
{
|
{
|
||||||
if (G.debug & G_DEBUG)
|
if (G.debug & G_DEBUG)
|
||||||
@@ -319,7 +315,7 @@ void GPU_print_error_debug(const char *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void gpu_assert_no_gl_errors(const char* file, int line, const char* str)
|
void GPU_assert_no_gl_errors(const char* file, int line, const char* str)
|
||||||
{
|
{
|
||||||
if (G.debug) {
|
if (G.debug) {
|
||||||
GLboolean gl_ok = gpu_report_gl_errors(file, line, str);
|
GLboolean gl_ok = gpu_report_gl_errors(file, line, str);
|
||||||
|
@@ -32,6 +32,8 @@
|
|||||||
#include "BLI_sys_types.h"
|
#include "BLI_sys_types.h"
|
||||||
#include "GPU_init_exit.h" /* interface */
|
#include "GPU_init_exit.h" /* interface */
|
||||||
|
|
||||||
|
#include "BKE_global.h"
|
||||||
|
|
||||||
#include "intern/gpu_codegen.h"
|
#include "intern/gpu_codegen.h"
|
||||||
#include "intern/gpu_private.h"
|
#include "intern/gpu_private.h"
|
||||||
|
|
||||||
@@ -54,14 +56,17 @@ void GPU_init(void)
|
|||||||
|
|
||||||
gpu_codegen_init();
|
gpu_codegen_init();
|
||||||
|
|
||||||
GPU_DEBUG_INIT();
|
if (G.debug & G_DEBUG_GPU)
|
||||||
|
gpu_debug_init();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void GPU_exit(void)
|
void GPU_exit(void)
|
||||||
{
|
{
|
||||||
GPU_DEBUG_EXIT();
|
if (G.debug & G_DEBUG_GPU)
|
||||||
|
gpu_debug_exit();
|
||||||
gpu_codegen_exit();
|
gpu_codegen_exit();
|
||||||
|
|
||||||
gpu_extensions_exit(); /* must come last */
|
gpu_extensions_exit(); /* must come last */
|
||||||
|
@@ -29,21 +29,8 @@
|
|||||||
void gpu_extensions_init(void);
|
void gpu_extensions_init(void);
|
||||||
void gpu_extensions_exit(void);
|
void gpu_extensions_exit(void);
|
||||||
|
|
||||||
|
|
||||||
/* gpu_debug.c */
|
/* gpu_debug.c */
|
||||||
#ifdef WITH_GPU_DEBUG
|
|
||||||
|
|
||||||
void gpu_debug_init(void);
|
void gpu_debug_init(void);
|
||||||
void gpu_debug_exit(void);
|
void gpu_debug_exit(void);
|
||||||
|
|
||||||
# define GPU_DEBUG_INIT() gpu_debug_init()
|
|
||||||
# define GPU_DEBUG_EXIT() gpu_debug_exit()
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
# define GPU_DEBUG_INIT() ((void)0)
|
|
||||||
# define GPU_DEBUG_EXIT() ((void)0)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __GPU_PRIVATE_H__ */
|
#endif /* __GPU_PRIVATE_H__ */
|
||||||
|
@@ -400,6 +400,10 @@ static void wm_window_add_ghostwindow(wmWindowManager *wm, const char *title, wm
|
|||||||
if (win->stereo3d_format->display_mode == S3D_DISPLAY_PAGEFLIP)
|
if (win->stereo3d_format->display_mode == S3D_DISPLAY_PAGEFLIP)
|
||||||
glSettings.flags |= GHOST_glStereoVisual;
|
glSettings.flags |= GHOST_glStereoVisual;
|
||||||
|
|
||||||
|
if (G.debug & G_DEBUG_GPU) {
|
||||||
|
glSettings.flags |= GHOST_glDebugContext;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(U.uiflag2 & USER_OPENGL_NO_WARN_SUPPORT))
|
if (!(U.uiflag2 & USER_OPENGL_NO_WARN_SUPPORT))
|
||||||
glSettings.flags |= GHOST_glWarnSupport;
|
glSettings.flags |= GHOST_glWarnSupport;
|
||||||
|
|
||||||
|
@@ -1549,6 +1549,7 @@ static void setupArguments(bContext *C, bArgs *ba, SYS_SystemHandle *syshandle)
|
|||||||
|
|
||||||
BLI_argsAdd(ba, 1, NULL, "--debug-value", "<value>\n\tSet debug value of <value> on startup\n", set_debug_value, NULL);
|
BLI_argsAdd(ba, 1, NULL, "--debug-value", "<value>\n\tSet debug value of <value> on startup\n", set_debug_value, NULL);
|
||||||
BLI_argsAdd(ba, 1, NULL, "--debug-jobs", "\n\tEnable time profiling for background jobs.", debug_mode_generic, (void *)G_DEBUG_JOBS);
|
BLI_argsAdd(ba, 1, NULL, "--debug-jobs", "\n\tEnable time profiling for background jobs.", debug_mode_generic, (void *)G_DEBUG_JOBS);
|
||||||
|
BLI_argsAdd(ba, 1, NULL, "--debug-gpu", "\n\tEnable gpu debug context and information for OpenGL 4.3+.", debug_mode_generic, (void *)G_DEBUG_GPU);
|
||||||
BLI_argsAdd(ba, 1, NULL, "--debug-depsgraph", "\n\tEnable debug messages from dependency graph", debug_mode_generic, (void *)G_DEBUG_DEPSGRAPH);
|
BLI_argsAdd(ba, 1, NULL, "--debug-depsgraph", "\n\tEnable debug messages from dependency graph", debug_mode_generic, (void *)G_DEBUG_DEPSGRAPH);
|
||||||
BLI_argsAdd(ba, 1, NULL, "--debug-depsgraph-no-threads", "\n\tSwitch dependency graph to a single threaded evlauation", debug_mode_generic, (void *)G_DEBUG_DEPSGRAPH_NO_THREADS);
|
BLI_argsAdd(ba, 1, NULL, "--debug-depsgraph-no-threads", "\n\tSwitch dependency graph to a single threaded evlauation", debug_mode_generic, (void *)G_DEBUG_DEPSGRAPH_NO_THREADS);
|
||||||
BLI_argsAdd(ba, 1, NULL, "--debug-gpumem", "\n\tEnable GPU memory stats in status bar", debug_mode_generic, (void *)G_DEBUG_GPU_MEM);
|
BLI_argsAdd(ba, 1, NULL, "--debug-gpumem", "\n\tEnable GPU memory stats in status bar", debug_mode_generic, (void *)G_DEBUG_GPU_MEM);
|
||||||
|
Reference in New Issue
Block a user