libretro: call SetGLCoreContext(true) in LibretroGLCoreContext

LibretroGLCoreContext is the backend for RETRO_HW_CONTEXT_OPENGL_CORE,
so the frontend hands us a desktop GL Core profile context. But
CreateDrawContext() never told GLFeatures about it — useCoreContext
stayed at its default false and gl_extensions.IsCoreContext stayed
false, so the macOS Core-profile workaround at GLFeatures.cpp:532
(which force-enables ARB_framebuffer_object because Apple's Core
driver doesn't list it as an extension) never fired.

Every glBindFramebuffer(GL_FRAMEBUFFER, g_defaultFBO) in
GLQueueRunner::fbo_unbind then fell through both branches and silently
no-op'd, so the BackBuffer present pass rendered into nothing and
GL_INVALID_OPERATION accumulated. End result: black screen on macOS,
audio and game logic still working.

One-line fix: call SetGLCoreContext(true) before CheckGLExtensions().
This commit is contained in:
Mark Pearce
2026-05-22 01:43:27 +08:00
parent 3b776e65b7
commit 77045b89ad
+7
View File
@@ -24,6 +24,13 @@ void LibretroGLCoreContext::CreateDrawContext() {
}
#endif
glewInitDone = true;
// We requested RETRO_HW_CONTEXT_OPENGL_CORE; tell GLFeatures so the
// Core-profile workaround in CheckGLExtensions (which force-enables
// ARB_framebuffer_object / ARB_vertex_array_object) fires. Apple's
// Core driver doesn't list these as extensions, so without this both
// stay false and glBindFramebuffer(default) silently no-ops in
// GLQueueRunner::fbo_unbind on macOS → black screen.
SetGLCoreContext(true);
CheckGLExtensions();
}
draw_ = Draw::T3DCreateGLContext(false);