JavaFX versus AWT/Swing Hardware Acceleration

Chien Yang chien.yang at oracle.com
Fri Jan 3 09:46:30 PST 2014


The Graphics Support section in this link has a detail information on 
the list of GPUs JavaFX can take advantage of:

http://docs.oracle.com/javafx/2/system_requirements_2-2-5/jfxpub-system_requirements_2-2-5.htm

Note: Linux and Mac should have the same support coverage except for 
Intel GMA 4500 which we haven't tested.

- Chien

On 01/03/2014 09:24 AM, Kevin Rushforth wrote:
> A couple other thoughts.
>
> 1) JavaFX doesn't use software loops for the actual rendering as long 
> as the card is capable of supporting Prism. We do mix HW and SW in 
> that we generate masks from a path in SW, but we cache that on the 
> card and render it using shaders.
>
> 2) JavaFX can support Intel HD on Windows (something in the way Java2D 
> uses D3D exposes a bug in Intel's driver so it is disabled).
>
> Jim can probably come up with more.
>
> -- Kevin
>
>
> Stephen F Northover wrote:
>> Hi Ryan,
>>
>> I'll let others describe hardware acceleration in AWT/Swing but in 
>> JavaFX, D3D and ES2 shaders are used to draw.  These run directly on 
>> the graphics card and render data that is downloaded there.  Because 
>> JavaFX has a scene graph, it has a notion of what has been changed 
>> and can render only a subset of the scene graph nodes.
>>
>> This is a very high level description of JavaFX but captures the 
>> essence of what is happening.  Any other FX committers want to comment?
>>
>> Steve
>>
>> On 2014-01-01 1:39 PM, Ryan Cuprak wrote:
>>>   What is the difference between hardware acceleration in JavaFX 
>>> versus Swing/AWT? I heard a while back someone claim that Swing/AWT 
>>> could never fully leverage hardware acceleration. However there are 
>>> the usual mix of -D parameters (sun.java2.opengl/sun.java2d.d3d, 
>>> etc.) for Swing/AWT. So I am just wondering how JavaFX’s 
>>> acceleration differs from the hardware acceleration in Swing. When I 
>>> was giving a talk at a JUG meeting someone called me out on the 
>>> hardware acceleration bit and I realized I didn’t fully understand 
>>> the differences between the two.
>>>
>>>   I understand that JavaFX has a scene graph and Swing doesn’t etc. 
>>> So I am assuming that the scene graph operations are optimized on 
>>> the GPU whereas if you were trying to replicate a scene graph in 
>>> Swing you would obviously be doing all the work on the CPU. So 
>>> Swing’s hardware acceleration is more about buffers?
>>>
>>>   I did come across this article:
>>> https://weblogs.java.net/blog/opinali/archive/2010/05/03/first-long-look-javafx-13-and-prism 
>>>
>>>   Specifically this line caught my attention "Prism finally renders 
>>> effects with full hardware acceleration and without the extra buffer 
>>> copies that spoil effects on the Swing toolkit.”
>>>   This article is a dated - brings up a second question about 
>>> hardware acceleration with a hybrid Swing/JavaFX application - what 
>>> happens?
>>>
>>>     Thanks,
>>> -Ryan
>>



More information about the openjfx-dev mailing list