JavaFX Direct3D 12 - Second EA release

Christopher Schnick crschnick at xpipe.io
Tue Jan 20 15:24:25 UTC 2026


In our main application I am getting the following error spammed in the 
logs:

16:18:08:571 - error: java.lang.NullPointerException: Cannot invoke 
"com.sun.prism.Texture.getPixelFormat()" because "tex" is null
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.prism.impl.BaseGraphics.drawTexture(BaseGraphics.java:464)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.prism.impl.ps.BaseShaderGraphics.drawTexture(BaseShaderGraphics.java:159)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGImageView.renderContent(NGImageView.java:123)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGImageView.doRender(NGImageView.java:103)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:571 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.renderForClip(NGNode.java:2279)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.renderRectClip(NGNode.java:2186)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.renderClip(NGNode.java:2213)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.CacheFilter.renderNodeToCache(CacheFilter.java:682)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.CacheFilter.render(CacheFilter.java:586)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.renderCached(NGNode.java:2343)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2054)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.renderForClip(NGNode.java:2279)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.renderRectClip(NGNode.java:2186)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.renderClip(NGNode.java:2213)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.CacheFilter.renderNodeToCache(CacheFilter.java:682)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.CacheFilter.render(CacheFilter.java:586)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.renderCached(NGNode.java:2343)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2054)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:481)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:329)
16:18:08:572 - error:     at 
javafx.graphics at 26-internal/com.sun.javafx.tk.quantum.UploadingPainter.run(UploadingPainter.java:143)
16:18:08:572 - error:     at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
16:18:08:572 - error:     at 
java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:369)
16:18:08:572 - error:     at 
java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java)

In kickstartfx, I still get the font rendering issues. Can you share the 
problems you encountered? I tried to build it on a blank VM with git 
clone, setting a JDK25 in the PATH, and running gradlew.bat run without 
issues.

On 20/01/2026 15:40, Lukasz Kostyra wrote:
>
> Hi Christopher,
>
> After Christmas break I came back to this issue with some new patches. 
> There were some problems I found with the clear optimization, I just 
> submitted 
> https://github.com/openjdk/jfx-sandbox/commit/8d3ec1deff714caa4eab779581a341e18dd78f31 
> and according to my local testing everything seems to be fine now.
>
> When you have a moment, could you check out the changes above and let 
> me know if everything works correctly in your app?
>
> If there are still problems I would like to find a way to build your 
> app and test it locally. I tried doing that earlier via 
> https://github.com/xpipe-io/kickstartfx 
> <https://urldefense.com/v3/__https:/github.com/xpipe-io/kickstartfx__;!!ACWV5N9M2RV99hQ!K0ztYeDtYFyIwxlmMB-9MDuvY7Xyd60-LuJK99hex3mclCWl29MJfnxkz2mmECxINzNr5bAdKvQ64O9Xn9_QfENu$> 
> you linked earlier but encountered some problems when building, so I’m 
> going to need your help or some instructions on how to build the app.
>
> Regards,
>
> -Lukasz
>
> *From:*openjfx-dev <openjfx-dev-retn at openjdk.org> *On Behalf Of 
> *Lukasz Kostyra
> *Sent:* Wednesday, 10 December 2025 13:29
> *To:* Christopher Schnick <crschnick at xpipe.io>
> *Cc:* OpenJFX <openjfx-dev at openjdk.org>
> *Subject:* RE: Re: JavaFX Direct3D 12 - Second EA release
>
> It should work fine without the property. Thanks for your help, I’ll 
> keep searching.
>
> -Lukasz
>
> *From:*Christopher Schnick <crschnick at xpipe.io>
> *Sent:* Tuesday, 9 December 2025 17:10
> *To:* Lukasz Kostyra <lukasz.kostyra at oracle.com>
> *Cc:* OpenJFX <openjfx-dev at openjdk.org>
> *Subject:* [External] : Re: JavaFX Direct3D 12 - Second EA release
>
> I tried this commit, but the problem shows up again. I tested the 
> previous commit with the passed property again, and that one still works.
>
> Or should I still pass the property in this commit as well?
>
> On 09/12/2025 4:36 PM, Lukasz Kostyra wrote:
>
>     Hi Christopher,
>
>     I updated the direct3d12 branch with the fix -
>     https://github.com/openjdk/jfx-sandbox/commit/ffc078b9593c44a8ed0629a74b8bda18357f93a8
>     <https://urldefense.com/v3/__https:/github.com/openjdk/jfx-sandbox/commit/ffc078b9593c44a8ed0629a74b8bda18357f93a8__;!!ACWV5N9M2RV99hQ!OLgt8HGQc2SZQqycgcFI2bUPgQXEdES6FZw0Gn_bo_kiS2WoY4A68Z3JxY-ElC_58HSF12FXKCoat4MrrESK9ceD$>
>     . Let me know how it works and if the problem has been resolved.
>
>     Thanks,
>
>     -Lukasz
>
>     *From:*openjfx-dev <openjfx-dev-retn at openjdk.org>
>     <mailto:openjfx-dev-retn at openjdk.org> *On Behalf Of *Lukasz Kostyra
>     *Sent:* Thursday, 4 December 2025 11:52
>     *To:* Christopher Schnick <crschnick at xpipe.io>
>     <mailto:crschnick at xpipe.io>
>     *Cc:* OpenJFX <openjfx-dev at openjdk.org>
>     <mailto:openjfx-dev at openjdk.org>
>     *Subject:* RE: Re: JavaFX Direct3D 12 - Second EA release
>
>     Thanks for checking. I filed
>     https://bugs.openjdk.org/browse/JDK-8373088 to track this since
>     this is unrelated to specifically text, will probably get to it in
>     a few days.
>
>     -Lukasz
>
>     *From:*Christopher Schnick <crschnick at xpipe.io>
>     *Sent:* Wednesday, 3 December 2025 18:53
>     *To:* Lukasz Kostyra <lukasz.kostyra at oracle.com>
>     *Cc:* OpenJFX <openjfx-dev at openjdk.org>
>     *Subject:* [External] : Re: JavaFX Direct3D 12 - Second EA release
>
>     This commit fixes the problem when the property is set to false
>     and it shows up again if the property is not set to false
>
>     On 03/12/2025 5:54 PM, Lukasz Kostyra wrote:
>
>         Hi Christopher,
>
>         I did not find the way to reproduce this locally, but I found
>         a problem with one of the optimizations that is in the
>         backend. To double check if that is in fact the issue I pushed
>         https://github.com/openjdk/jfx-sandbox/commit/7078d621dc282ab8439800b84b78377dec3eea89
>         <https://urldefense.com/v3/__https:/github.com/openjdk/jfx-sandbox/commit/7078d621dc282ab8439800b84b78377dec3eea89__;!!ACWV5N9M2RV99hQ!JFEGrvRPb5-P9TxSZen0sbWuRq_Go_lMwM3kO5m0u_RlMgJW1cDfe8HxdAlgEedAsg4aSm99IyDYzbsN8x-LMbPQ$>
>         to disable the optimization (it is on by default, disabling it
>         fixes that specific problem on my end) and I’d like to
>         double-check if this is the correct lead.
>
>         When you have a moment, could you build JFX with that change
>         and run your app with “-Dprism.d3d12.clearOpts=false” added to
>         the command line?
>
>         If the problem persists with prism.d3d12.clearOpts set to
>         false I would need some more information on how these labels
>         are rendered to track this down.
>
>         Thanks,
>
>         -Lukasz
>
>         *From:*Christopher Schnick <crschnick at xpipe.io>
>         <mailto:crschnick at xpipe.io>
>         *Sent:* Friday, 28 November 2025 13:25
>         *To:* Lukasz Kostyra <lukasz.kostyra at oracle.com>
>         <mailto:lukasz.kostyra at oracle.com>
>         *Cc:* OpenJFX <openjfx-dev at openjdk.org>
>         <mailto:openjfx-dev at openjdk.org>
>         *Subject:* [External] : Re: JavaFX Direct3D 12 - Second EA release
>
>         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
>             <https://urldefense.com/v3/__https:/github.com/openjdk/jfx-sandbox/tree/direct3d12__;!!ACWV5N9M2RV99hQ!KuiGt3yDg1iNtCswOA3yLUbPKFpTnRKQE9clxnsd6xQRhnGJLoz7c697JC77xG2Q4qwsMWDePar6hRx9DY1uTPpy$>
>             . 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>
>             <mailto: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>
>             <mailto:crschnick at xpipe.io>
>             *Cc:* OpenJFX <openjfx-dev at openjdk.org>
>             <mailto: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/20260120/639e9524/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 18275 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20260120/639e9524/image001-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.png
Type: image/png
Size: 57114 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20260120/639e9524/image002-0001.png>


More information about the openjfx-dev mailing list