Java3D 1.6.0 Released

classic Classic list List threaded Threaded
27 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Java3D 1.6.0 Released

philjord
Regarding the Generic renderer bug there are at least 2 problems that cause this, the guys at ImageJ looked into this for a long time, here is the code in 1.7 that addresses it, possibly your non windows 10 users are getting the first case?
 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 either reversing or removing them,");
                                        System.err.println("or if they are required else where try adding System.setProperty(\"sun.awt.nopixfmt\", \"true\");");
                                }
                               
                                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 + ")");
        }
If you are still getting after changing the properties to
"sun.java2d.noddraw"=false and "sun.java2d.d3d"=true
then I'd love to hear more about that, as I had hoped this issue was fully understood.
Neither of the above properties helps in any manner, so they really shouldn't be set as far as I'm aware, but legacy advice lingers.
Only System.setProperty("sun.awt.noerasebackground", "true"); is needed.

The slow start up time has never occurred on my machines, so I haven't been able to replicate it, however I read some discussions that suggested setting "sun.awt.nopixfmt", "true" will improve start times.

It would be great if you could test that out and tell us if it changes anything.
 
Reply | Threaded
Open this post in threaded view
|

Re: Java3D 1.6.0 Released

runiter
phil,
Thank you for the pointing out this code to deal with Intel graphics cards.
I do not set the sun.java2d.noddraw or sun.java2d.d3d so they use the default values.

Please note that my problem occurs on the computers that have "Microsoft Drivers".

Also my problem is not limited to Intel HD2000. Here are examples of some other video cards that have this problem:

- Intel[R] 82945G Express Chipset [Microsoft Corporation - WDDM 1.0]
- Mobile Intel[R] 945 Express Chipset Family [Microsoft Corporation - WDDM 1.0]
- Intel[R] G41 Express Chipset [Microsoft Corporation - WDDM 1.1]
- Mobile Intel[R] 4 Series Express Chipset Family [Microsoft Corporation - WDDM 1.1]
- Intel[R] G33/G31 Express Chipset Family [Microsoft Corporation - WDDM 1.0]
- Intel[R] G41 Express Chipset [Microsoft Corporation - WDDM 1.1]
- Intel[R] Q45/Q43 Express Chipset [Microsoft Corporation - WDDM 1.1]
Saeid Nourian, Ph.D. Eng. | Graphing Calculator 3D
Reply | Threaded
Open this post in threaded view
|

Re: Java3D 1.6.0 Released

philjord
Thanks for that list,
as you can see here all of those drivers are unsupported on Windows 10
http://www.intel.com/content/www/us/en/support/graphics-drivers/000005526.html

So we are facing the Java 1.8u52+ on Win10 with old Intel cards by teh look of it
https://jogamp.org/bugzilla/show_bug.cgi?id=1278
best investigation here by the Lwjgl guys:
https://github.com/LWJGL/lwjgl/issues/119

So the solutions found so far are:
1 Run using webstart
2 Try to down grade the machine's java to 1.8u45 ( difficult)
3 Path the Jre manifest and offer people a replacement exe (difficult)
4 Possibly pathc the graphics driver adn offer to users (bad idea)
5 Add your own Jre in the install folder and start using that (make it Java 1.8u45). This is my preference, it requires code, but very easy to optionally start a local jre if it exists using a boot strap java process

You can see how easy number 5 is by looking at this example code:
https://github.com/philjord/ElderScrollsExplorer/blob/master/ElderScrollsExplorer/src/client/BootStrap.java
I did it because MacOS never had the right Java or Java3D in it.

To be honest a bootstrap lets you update to, so I'd suggest looking into it.

I know SweetHome3D and ImageJ are both facing this issue from time to time and have to put in place solutions.

As for getting Intel to fix the drivers, they refused to do it for MineCraft and they had already put MineCraft custom optimizations into their drivers, so I think they've dropped this issue.

Thanks,
Phil.


Reply | Threaded
Open this post in threaded view
|

Re: Java3D 1.6.0 Released

runiter
Thanks Phil,
The link to Intel drivers certainly is useful for me.

You mentioned Windows 10, but some of my users use Windows 8 and Windows 7 and get this problem too.

I already bundle JVM 1.8u51 and could very easily downgrade to 1.8u45 but when Java 9 is released in July I certainly want to upgrade to that because of HiDPI support. So I guess I better wait until Java 9 and hope that it works better with Java 9.
Saeid Nourian, Ph.D. Eng. | Graphing Calculator 3D
Reply | Threaded
Open this post in threaded view
|

Re: Java3D 1.6.0 Released

gouessej
Administrator
The chipsets you list have particularly bad OpenGL drivers anyway (when they don't simply crash). For example, I had a very important problem with some Express chipsets, either they claim to support VBOs whereas they don't, or they support them so poorly that using tiny unchanged display lists was less slow. Keep it in mind if you really want to support those chipsets. I know that lots of cheap laptops use Intel chips :( Moreover, what do you mean by "Microsoft drivers"? Its GDI renderer only supports OpenGL 1.1.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java3D 1.6.0 Released

runiter
gouessej wrote
Moreover, what do you mean by "Microsoft drivers"? Its GDI renderer only supports OpenGL 1.1.
Yes, that's the issue that causes problem. They get this kind of exception:

javax.media.j3d.IllegalRenderingStateException: Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=1.1)
        at javax.media.j3d.JoglPipeline.setupCanvasProperties(JoglPipeline.java:8082)
        at javax.media.j3d.JoglPipeline.createNewContext(JoglPipeline.java:6428)
        at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:4611)
        at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:2381)
        at javax.media.j3d.Renderer.doWork(Renderer.java:881)
        at javax.media.j3d.J3dThread.run(J3dThread.java:271)

For many, they can probably fix the problem by updating their drivers. But this solution is not ideal because most either don't know how to update drivers or don't want to.
Saeid Nourian, Ph.D. Eng. | Graphing Calculator 3D
Reply | Threaded
Open this post in threaded view
|

Re: Java3D 1.6.0 Released

gouessej
Administrator
Ok but you know that there is nothing magic. If they don't install any OpenGL driver, they'll be unable to use OpenGL. We cannot do that for them. It's not specific to Java3D by the way and using ANGLE or software rendering wouldn't bring the same performance.
Julien Gouesse | Personal blog | Website
12