From 706ba43dbfd528fea7a1bc1eeafdacfee39899a5 Mon Sep 17 00:00:00 2001 From: phil Date: Tue, 1 Nov 2016 12:11:56 +1300 Subject: Bug 1333 - Warning notice in cases where Jogl bug 1278 is in effect The pipeline inspect the environment, and issue solutions for noddraw and the HD2000/3000 driver. Though they are simple System.err so not a real solution. --- .../java/org/jogamp/java3d/Jogl2es2Pipeline.java | 43 ++++++++++++++++++++-- src/main/java/org/jogamp/java3d/JoglPipeline.java | 40 ++++++++++++++++++++ 2 files changed, 79 insertions(+), 4 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java b/src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java index f39d5e6..b105cdc 100644 --- a/src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java +++ b/src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java @@ -59,6 +59,7 @@ import org.jogamp.vecmath.SingularMatrixException; import org.jogamp.vecmath.Vector4f; import com.jogamp.common.nio.Buffers; +import com.jogamp.common.os.Platform; import com.jogamp.nativewindow.AbstractGraphicsDevice; import com.jogamp.nativewindow.AbstractGraphicsScreen; import com.jogamp.nativewindow.CapabilitiesChooser; @@ -5152,10 +5153,6 @@ class Jogl2es2Pipeline extends Jogl2es2DEPPipeline joglesctx.renderingData.alphaTestValue = 0; joglesctx.renderingData.ignoreVertexColors = false; - // RAISE_BUG: yep only called on a null RenderingAttributes - // FIXME: this call does not set stencil test, so possibly this is why the rendering attributes - // caused such a mess when not present?? - if (joglesctx.gl_state.glEnableGL_STENCIL_TEST == true) { gl.glDisable(GL2ES2.GL_STENCIL_TEST); @@ -6932,6 +6929,44 @@ class Jogl2es2Pipeline extends Jogl2es2DEPPipeline if (major < 1 || (major == 1 && minor < 2)) { + // In some double createNewContext uses or getPerferredConfiguration called before a Frame is constructed + // the disabling of D3D can cause this issue + // see Bug 1201 - Crash with option "sun.java2d.d3d=false" + // https://jogamp.org/bugzilla/show_bug.cgi?id=1201 + + // In the case of Java > 1.8u51 Win10 and an Intel HD2000/3000 driver, the driver will not load because + // the java.exe manifest has a "supportedOS Id" that the drivers don't like (the drivers are too old) + // see Bug 1278 - Windows 10 returns software Profile + // https://jogamp.org/bugzilla/show_bug.cgi?id=1278 + // So we will detect Win10/Oracle Jre u > 51 and offer advice to down grade jre + + if (glVendor.equalsIgnoreCase("Microsoft Corporation") && // + glRenderer.equalsIgnoreCase("GDI Generic") && // + glVersion.equalsIgnoreCase("1.1.0")) + { + System.err.println("Java3D - GDI Generic Driver use detected."); + System.err.println("This may be caused by any of the following issues."); + + if (System.getProperty("sun.java2d.noddraw", "false").equals("true") || System.getProperty("sun.java2d.d3d", "true").equals("false")) + { + System.err.println("Issue: Use of System.setProperty(\"sun.java2d.noddraw\", \"true\");"); + System.err.println("or System.setProperty(\"sun.java2d.d3d\", \"false\");"); + System.err.println("If either of these are being used please try reversing or removing them."); + } + + if (Platform.getOSName().equalsIgnoreCase("Windows 10") && //win10 + (Platform.JAVA_VERSION_NUMBER.compareTo(Platform.Version19) >= 0) || // 1.9 or 1.8 > 51 + (Platform.JAVA_VERSION_NUMBER.compareTo(Platform.Version18) >= 0 && Platform.JAVA_VERSION_UPDATE > 51) && // + Platform.getJavaVMName().toLowerCase().startsWith("java hotspot(tm)"))// e.g. Java HotSpot(TM) 64-Bit Server VM ; OpenJDK would give OpenJDK 64-Bit Server VM + { + System.err.println("Issue: The use of an Intel HD2000/3000 driver in combination with Windows 10 and"); + System.err.println("a JRE greater than 1.8 update 51. Please downgrade the JRE in use to JRE 1.8u51 or lower."); + System.err.println("For more information please see https://jogamp.org/bugzilla/show_bug.cgi?id=1278."); + } + System.err.println("If this software has been supplied to you and you are unable to modify it's configuration"); + System.err.println("please contact the suppler of this software with this entire message."); + } + throw new IllegalRenderingStateException( "Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=" + major + "." + minor + ")"); } diff --git a/src/main/java/org/jogamp/java3d/JoglPipeline.java b/src/main/java/org/jogamp/java3d/JoglPipeline.java index d9cd032..29e9164 100644 --- a/src/main/java/org/jogamp/java3d/JoglPipeline.java +++ b/src/main/java/org/jogamp/java3d/JoglPipeline.java @@ -78,6 +78,7 @@ import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.Threading; import com.jogamp.common.nio.Buffers; +import com.jogamp.common.os.Platform; import com.jogamp.nativewindow.awt.AWTGraphicsConfiguration; import com.jogamp.nativewindow.awt.AWTGraphicsDevice; import com.jogamp.nativewindow.awt.AWTGraphicsScreen; @@ -8091,6 +8092,45 @@ static boolean hasFBObjectSizeChanged(JoglDrawable jdraw, int width, int height) // and cube map textures. if (major < 1 || (major == 1 && minor < 2)) { + + // In some double createNewContext uses or getPerferredConfiguration called before a Frame is constructed + // the disabling of D3D can cause this issue + // see Bug 1201 - Crash with option "sun.java2d.d3d=false" + // https://jogamp.org/bugzilla/show_bug.cgi?id=1201 + + // In the case of Java > 1.8u51 Win10 and an Intel HD2000/3000 driver, the driver will not load because + // the java.exe manifest has a "supportedOS Id" that the drivers don't like (the drivers are too old) + // see Bug 1278 - Windows 10 returns software Profile + // https://jogamp.org/bugzilla/show_bug.cgi?id=1278 + // So we will detect Win10/Oracle Jre u > 51 and offer advice to down grade jre + + if (glVendor.equalsIgnoreCase("Microsoft Corporation") && // + glRenderer.equalsIgnoreCase("GDI Generic") && // + glVersion.equalsIgnoreCase("1.1.0")) + { + System.err.println("Java3D - GDI Generic Driver use detected."); + System.err.println("This may be caused by any of the following issues."); + + if (System.getProperty("sun.java2d.noddraw", "false").equals("true") || System.getProperty("sun.java2d.d3d", "true").equals("false")) + { + System.err.println("Issue: Use of System.setProperty(\"sun.java2d.noddraw\", \"true\");"); + System.err.println("or System.setProperty(\"sun.java2d.d3d\", \"false\");"); + System.err.println("If either of these are being used please try reversing or removing them."); + } + + if (Platform.getOSName().equalsIgnoreCase("Windows 10") && //win10 + (Platform.JAVA_VERSION_NUMBER.compareTo(Platform.Version19) >= 0) || // 1.9 or 1.8 > 51 + (Platform.JAVA_VERSION_NUMBER.compareTo(Platform.Version18) >= 0 && Platform.JAVA_VERSION_UPDATE > 51) && // + Platform.getJavaVMName().toLowerCase().startsWith("java hotspot(tm)"))// e.g. Java HotSpot(TM) 64-Bit Server VM ; OpenJDK would give OpenJDK 64-Bit Server VM + { + System.err.println("Issue: The use of an Intel HD2000/3000 driver in combination with Windows 10 and"); + System.err.println("a JRE greater than 1.8 update 51. Please downgrade the JRE in use to JRE 1.8u51 or lower."); + System.err.println("For more information please see https://jogamp.org/bugzilla/show_bug.cgi?id=1278."); + } + System.err.println("If this software has been supplied to you and you are unable to modify it's configuration"); + System.err.println("please contact the suppler of this software with this entire message."); + } + throw new IllegalRenderingStateException( "Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=" + major + "." + minor + ")"); -- cgit v1.2.3