Try this: http://www.2shared.com/file/2906657/598d3d4e/MyGameLibTest.html
OK, I think I can reproduce the problem now.
On my Nvidia 7900 GS board (1600x1200x32) I get 20 fps on 1.6.0_04 -
with the hw acceleration enabled. I get 60 (!) fps with
the ddraw/d3d pipeline disabled!
On 1.6.0_10 I always get 60fps (is the app throttled? since it’s
60fps with hw accel. disabled and enabled).
I ran the test with primitive count and noticed a tons
of unaccelerated copies.
I think one of the images you have for some reason could not
be accelerated. Either because of the bug in ImageIO (there
was a bug fixed in 6u10 and jdk7 which prevented some
images loaded with imageio from being accelerated), or
may be you did something else (like grabbed a data buffer or
a raster)?
I would suggest to comment out some of the drawImages
in your app to see which one is responsible.
From the tracing I see that this unaccelerated image or (images) is
copied right after a drawString and fillRect calls:
// ok this is accelerated
sun.java2d.d3d.D3DTextureToSurfaceBlit::Blit("Direct3D Texture", AnyAlpha, "D3D render target")
sun.java2d.d3d.D3DTextureToSurfaceBlit::Blit("Direct3D Texture", AnyAlpha, "D3D render target")
sun.java2d.d3d.DelegateSwToTextureLoop::Blit(Any, SrcNoEa, "Direct3D Texture")
sun.java2d.loops.Blit::Blit(ByteIndexed, SrcNoEa, IntArgbPre)
sun.java2d.d3d.D3DTextureToSurfaceBlit::Blit("Direct3D Texture", AnyAlpha, "D3D render target")
sun.java2d.d3d.DelegateSwToTextureLoop::Blit(Any, SrcNoEa, "Direct3D Texture")
sun.java2d.loops.Blit::Blit(ByteIndexed, SrcNoEa, IntArgbPre)
sun.java2d.d3d.D3DTextureToSurfaceBlit::Blit("Direct3D Texture", AnyAlpha, "D3D render target")
D3DDrawGlyphs
D3DFillRect
// and this is not
sun.java2d.loops.Blit::Blit(IntRgb, SrcNoEa, IntRgb)
sun.java2d.loops.Blit::Blit(IntRgb, SrcNoEa, IntRgb)
.... // many more of these
Dmitri
Its a stupid idea, but maybe getFPS is wrong
Actually, drawing some images should defintely be faster.