Intel HD Graphics 520 failure

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

Intel HD Graphics 520 failure

charxie
I updated the above driver on my computer today and Energy3D no longer works. Here is the stack trace. It seems no one can now run Energy3D, including myself. It is very very frustrating.

Any help would be much appreciated.

com.jogamp.opengl.GLException: java.lang.reflect.InvocationTargetException
        at com.jogamp.opengl.awt.GLJPanel.display(GLJPanel.java:465)
        at jogamp.opengl.GLDrawableHelper.invoke(GLDrawableHelper.java:912)
        at com.jogamp.opengl.awt.GLJPanel.invoke(GLJPanel.java:1034)
        at com.ardor3d.framework.jogl.awt.JoglSwingCanvas.draw(JoglSwingCanvas.java:100)
        at com.ardor3d.framework.FrameHandler.updateFrame(FrameHandler.java:90)
        at org.concord.energy3d.scene.SceneManager.run(SceneManager.java:440)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        at java.awt.EventQueue.invokeAndWait(Unknown Source)
        at java.awt.EventQueue.invokeAndWait(Unknown Source)
        at com.jogamp.opengl.awt.GLJPanel.display(GLJPanel.java:463)
        ... 6 more
Caused by: com.jogamp.opengl.GLException: Caught RuntimeException: com.ardor3d.util.Ardor3dException: Error in opengl: invalid enumerant on thread AWT-EventQueue-0
        at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
        at com.jogamp.opengl.awt.GLJPanel$OffscreenBackend.doPaintComponent(GLJPanel.java:2095)
        at com.jogamp.opengl.awt.GLJPanel.paintComponent(GLJPanel.java:569)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintToOffscreen(Unknown Source)
        at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
        at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
        at javax.swing.RepaintManager.paint(Unknown Source)
        at javax.swing.JComponent._paintImmediately(Unknown Source)
        at javax.swing.JComponent.paintImmediately(Unknown Source)
        at com.jogamp.opengl.awt.GLJPanel$12.run(GLJPanel.java:1535)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.RuntimeException: com.ardor3d.util.Ardor3dException: Error in opengl: invalid enumerant
        at jogamp.opengl.GLRunnableTask.run(GLRunnableTask.java:67)
        at jogamp.opengl.GLDrawableHelper.execGLRunnables(GLDrawableHelper.java:770)
        at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:676)
        at com.jogamp.opengl.awt.GLJPanel$Updater.display(GLJPanel.java:1446)
        at com.jogamp.opengl.awt.GLJPanel$10.run(GLJPanel.java:1521)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
        ... 25 more
Caused by: com.ardor3d.util.Ardor3dException: Error in opengl: invalid enumerant
        at com.ardor3d.renderer.jogl.JoglRenderer.checkCardError(JoglRenderer.java:689)
        at com.ardor3d.renderer.jogl.JoglRenderer.flushFrame(JoglRenderer.java:237)
        at com.ardor3d.framework.jogl.JoglCanvasRenderer.draw(JoglCanvasRenderer.java:265)
        at com.ardor3d.framework.jogl.JoglDrawerRunnable.run(JoglDrawerRunnable.java:16)
        at jogamp.opengl.GLRunnableTask.run(GLRunnableTask.java:61)
        ... 30 more
Caused by: com.jogamp.opengl.GLException: invalid enumerant
        at com.ardor3d.renderer.jogl.JoglRenderer.checkCardError(JoglRenderer.java:686)
        ... 34 more
com.jogamp.opengl.GLException: java.lang.reflect.InvocationTargetException
        at com.jogamp.opengl.awt.GLJPanel.display(GLJPanel.java:465)
        at jogamp.opengl.GLDrawableHelper.invoke(GLDrawableHelper.java:912)
        at com.jogamp.opengl.awt.GLJPanel.invoke(GLJPanel.java:1034)
        at com.ardor3d.framework.jogl.awt.JoglSwingCanvas.draw(JoglSwingCanvas.java:100)
        at com.ardor3d.framework.FrameHandler.updateFrame(FrameHandler.java:90)
        at org.concord.energy3d.scene.SceneManager.run(SceneManager.java:440)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        at java.awt.EventQueue.invokeAndWait(Unknown Source)
        at java.awt.EventQueue.invokeAndWait(Unknown Source)
        at com.jogamp.opengl.awt.GLJPanel.display(GLJPanel.java:463)
        ... 6 more
Caused by: com.jogamp.opengl.GLException: Caught RuntimeException: com.ardor3d.util.Ardor3dException: Error in opengl: invalid enumerant on thread AWT-EventQueue-0
        at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
        at com.jogamp.opengl.awt.GLJPanel$OffscreenBackend.doPaintComponent(GLJPanel.java:2095)
        at com.jogamp.opengl.awt.GLJPanel.paintComponent(GLJPanel.java:569)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintToOffscreen(Unknown Source)
        at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
        at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
        at javax.swing.RepaintManager.paint(Unknown Source)
        at javax.swing.JComponent._paintImmediately(Unknown Source)
        at javax.swing.JComponent.paintImmediately(Unknown Source)
        at com.jogamp.opengl.awt.GLJPanel$12.run(GLJPanel.java:1535)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.RuntimeException: com.ardor3d.util.Ardor3dException: Error in opengl: invalid enumerant
        at jogamp.opengl.GLRunnableTask.run(GLRunnableTask.java:67)
        at jogamp.opengl.GLDrawableHelper.execGLRunnables(GLDrawableHelper.java:770)
        at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:676)
        at com.jogamp.opengl.awt.GLJPanel$Updater.display(GLJPanel.java:1446)
        at com.jogamp.opengl.awt.GLJPanel$10.run(GLJPanel.java:1521)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
        ... 25 more
Caused by: com.ardor3d.util.Ardor3dException: Error in opengl: invalid enumerant
        at com.ardor3d.renderer.jogl.JoglRenderer.checkCardError(JoglRenderer.java:689)
        at com.ardor3d.renderer.jogl.JoglRenderer.flushFrame(JoglRenderer.java:237)
        at com.ardor3d.framework.jogl.JoglCanvasRenderer.draw(JoglCanvasRenderer.java:265)
        at com.ardor3d.framework.jogl.JoglDrawerRunnable.run(JoglDrawerRunnable.java:16)
        at jogamp.opengl.GLRunnableTask.run(GLRunnableTask.java:61)
        ... 30 more
Caused by: com.jogamp.opengl.GLException: invalid enumerant
        at com.ardor3d.renderer.jogl.JoglRenderer.checkCardError(JoglRenderer.java:686)
        ... 34 more
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
More information: If I disable Intel HD Graphics 520, then it works. But we can't ask users to disable this driver.
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
More information about this failure. It turns out that if I downgrade to IntelĀ® Graphics Driver for Windows* [15.45], as provided here: https://downloadcenter.intel.com/download/27360/Graphics-Intel-Graphics-Driver-for-Windows-15-45-?product=88355, I can get Energy3D back to life. Any newer version 24.20.*.* provided at: https://downloadcenter.intel.com/download/27988/Intel-Graphics-Driver-for-Windows-10?product=80939 will cause the program to fail completely. In other words, no one can use it.

Is there anything I can do, in your opinion?
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

gouessej
Administrator
Thank you for this very accurate piece of information. If those regressions are already known by Intel, there will be nothing that you can do except waiting for some fixes in this driver.

Maybe you could try Mesa under Windows. Do you reproduce this problem under GNU Linux? You can try with a Live DVD.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
Is there really no way for us to fix the problem? If you know, can you tell me where to start in order to solve this problem? All the Intel drivers starting with version number 24.20.* (there are 5 or 6 of them) cause this problem. I am not sure that Intel knows that their drivers are creating problems for us and I have no confidence that this problem will be fixed by them. As more and more computers get the updates, we are going to lose more and more users. We have already lost hundreds of them in recent weeks. They simply can't run our program at all!

Thanks for your help!
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
It seems one source of the error comes from this part of the code in JoglRenderer:

    @Override
    public void checkCardError() throws Ardor3dException {
        final GL gl = GLContext.getCurrentGL();

        try {
            final int errorCode = gl.glGetError();
            if (errorCode != GL.GL_NO_ERROR) {
                throw new GLException(_glu.gluErrorString(errorCode));
            }
        } catch (final GLException exception) {
            throw new Ardor3dException("Error in opengl: " + exception.getMessage(), exception);
        }
    }

Is there anything that we can do to fix this? Perhaps this isn't hard to fix?
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
This post was updated on .
Some more information about the error: I tracked down the problem to the following code in our part:

                surround = new Box("Mirror (Surround)");
                surround.setModelBound(new OrientedBoundingBox());
                final OffsetState offset = new OffsetState();
                offset.setFactor(1);
                offset.setUnits(1);
                surround.setRenderState(offset);
                root.attachChild(surround);


If the root.attachChild is commented out, then the error will not show. This problem seems to be related only to the primitive Box and Cylinder classes. For the Line class, it seems OK.

                outlineMesh = new Line("Mirror (Outline)");
                outlineMesh.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(8));
                outlineMesh.setDefaultColor(ColorRGBA.BLACK);
                outlineMesh.setModelBound(new OrientedBoundingBox());
                root.attachChild(outlineMesh);


I wonder if this information provides any clue? I highly suspect that it is a texture problem because those primitive shapes in Ardor3D have textures whereas lines do not.

Please advise.
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
I found it is the internal texture coordinates of Box and Cylinder classes that are bugging us in our code. Not sure if this can be easily fixed with Ardor3D. But Runiter is preparing a clean test case to report and I am working around the problem.
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

gouessej
Administrator
Please can you elaborate? How do you work around the problem?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
I tracked the problem down to the index buffer of primitive shapes in Ardor3D such as spheres, cylinders, cones, and boxes. I just disabled the index buffers temporarily and things worked. Runiter said he would submit a clean and simple test case to show the problem if he can reproduce it on his end. Right now, I am working directly within Energy3D and hope to fix it by tonight.

In the following line of code,

meshData.setIndices(BufferUtils.createIndexBufferData(3 * count, verts - 1));

Do you know what might be wrong?
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

gouessej
Administrator
I don't know. Those indices are correct; otherwise, it would crash everywhere, not only on your specific hardware.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
Just in case anyone else runs into this problem, my workaround is to rewrite my own primitive shapes to bypass the index buffer. You don't need the index buffer to draw them.
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
By the way, this problem affects not only 520, but also 630. I think many computers have Intel's graphics cards and they will be affected sooner or later once the new generation of drivers roll out to the mass.
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
Latest update: I think this could be a bug limited to Energy3D.  I have notified runiter that he probably doesn't need to submit a bug report to this forum. More will follow if I find out more. My gut is telling me that this can be easily fixed by turning on a setting, or something like that.
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
It is all solved. It is a really small bug in our code. It turns out that you can't just give one vertex in the vertex buffer with the new driver:

line.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(1));

After I changed 1 to 2, everything returned to normal!
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

gouessej
Administrator
Thank you very much! We should mention this in the wiki, shouldn't we?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Intel HD Graphics 520 failure

charxie
Yes, we should. Otherwise, any code that has this setting in the initialization of an object may fail. Technically, a line can have only one point and developers tend to assign just one before they know how many points the line will have later.