aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/userguide/index.html22
-rw-r--r--src/classes/com/sun/opengl/impl/GLContextImpl.java11
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