aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/jogamp/opengl/GLContextImpl.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2015-08-29 17:17:17 +0200
committerSven Gothel <[email protected]>2015-08-29 17:17:17 +0200
commit17af6ed1d0f60c111079ff19c4114fefbfd025fc (patch)
tree6d68c6e3aa068d5e0e9ce166f2a62be339f4e6a7 /src/jogl/classes/jogamp/opengl/GLContextImpl.java
parentb8ba30a0bc7cbd36abba37d72b45f78eb989e994 (diff)
Bug 1200: Refine fix for crash on GNU/Linux x86_64 'NVidia beta driver 355.06' @ probeSurfacelessCtx
Refine commit e88216bd03a41480b81345ed9afc45ddea5ecfcd, i.e. restrict new 'NoSurfacelessCtx' NVidia-Vendor criteria in GLContextImpl.setRendererQuirks(..) to - isX11 (new) - isDriverNVIDIAGeForce (kept) - !(adevice instanceof EGLGraphicsDevice) (new) Surfaceless context seems to work on NVidia 355.06 for EGL+[ES+GL]. It does not work for GLX+GL though! TODO: Validate changing a GLContext's GLDrawable from 'onscreen' or 'offscreen' to 'zero' (Surfaceless).
Diffstat (limited to 'src/jogl/classes/jogamp/opengl/GLContextImpl.java')
-rw-r--r--src/jogl/classes/jogamp/opengl/GLContextImpl.java21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
index 469718995..dcab9ed5b 100644
--- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java
+++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
@@ -2241,6 +2241,17 @@ public abstract class GLContextImpl extends GLContext {
}
}
}
+ if( isDriverNVIDIAGeForce ) {
+ // Bug 1200: Crash on GNU/Linux x86_64 'NVidia beta driver 355.06' @ probeSurfacelessCtx
+ // final VersionNumber nvSafeVersion = new VersionNumber(356, 0, 0); // FIXME: Add safe version!
+ if( !isES && !(adevice instanceof EGLGraphicsDevice) /* && vendorVersion.compareTo(nvSafeVersion) < 0 */ ) {
+ final int quirk = GLRendererQuirks.NoSurfacelessCtx;
+ if(DEBUG) {
+ System.err.print("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: !ES, !EGL, Vendor " + glVendor +", X11 Renderer " + glRenderer+", Version=[vendor " + vendorVersion + ", GL " + glVersion+"]");
+ }
+ addStickyQuirkAtMapping(adevice, quirks, quirk, withinGLVersionsMapping);
+ }
+ }
}
@@ -2307,16 +2318,6 @@ public abstract class GLContextImpl extends GLContext {
}
quirks.addQuirk( quirk );
}
- } else if( isDriverNVIDIAGeForce ) {
- // Bug 1200: Crash on GNU/Linux x86_64 'NVidia beta driver 355.06' @ probeSurfacelessCtx
- // final VersionNumber nvSafeVersion = new VersionNumber(356, 0, 0); // FIXME: Add safe version!
- if( !esCtx /* && vendorVersion.compareTo(nvSafeVersion) < 0 */ ) {
- final int quirk = GLRendererQuirks.NoSurfacelessCtx;
- if(DEBUG) {
- System.err.print("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: !ES, Vendor " + glVendor +", Renderer " + glRenderer);
- }
- addStickyQuirkAlways(adevice, quirks, quirk, withinGLVersionsMapping);
- }
}
//