diff options
-rw-r--r-- | doc/userguide/index.html | 22 | ||||
-rw-r--r-- | src/classes/com/sun/opengl/impl/GLContextImpl.java | 11 |
2 files changed, 31 insertions, 2 deletions
diff --git a/doc/userguide/index.html b/doc/userguide/index.html index 9bfe0caa4..a76b36b5c 100644 --- a/doc/userguide/index.html +++ b/doc/userguide/index.html @@ -846,7 +846,27 @@ hardware. <P> -No outstanding issues at this time. +Support has been added to the JOGL library for allowing multiple +threads to each have an OpenGL context current simultaneously, for +example to implement multi-head CAVE-like environments. Normally a +global AWT lock is held between calls to GLContext.makeCurrent() / +release() for on-screen heavyweight contexts (for example, those +associated with a Canvas or GLCanvas). We have found this to be +necessary for stability purposes on all supported X11 platforms, even +with relatively robust drivers such as those from NVidia. + +</P> +<P> + +To enable multiple GLContexts to be made current simultaneously on X11 +platforms, specify the command line argument +<CODE>-Djogl.GLContext.optimize</CODE> when starting the JVM. Note +that this may incur robustness problems, in particular when resizing +or moving windows. We have also found that ATI's proprietary drivers +do not work at all with this flag, apparently because they cause GLX +tokens to be sent to the X server for various GL calls even for direct +contexts. For this reason if the GLX vendor is ATI then this flag +currently has no effect. </P> diff --git a/src/classes/com/sun/opengl/impl/GLContextImpl.java b/src/classes/com/sun/opengl/impl/GLContextImpl.java index d363cfe80..fcd1e58be 100644 --- a/src/classes/com/sun/opengl/impl/GLContextImpl.java +++ b/src/classes/com/sun/opengl/impl/GLContextImpl.java @@ -50,7 +50,16 @@ public abstract class GLContextImpl extends GLContext { protected static final boolean DEBUG = Debug.debug("GLContextImpl"); protected static final boolean VERBOSE = Debug.verbose(); protected static final boolean NO_FREE = Debug.isPropertyDefined("jogl.GLContext.nofree"); - protected boolean optimizationEnabled = !Debug.isPropertyDefined("jogl.GLContext.noopt"); + // NOTE: default sense of GLContext optimization disabled in JSR-231 + // 1.0 beta 5 due to problems on X11 platforms (both Linux and + // Solaris) when moving and resizing windows. Apparently GLX tokens + // get sent to the X server under the hood (and out from under the + // cover of the AWT lock) in these situations. Users requiring + // multi-screen X11 applications can manually enable this flag. It + // basically had no tangible effect on the Windows or Mac OS X + // platforms anyway in particular with the disabling of the + // GLWorkerThread which we found to be necessary in 1.0 beta 4. + protected boolean optimizationEnabled = Debug.isPropertyDefined("jogl.GLContext.optimize"); // Cache of the functions that are available to be called at the current // moment in time |