TestImposterNode crashes in TestChooser (v1, JVM 6.3 / Win/XP-SP2)

I've been working my way through all the tests launched from the TestChooser application. Everything was going fine until I reached TestImposterNode. The JVM crashes and there's no graphics, but the window does appear! I've got an ATI Mobility Radeon 9700 on a DELL XPS laptop running Win/XP. It appears to be crashing in the OpenGL driver to the board, which means it doesn't like something being passed in. Any ideas why this is crashing?



Here's the output:



Oct 22, 2007 4:14:17 PM jmetest.TestChooser start

INFO: Composing Test list…

Oct 22, 2007 4:14:17 PM jmetest.TestChooser find

INFO: Searching for Demo classes in "jmetest".

Oct 22, 2007 4:14:17 PM com.jme.scene.Node <init>

INFO: Node created.

Oct 22, 2007 4:14:22 PM com.jme.app.BaseGame start

INFO: Application started.

Oct 22, 2007 4:14:22 PM com.jme.system.PropertiesIO <init>

INFO: PropertiesIO created

Oct 22, 2007 4:14:22 PM com.jme.system.PropertiesIO load

INFO: Read properties

Oct 22, 2007 4:14:37 PM com.jme.input.joystick.DummyJoystickInput <init>

INFO: Joystick support is disabled

Oct 22, 2007 4:14:37 PM com.jme.system.lwjgl.LWJGLDisplaySystem <init>

INFO: LWJGL Display System created.

Oct 22, 2007 4:14:37 PM com.jme.system.lwjgl.LWJGLDisplaySystem getValidDisplayMode

INFO: Selected DisplayMode: 1280 x 768 x 16 @60Hz

Oct 22, 2007 4:14:37 PM com.jme.system.PropertiesIO save

INFO: Saved properties

Oct 22, 2007 4:14:37 PM com.jme.app.BaseSimpleGame initSystem

INFO: jME version 1.0

Oct 22, 2007 4:14:38 PM com.jme.renderer.lwjgl.LWJGLRenderer <init>

INFO: LWJGLRenderer created. W:  1280H: 768

Oct 22, 2007 4:14:38 PM com.jme.app.BaseSimpleGame initSystem

INFO: Running on: ati2dvag

Driver version: 6.14.10.6561

ATI Technologies Inc. - MOBILITY RADEON 9700 x86/SSE2 - 2.0.5279 WinXP Release

Oct 22, 2007 4:14:38 PM com.jme.renderer.AbstractCamera <init>

INFO: Camera created.

Oct 22, 2007 4:14:38 PM com.jme.util.lwjgl.LWJGLTimer <init>

INFO: Timer resolution: 1000 ticks per second

Oct 22, 2007 4:14:38 PM com.jme.scene.Node <init>

INFO: Node created.

Oct 22, 2007 4:14:38 PM com.jme.scene.Node <init>

INFO: Node created.

Oct 22, 2007 4:14:38 PM com.jme.scene.Node attachChild

INFO: Child (FPS label) attached to this node (FPS node)

Oct 22, 2007 4:14:39 PM com.jme.scene.Node <init>

INFO: Node created.

Oct 22, 2007 4:14:39 PM com.jme.scene.Node attachChild

INFO: Child (MD2 mesh-1663715008) attached to this node (MD2 mesh-1663715008)

Oct 22, 2007 4:14:40 PM jmetest.renderer.TestImposterNode simpleInitGame

INFO: Time to convert from md2 to .jme:1406

Oct 22, 2007 4:14:40 PM com.jme.scene.Node <init>

INFO: Node created.

Oct 22, 2007 4:14:40 PM jmetest.renderer.TestImposterNode simpleInitGame

INFO: Time to convert from .jme to SceneGraph:531

Oct 22, 2007 4:14:40 PM com.jme.scene.Node <init>

INFO: Node created.

Oct 22, 2007 4:14:40 PM com.jme.scene.Node attachChild

INFO: Child (MD2 mesh-1663715008) attached to this node (Fake node)

Oct 22, 2007 4:14:40 PM com.jme.scene.Node <init>

INFO: Node created.

Oct 22, 2007 4:14:40 PM com.jme.renderer.lwjgl.LWJGLTextureRenderer <init>

INFO: FBO support detected.

Oct 22, 2007 4:14:40 PM com.jme.renderer.lwjgl.LWJGLTextureRenderer initCamera

INFO: Init RTT camera

Oct 22, 2007 4:14:40 PM com.jme.renderer.AbstractCamera <init>

INFO: Camera created.

Oct 22, 2007 4:14:40 PM com.jme.scene.Node <init>

INFO: Node created.

#

An unexpected error has been detected by Java Runtime Environment:

#

#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6914d7f3, pid=2940, tid=3868

#

Java VM: Java HotSpot™ Client VM (1.6.0_03-b05 mixed mode)

Problematic frame:

C  [atioglxx.dll+0x14d7f3]

#

An error report file with more information is saved as hs_err_pid2940.log

#

If you would like to submit a bug report, please visit:

http://java.sun.com/webapps/bugreport/crash.jsp

#

I just installed the latest drivers and BIOS from DELL. However, this did not help! Now I'm looking at the drivers at the ATI site and they don't list DELL in their list of supported systems! I'll try the driver update anyway since it seems more recent, but I'll may screw my machine up since DELL may have some issues. (see http://game.amd.com/us-en/drivers_catalyst.aspx?p=xp/mobility-xp).

TestImposterNode uses render to texture technology, which either uses PBuffers or FSB. It tries to detect first what is the preferred configuration of your graphics card, and then tries to initialize the appropriate context. This all means that it is very possible that either your card does not support RTT (render to texture), or your graphics drivers are not up-to-date.

Yes, my hardware does support this and it was working until very recently. Therefore, there's some recent change that is causing this problem.

I also have ATI Mobility Radeon 9700, and all the RTT tests work fine (updated from CVS yesterday). Java version is "1.6.0_03".

I'd say compare driver versions: monkeyman's appears to be 6.14.10.6561

Driver version: 6.14.10.6571

ATI Technologies Inc. - MOBILITY RADEON 9600 x86/SSE2 - 2.0.5337 WinXP Release



It seems that you could try to update the driver.



Its interesting that opengl reports my card as 9600, catalist says its 9600/9700 series, and the laptop has 9700 sticker on it.

The latest drivers from ATI won't work on my DELL XPS because DELL has some wierd hardware configuration that is incompatible! Now what I'm I supposed to do?

Well the question is, is FBO support borked on your current driver, or is it something we are doing to setup FBO.  I guess we can also add a static boolean to LWJGLTextureRenderer that is &&'d to supported so that you can force a fallback to the pbuffer version.

yes, that's great, but drivers can say that they properly support something and then fail to do so.  It's one of the main causes for game issues.

FBO support seems to be present as it seems to work in OpenGL Extensions Viewer when I select that option. However, it also crashes after 30 secs of testing  :|  I'll try and isolate what specific test is failing. I sure hate this!

Okay, I found what causes the OpenGL Extensions Viewer to crash. All the tests work except for the last one, which is "2.1 pixel buffer object". If that test is selected it crashes the program every time. However, the following tests work with every frame buffer setings:



1.1 texturing

1.2 locked arrays

1.3 multitexture

1.4 vertex program

1.5 vertext objects

2.0 shading language



Also ALL the different frame buffer settings work:  Standard, Pixel Buffers, Frame Buffer Object, and Frame Buffer Object (float).


This is an old jME problem. Get updated version from CVS.

I have the latest from CVS!

That is suspicious… I had the exact same problem before with FBO, the extension viewer worked but jME didn't. Maybe you need to re-compile the jME jars?

I have found the following issues, which can relate to this:



Ah, crap. Just searched through the OpenGL.org forums and it appears that ATI doesn't support render-to-depth-texture in current hardware.


Yup, 16bit is all we support ATM.

LWJGLTextureRenderer is set to 24 bit depth buffer, although it doesnt render depth to the texture. At line 135.


While this article talks about adding a depth renderbuffer and then a texture to the FBO in that order it was discovered that currently ATI

He says in another thread that other TextureRenderer demos that do not use GLSL work… probably a great clue.

I found what is causing the crash for TestProjectedWater! Line 268 in LWJGLTextureRenderer.java, "EXTFramebufferObject.glGenerateMipmapEXT(GL11.GL_TEXTURE_2D);" when removed, allows the test to work without crashing! Of course I only get a FPS of 9! I'll try the other tests that were also crashing to see if this is the same problem.

I tried all the tests that crashed, and they work now after removing the line of code as explained above. However, the imposter test may have a problem, but if so, it is unrelated to the crashes I've been having. I'll start another thread if there is a problem with imposters. As to how to do mipmaps with FBOs on ATI chips on DELL laptops, we will have investigate this further.

Found two solutions (?) for this.


  1. If no attributes need to be set for the target texture, glGenerateMipmapEXT can be called after render.
  2. The texture needs to be bound to a texture unit, for glGenerateMipmapEXT to work.



    I think the problem is in the second. I have no jME source before me, but i guess a TextureState.apply() needs to be called (somehow) before glGenerateMipmapEXT.