Эх сурвалжийг харах

OpenGL: Enable Debug Context and Synchronous debugging when graphics debugging is enabled.

This commit aims to help easing debugging of driver crashes without
having to modify existing code.
Fernando Sahmkow 6 жил өмнө
parent
commit
4cff5dd194

+ 3 - 0
src/video_core/renderer_opengl/renderer_opengl.cpp

@@ -753,6 +753,9 @@ void RendererOpenGL::RenderScreenshot() {
 bool RendererOpenGL::Init() {
     if (GLAD_GL_KHR_debug) {
         glEnable(GL_DEBUG_OUTPUT);
+        if (Settings::values.renderer_debug) {
+            glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
+        }
         glDebugMessageCallback(DebugHandler, nullptr);
     }
 

+ 3 - 0
src/yuzu/bootmanager.cpp

@@ -106,6 +106,9 @@ public:
         format.setVersion(4, 3);
         format.setProfile(QSurfaceFormat::CompatibilityProfile);
         format.setOption(QSurfaceFormat::FormatOption::DeprecatedFunctions);
+        if (Settings::values.renderer_debug) {
+            format.setOption(QSurfaceFormat::FormatOption::DebugContext);
+        }
         // TODO: expose a setting for buffer value (ie default/single/double/triple)
         format.setSwapBehavior(QSurfaceFormat::DefaultSwapBehavior);
         format.setSwapInterval(0);

+ 3 - 0
src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp

@@ -98,6 +98,9 @@ EmuWindow_SDL2_GL::EmuWindow_SDL2_GL(Core::System& system, bool fullscreen)
     SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
     SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0);
     SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1);
+    if (Settings::values.renderer_debug) {
+        SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG);
+    }
     SDL_GL_SetSwapInterval(0);
 
     std::string window_title = fmt::format("yuzu {} | {}-{}", Common::g_build_fullname,