Opened 11 months ago

Last modified 6 months ago

#13215 closed defect

OpenGLSdlGraphics3dManager::setupScreen() might invoke `glGetIntegerv` without GL context — at Version 1

Reported by: GMTA Owned by:
Priority: low Component: Common
Version: Keywords:
Cc: Game: Grim Fandango

Description (last modified by GMTA)

When switching from the launcher to an OpenGL game such as Grim Fandango, the GL context is destroyed and then created again. To create a new context, OpenGLSdlGraphics3dManager::setupScreen() is invoked. Before it actually created a new context, the MSAA sample count is retrieved with:

SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &currentSamples);

This in turn invokes glGetIntegerv. According to the OpenGL spec, invoking any API without an active GL context results in undefined behavior.

While porting ScummVM to SerenityOS, I have had to patch out the above call to make Grim Fandango work at all. This is not a fix but a workaround, but it might be useful for you to see.

A possible solution would be to make sure to only retrieve the samples when a GL context exists.

Related SerenityOS PR: https://github.com/SerenityOS/serenity/pull/11831

Change History (2)

comment:1 by GMTA, 11 months ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.