JavaFX Direct3D 12 - Second EA release

Christopher Schnick crschnick at xpipe.io
Fri Nov 28 12:24:59 UTC 2025


I did not encounter the vanishing issue anymore with that build, so at 
least it is usable.

However, the font rendering issue still exists for some nodes:

It is not deterministic, meaning that if I just scroll the scrollpane 
forward and back, the same text might get rendered correctly.

Also, did you see the performance results I posted for my AMD system? 
Performance was quite bad there, so this is not in a stage where I can 
test this in production a bit.

On 28/11/2025 12:41, Lukasz Kostyra wrote:
>
> Hi Christopher,
>
> I just pushed a fix for JDK-8371995 onto direct3d12 branch in the 
> sandbox - https://github.com/openjdk/jfx-sandbox/tree/direct3d12 . If 
> you find a moment, could you build JFX from that branch and check if 
> your app works correctly?
>
> -Lukasz
>
> *From:*openjfx-dev <openjfx-dev-retn at openjdk.org> *On Behalf Of 
> *Lukasz Kostyra
> *Sent:* Monday, 17 November 2025 15:14
> *To:* Christopher Schnick <crschnick at xpipe.io>
> *Cc:* OpenJFX <openjfx-dev at openjdk.org>
> *Subject:* RE: Re: JavaFX Direct3D 12 - Second EA release
>
> I might’ve found the problem, there is an assertion that triggers when 
> multiple text objects using different fonts are drawn. It could be 
> related (AFAIK Label controls will eventually end up at the same text 
> rendering routines as Text nodes). Assertions are compiled out on 
> Release for performance, so there is a chance it would corrupt the 
> rendering without anything meaningful shown on screen.
>
> To track this I just filed https://bugs.openjdk.org/browse/JDK-8371995 
> . I will check it and let you know when I fix it.
>
> On your side It might still be handy to build JFX in DebugNative, to 
> confirm if the triggered assertion is the same and to later confirm if 
> the fix is working for you too.
>
> -Lukasz
>
> *From:*Christopher Schnick <crschnick at xpipe.io>
> *Sent:* Saturday, 15 November 2025 17:39
> *To:* Lukasz Kostyra <lukasz.kostyra at oracle.com>
> *Cc:* OpenJFX <openjfx-dev at openjdk.org>
> *Subject:* Re: [External] : Re: JavaFX Direct3D 12 - Second EA release
>
> Forgot to add, there is nothing out of the ordinary printed in the 
> verbose logs.
>
> If I find the time, I can look into compiling a debug build.
>
> But the problem should be reproducible somehow when just automatically 
> creating a lot of labels with random styles, sizes, and text. Some of 
> them should break as they did for me.
>
> On 15/11/2025 17:34, Christopher Schnick wrote:
>
>     Ok, so I had more time to debug it. The one weird thing I observed
>     when it was working was that some labels have corrupted text
>     rendering:
>
>
>     Not all of them, most are fine. There are no differences in terms
>     of style classes etc. between the labels. When scrolling, the
>     rendering sometimes switches between this corrupted and normal
>     state after some delay.
>
>     After a while I also figured out that text rendering is
>     responsible for the issue of the nodes vanishing: Certain label
>     contents broke the renderer. For example, in my application, the
>     string "Password manager" when assigned to a label broke it and
>     nothing was rendered anymore. I tried to find an easy reproducer
>     but was not able to. It's probably very dependent on all the
>     different style classes that influence the text shape/size/etc.
>
>     On 13/11/2025 16:30, Lukasz Kostyra wrote:
>
>         Thanks for checking.
>
>         It is very possible the D3D12 runtime did not like something,
>         could be related to your specific hardware. D3D12 by now has
>         many extensions which differ depending on hardware and can
>         lift certain restrictions - we already internally had a case
>         where one GPU had some restriction that was not enforced on
>         another GPU and we had to accommodate that.
>
>         The first step would be to try running D3D12 with
>         “-Dprism.verbose=true -Dprism.debug=true”. These should print
>         additional logs that might have some extra information.
>
>         If there’s nothing useful there, next step would be to build
>         JavaFX with -PCONF=DebugNative - this will compile shaders in
>         Debug, add assertions and debug logs to the backend - and then
>         run your app with D3D12 debug layers and GPU debugging enabled
>         by adding “-Dprsim.d3d12.debugLayers=true
>         -Dprism.d3d12.gpuDebug=true”. Those will slow down the app
>         significantly, but will also tell D3D12 to run additional API
>         use and GPU use checks.
>
>         If the problem happens during a render loop and debug layers
>         catch it, there is a chance it will cascade into other errors
>         and spam the console output - you can tell D3D12 debug layers
>         to trigger an assertion on first encountered error with
>         “-Dprism.d3d12.breakOnError=true”.
>
>         I am running out of time today to check this myself, but if
>         you find something let me know - I’ll try to reproduce the
>         problem myself and we’ll see where we go from there.
>
>         Good luck!
>
>         - Lukasz
>
>         *From:*Christopher Schnick <crschnick at xpipe.io>
>         <mailto:crschnick at xpipe.io>
>         *Sent:* Thursday, 13 November 2025 16:11
>         *To:* Lukasz Kostyra <lukasz.kostyra at oracle.com>
>         <mailto:lukasz.kostyra at oracle.com>
>         *Cc:* openjfx-dev at openjdk.org
>         *Subject:* [External] : Re: JavaFX Direct3D 12 - Second EA release
>
>         I just tried to run a project with provided jmods and at some
>         point, certain nodes are just not rendered anymore and the
>         window contents vanish. But they render for a short period of
>         time.
>
>         There is no exception thrown as far as I can see, so not sure
>         what you need for debugging.
>
>         For testing, this is the built application with the d3d12
>         jmods that you can use to attempt to reproduce the problem:
>         https://we.tl/t-DJuX0BeqXm
>         <https://urldefense.com/v3/__https:/we.tl/t-DJuX0BeqXm__;!!ACWV5N9M2RV99hQ!K0ztYeDtYFyIwxlmMB-9MDuvY7Xyd60-LuJK99hex3mclCWl29MJfnxkz2mmECxINzNr5bAdKvQ64O9Xn7hHbsl_$>
>         . It is built from these sources:
>         https://github.com/xpipe-io/kickstartfx
>         <https://urldefense.com/v3/__https:/github.com/xpipe-io/kickstartfx__;!!ACWV5N9M2RV99hQ!K0ztYeDtYFyIwxlmMB-9MDuvY7Xyd60-LuJK99hex3mclCWl29MJfnxkz2mmECxINzNr5bAdKvQ64O9Xn9_QfENu$>
>
>         On 13/11/2025 14:40, Lukasz Kostyra wrote:
>
>             Hello openjfx-dev,
>
>             The second Early Access(EA) build of JavaFX with the
>             Windows Direct3D 12 rendering pipeline is now available
>             at: https://jdk.java.net/javafxdirect3d12/
>             <https://urldefense.com/v3/__https:/jdk.java.net/javafxdirect3d12/__;!!ACWV5N9M2RV99hQ!K0ztYeDtYFyIwxlmMB-9MDuvY7Xyd60-LuJK99hex3mclCWl29MJfnxkz2mmECxINzNr5bAdKvQ64O9Xnw7Bj6i8$>
>
>             Please test this bundle and share your feedback by:
>
>             - emailing openjfx-dev at openjdk.java.net or
>
>             - reporting issues via JBS[https://bugs.openjdk.org/] or
>             at https://bugreport.java.com
>             <https://urldefense.com/v3/__https:/bugreport.java.com__;!!ACWV5N9M2RV99hQ!K0ztYeDtYFyIwxlmMB-9MDuvY7Xyd60-LuJK99hex3mclCWl29MJfnxkz2mmECxINzNr5bAdKvQ64O9Xn-g1RFIV$>
>
>             This is the second EA release. The backend is
>             feature-complete and went through a first optimization
>             pass, but it still requires some more testing on more
>             hardware variants before we can consider it complete. As
>             such, with this release we also would like to call for
>             help with performance testing the backend (more details on
>             that will be sent in a separate email thread).
>
>             Known issues and pending tasks are captured on JBS and can
>             be accessed using the filter provided on the Direct3D 12
>             EA page [https://jdk.java.net/javafxdirect3d12/
>             <https://urldefense.com/v3/__https:/jdk.java.net/javafxdirect3d12/__;!!ACWV5N9M2RV99hQ!K0ztYeDtYFyIwxlmMB-9MDuvY7Xyd60-LuJK99hex3mclCWl29MJfnxkz2mmECxINzNr5bAdKvQ64O9Xnw7Bj6i8$>].
>             Before reporting a new bug, please review the existing
>             issues to avoid duplicates.
>
>             Important Notes:
>
>             1. This is a Windows-specific feature, so only a
>             Windows-specific bundle is provided.
>
>             2. The default rendering pipeline is set to d3d12. Use
>             "-Dprism.order=d3d" or "-Dprism.order=sw" to select one of
>             the other pipelines for comparison testing.
>
>             3. It is recommended to use JDK 25 or later.
>
>             4. At this stage D3D12 backend is feature-complete and
>             went through the first phase of optimization. It is worth
>             noting that, while generally we noticed performance
>             improvements, it might not be on par with D3D backend on
>             every machine combo  - we already noted performance being
>             worse on recent NVidia discrete GPUs
>             [https://bugs.openjdk.org/browse/JDK-8370486] and are
>             looking for solutions.
>
>             5. Issue behavior may vary across different hardware, so
>             please provide detailed information, such as the output of
>             "java -Dprism.verbose=true" or used hardware, when
>             reporting or discussing issues.
>
>             6. Refer: Run HelloWorld using JavaFX SDK
>             [https://openjfx.io/openjfx-docs/#install-javafx
>             <https://urldefense.com/v3/__https:/openjfx.io/openjfx-docs/*install-javafx__;Iw!!ACWV5N9M2RV99hQ!K0ztYeDtYFyIwxlmMB-9MDuvY7Xyd60-LuJK99hex3mclCWl29MJfnxkz2mmECxINzNr5bAdKvQ64O9Xn8uMZKUY$>]
>
>             We look forward to your feedback.
>
>             Regards,
>
>             Lukasz
>
>             Confidential- Oracle Internal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20251128/6d5ba8a9/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Z3JezITgobjnG2Eg.png
Type: image/png
Size: 18275 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20251128/6d5ba8a9/Z3JezITgobjnG2Eg-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 57114 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20251128/6d5ba8a9/image001-0001.png>


More information about the openjfx-dev mailing list