WebStart / Performance test

Folks,

If anyone is bored enough, I wonder if you’d be good enough to try the following WebStart/performance test and let me know if it runs on your platform. It needs Java 1.5.0 and will run for exactly 2 minutes and then display a final performance figure in FPS. I’d be paticularly interested to see if it runs on Linux/Mac OK or anything with a ‘lesser’ video card - integrated Intel graphics etc.

( My Linux install suffers from the Web Start bug,
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6195591 so I can’t test this )

For reference, I see

Win2000, Athlon 1800+, GeForce FX5200, 78fps

Please don’t resize the window if reporting performance numbers.

Here’s the URL:

http://abraded.co.uk/jogl/kit2.jnlp

Some of you may recognize this as a port of my old Java3D app from some time back. If it fails to run, I’d appreciate any diagnostics from the WebStart console

Thanks
Rob

Runs perfectly here (WinXP, Java 1.5)…
But I only get 70 fps ???

AMD3000+
Radeon 9800Pro
1Gb DDR

Chman

Chman - thanks for that.

I’ve seen my stuff run slower on ATI cards than NVidia before, and never quite worked out why. My figure was with VSYNC off, BTW.

Rob

Quick screen shot to let you know roughly what to expect !

http://un.abraded.co.uk/photos/photos2004/20040131_Snow/small/3d_small.jpg

Fails on my ATI Radeon 8500

Exception in thread “AWT-EventQueue-0” net.java.games.jogl.GLException: Method “glMultiDrawArrays” not available
at net.java.games.jogl.impl.windows.WindowsGLImpl.glMultiDrawArrays(WindowsGLImpl.java:17954)
at rob.sg.JOGLRenderer.drawTriangleStripArrayVBO(JOGLRenderer.java:394)
at rob.sg.JOGLRenderer.drawTriangleStripArray(JOGLRenderer.java:243)
at rob.sg.JOGLRenderer.drawGeometry(JOGLRenderer.java:229)
at rob.sg.JOGLRenderer.drawShape(JOGLRenderer.java:204)
at rob.sg.Renderer.renderBin(Renderer.java:128)
at rob.sg.Renderer.render(Renderer.java:38)
at rob.sg.SGCamera.frame(SGCamera.java:53)
at rob.sg.JOGLCamera.display(JOGLCamera.java:128)
at net.java.games.jogl.impl.GLDrawableHelper.display(GLDrawableHelper.java:74)
at net.java.games.jogl.GLCanvas$DisplayAction.run(GLCanvas.java:221)
at net.java.games.jogl.impl.GLContext.invokeGL(GLContext.java:287)
at net.java.games.jogl.GLCanvas.displayImpl(GLCanvas.java:208)
at net.java.games.jogl.GLCanvas.display(GLCanvas.java:75)
at net.java.games.jogl.GLCanvas.paint(GLCanvas.java:82)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)

nlmueng,

Thanks - this is the sort of thing I’m trying to find.

I thought I was checking for this as an extension - obviously not though !

Thanks again,
Rob

58fps, Gf2Go. Seems about right.

Cas :slight_smile:

nlmueng,

I think I might have fixed this - I was assuming that anything that had vertex_buffer_object also had multi_draw_arrays.

Would you mind trying it again please ?

You should see either :

“Using MultiDrawArrays”, or “NOT using MultiDrawArrays” in the java console output with the new version.

Thanks
Rob

[quote] 58fps, Gf2Go. Seems about right.
[/quote]
Cas - many thanks seems pretty good to me too.

Rob

it says:

Using MultiDrawArrays

and i still get:

Exception in thread “AWT-EventQueue-0” net.java.games.jogl.GLException: Method “glMultiDrawArrays” not available
at net.java.games.jogl.impl.windows.WindowsGLImpl.glMultiDrawArrays(WindowsGLImpl.java:17954)
at rob.sg.JOGLRenderer.drawTriangleStripArrayVBO(JOGLRenderer.java:397)
at rob.sg.JOGLRenderer.drawTriangleStripArray(JOGLRenderer.java:253)
at rob.sg.JOGLRenderer.drawGeometry(JOGLRenderer.java:239)
at rob.sg.JOGLRenderer.drawShape(JOGLRenderer.java:214)
at rob.sg.Renderer.renderBin(Renderer.java:128)
at rob.sg.Renderer.render(Renderer.java:38)
at rob.sg.SGCamera.frame(SGCamera.java:53)
at rob.sg.JOGLCamera.display(JOGLCamera.java:128)
at net.java.games.jogl.impl.GLDrawableHelper.display(GLDrawableHelper.java:74)
at net.java.games.jogl.GLCanvas$DisplayAction.run(GLCanvas.java:221)
at net.java.games.jogl.impl.GLContext.invokeGL(GLContext.java:287)
at net.java.games.jogl.GLCanvas.displayImpl(GLCanvas.java:208)
at net.java.games.jogl.GLCanvas.display(GLCanvas.java:75)
at net.java.games.jogl.GLCanvas.paint(GLCanvas.java:82)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)

I have the latest ATI drivers

nlmueng,

Thanks for trying this again - it leaves me puzzled however.

My code does:


if (gl.isExtensionAvailable("GL_EXT_multi_draw_arrays")) {
            useMDA = true;
            System.out.println("Using MultiDrawArrays");
} else {
            useMDA = false;
            System.out.println("NOT using MultiDrawArrays");
}
...
if (useMDA) {
            gl.glMultiDrawArrays(
                gl.GL_TRIANGLE_STRIP,
                tsa.getStripOffsets(),
                stripVertexCounts,
                stripVertexCounts.length);
}


You are seeing the first ‘println’ which leaves me baffled as to why the call the glMultiDrawArrays (Which is indeed line 397) is getting this exception given the test for the extension passed.

Can anyone spead any light on this ?

Puzzled,
Rob

Ahh - maybe the call should be to glMultiDrawArraysEXT

Can you try it now ?

Thanks
Rob

It worked,

70.747025fps
P4 3.0
1 GB ram
ATI Radeon 8500

[quote] It worked
[/quote]
Great - thanks for bearing with me on this.

Rob

A trick I did was to create a wrapper GL class that delegated calls to the appropriate method depending on the available extensions / GL version. E.g. glDrawRangeElements calls either glDrawRangeElementsEXT or glDrawRangeElements as appropriate. And vice-versa. Saves me from making this kind of slip-up, which otherwise afflicts me often.

Cas :slight_smile:

Cas,

This sounds a nice idea.

(Unfortunately in this particular case, it was my incompetence rather than carelessness that caused this, however your suggestion sounds good)

Rob

Demo runs smoothly on an NVidia Quadro FX Go700 (mobile chip) with 67.42 drivers. However, it looks like none of the textures are showing up. The polygons are smoothly shaded in shades of white, gray, and some tan areas for the lawns.

Ken,

Thanks - I suspect my texture compression code is the most likely suspect - I’ll investigate after the holiday.

Thanks again.
Rob

Just ran it at the office to see what it does here. The results are not pretty:
Win2003, P4 2.4GHz, Intel Extreme driver version 6.13.1.3259, 3.1fps

Hi,
I just ran it with the following config:
-amd Athlon 2600+
-win98
-GeForce4 ti4200

I get 82.557 FPS

It doesn’t run fullscreen, only windowed,is that normal?