From 3f27df9bec4dbd2dbfef618e10693387c393c143 Mon Sep 17 00:00:00 2001 From: Kenneth Russel Date: Fri, 2 Jun 2006 00:05:01 +0000 Subject: Changed default sense of GLContext optimization flag to false. Now must explicitly specify -Djogl.GLContext.optimize on the command line to enable it. Added note to the user guide in the section on X11 platforms discussing this. git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@795 232f8b59-042b-4e1e-8c03-345bb8c30851 --- doc/userguide/index.html | 22 +++++++++++++++++++++- 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.

-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. + +

+

+ +To enable multiple GLContexts to be made current simultaneously on X11 +platforms, specify the command line argument +-Djogl.GLContext.optimize 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.

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 -- cgit v1.2.3