java2d performance java7 / java8
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Mon Feb 9 16:32:08 UTC 2015
Hello,
Yes you are right, in the opengl pipeline usage of ARGB_PRE is
preferable, but other pipelines can use different formats. So it is
better to use GraphicsConfiguration.createCompatibleImage()
http://docs.oracle.com/javase/8/docs/api/java/awt/GraphicsConfiguration.html#createCompatibleImage-int-int-int-
On 29.01.2015 3:35, DRC wrote:
> I discovered in my own testing that, at least for my application
> (which is drawing large BufferedImages to the screen), using a
> TYPE_INT_ARGB_PRE BufferedImage is in some cases 4-5x as fast as using
> a TYPE_INT_RGB BufferedImage. The reason is because, if the pixel
> format isn't alpha-enabled, then OGLBlitSwToSurface() will call
> glPixelTransferf() to set the alpha scale and bias. This is basically
> instructing glDrawPixels() to set the alpha components to a particular
> value, which can be incredibly slow (probably not even
> hardware-accelerated on a lot of platforms.) It's much faster to set
> the alpha components to opaque in my source image.
Note that you can rewrite this part of openjdk, sources are open,
patches are welcome!
>
> On my 2009 Mac Mini, the difference this makes is about 4x (80
> Mpixels/sec vs. 20.) On my Linux machine with a high-end nVidia card,
> using ARGB_PRE with -Dsun.java2d.opengl=true increases the performance
> from 300 Mixels/sec to 400. On my MacBook Pro, the performance
> increase is also about 1/3. So I think that, in general, using
> ARGB_PRE BufferedImages is best when using OpenGL Java2d blitting.
>
> The Mac performance with Java 1.7 or 1.8 is still not as good as it
> was under Apple Java 1.6 (which was about 120 Mpixels/sec on the Mac
> Mini), but it's at least a lot better.
>
>
> On 10/7/14 12:01 PM, Hendrik Schreiber wrote:
>> On Aug 22, 2014, at 11:59, Hendrik Schreiber <hs at tagtraum.com> wrote:
>>
>>> On Aug 18, 2014, at 16:05, Florian Bruckner (3kraft)
>>> <florian.bruckner at 3kraft.com> wrote:
>>>
>>> [...]
>>>
>>> Thanks for coming up with some sort of test.
>>>
>>> Hopefully the folks at Oracle find the time to look into this,
>>> perhaps do their own performance testing, and find ways to improve
>>> the 2D pipeline.
>>
>> Looks like we have something to look forward to:
>>
>> http://mail.openjdk.java.net/pipermail/2d-dev/2014-October/004870.html
>>
>> -hendrik
--
Best regards, Sergey.
More information about the macosx-port-dev
mailing list