JDK6 update 10 - setXorMode and -Dsun.java2d.d3d=true
I've got an urgent performance problem with the "Graphics"-method "setXorMode" under JDK/JRE6 update 10 beta. I know it is only a beta version and therefore does not have to perform well, but maybe it is something from general interest and maybe (and hopefully) there is a solution for this problem to come.
We have a software which renders some quite complicated graphics. It just happens once per second and therefore it works quite well although these graphics could be more performant. The backbuffer pictures are of the typed "Image" (because it is a relative old library of our own) and because of this not hardware accelerated.
Recently, we added a new graphic to our software which should be rendered at 20Hz. This was impossible to do without hardware acceleration on our hardware (-> Pentium M 1.8GHz, 1GB RAM, ATI Mobility Radeon 9000 64MB, WinXP).
It took me some time to dig myself through all the performance possibilities and settings Java provides and ended up with VolatileImage, JRE6 update 10 beta and the switch -Dsun.java2d.d3d=true. With these settings, all works fine. The hardware renders the 20Hz graphic (which is proved by the massive decrease of CPU usage during rendering (100% -> 12-15%)), the (verbatim) old "Image"-graphics perform the same as ever.
Well, I have to say they perform ALMOST the same as ever . . . .
These old graphics have the possibility to let the user zoom into them. For the zooming, a rectangle is painted into the graphic so that the user can see what he already has marked with the mouse.
This rectangle is painted using the "setXorMode"-method of "Graphics". This is done (as you may guess) because the rectangle has to disappear in the current position each time the user moves the mouse a little farther. Now, this Xor-operation decreases the perfomance under JRE6 update 10 with -Dsun.java2d.d3d=true in a way that the zooming mode is nearly unusable. If I set the switch -Dsun.java2d.d3d to false, the Zooming works as normal but my 20Hz graphic is not hardware accelerated anymore (which I proved by asking the ImageCapabilities of the VolatileImage).
Now, what can I do to solve this problem?