Skip to content

Commit a926479

Browse files
committed
set __GL_THREADED_OPTIMIZATIONS=0 on start to workaround known nvidia bug that causes lwjgl apps to break
1 parent 5784b2b commit a926479

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

jme3-lwjgl3/src/main/java/com/jme3/system/lwjgl/LwjglWindow.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import static org.lwjgl.sdl.SDLMouse.*;
4242
import static org.lwjgl.sdl.SDLPixels.*;
4343
import static org.lwjgl.sdl.SDLSurface.*;
44+
import static org.lwjgl.sdl.SDLStdinc.SDL_setenv_unsafe;
4445
import static org.lwjgl.sdl.SDLVideo.*;
4546
import static org.lwjgl.system.MemoryUtil.NULL;
4647

@@ -124,6 +125,7 @@ public abstract class LwjglWindow extends LwjglContext implements Runnable {
124125
.addNativeVariant(Platform.Windows_ARM64, "native/d3dcompiler/windows/arm64/d3dcompiler_47.dll");
125126

126127
static {
128+
disableNvidiaThreadedOptimizations();
127129
NativeLibraryLoader.registerNativeLibrary(angleEGL);
128130
NativeLibraryLoader.registerNativeLibrary(angleGLESv2);
129131
NativeLibraryLoader.registerNativeLibrary(d3dcompiler_47);
@@ -233,6 +235,13 @@ public void removeWindowSizeListener(WindowSizeListener listener) {
233235
windowSizeListeners.remove(listener);
234236
}
235237

238+
private static void disableNvidiaThreadedOptimizations() {
239+
if (SDL_setenv_unsafe("__GL_THREADED_OPTIMIZATIONS", "0", 1) != 0) {
240+
throw new IllegalStateException("Unable to disable NVIDIA OpenGL threaded optimizations: "
241+
+ SDL_GetError());
242+
}
243+
}
244+
236245
@Override
237246
public JmeContext.Type getType() {
238247
return type;
@@ -255,6 +264,7 @@ public void restart() {
255264
}
256265

257266
protected void createContext(final AppSettings settings) {
267+
disableNvidiaThreadedOptimizations();
258268
useAngle = AppSettings.ANGLE_GLES3.equals(settings.getRenderer());
259269
configureVideoDriverHints(settings);
260270
configureAngleHints(settings);

0 commit comments

Comments
 (0)