4141import static org .lwjgl .sdl .SDLMouse .*;
4242import static org .lwjgl .sdl .SDLPixels .*;
4343import static org .lwjgl .sdl .SDLSurface .*;
44+ import static org .lwjgl .sdl .SDLStdinc .SDL_setenv_unsafe ;
4445import static org .lwjgl .sdl .SDLVideo .*;
4546import 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