[External] : Re: JavaFX Direct3D 12 - Second EA release

Christopher Schnick crschnick at xpipe.io
Mon Feb 2 15:13:41 UTC 2026


Yes, the corruption issues are fixed with that property

On 02/02/2026 16:09, Lukasz Kostyra wrote:
>
> Uh, let me finish that email - a random Windows popup appeared while 
> typing which caused my mail client lose focus and interpret typing as 
> shortcuts…
>
> Anyway, I also see the popup windows have this glitch. I will take a 
> closer look at them soon.
>
> As for your other corruption issues, can you check with 
> -Dprism.d3d12.clearOpts=false ? I have a strong suspicion that 
> optimization would be the one to blame again - I was planning to 
> rework it a bit more soon anyway, so it might be a good test candidate 
> for that.
>
> -Lukasz
>
> *From:*openjfx-dev <openjfx-dev-retn at openjdk.org> *On Behalf Of 
> *Lukasz Kostyra
> *Sent:* Monday, 2 February 2026 16:06
> *To:* Christopher Schnick <crschnick at xpipe.io>
> *Cc:* OpenJFX <openjfx-dev at openjdk.org>
> *Subject:* RE: [External] : Re: JavaFX Direct3D 12 - Second EA release
>
> Thanks for checking.
>
> I also see the popup windows in MonkeyTester have this glitch, but on 
> my machine it only happens once. R
>
> *From:*Christopher Schnick <crschnick at xpipe.io>
> *Sent:* Monday, 2 February 2026 16:00
> *To:* Lukasz Kostyra <lukasz.kostyra at oracle.com>
> *Cc:* OpenJFX <openjfx-dev at openjdk.org>
> *Subject:* [External] : Re: JavaFX Direct3D 12 - Second EA release
>
> Looks good, the font looks correct now.
>
> I went through most of the application to see if there's anything 
> else. In the MonkeyTester page, I found this issue with popup windows 
> in the menu bar and shadows I guess? In the d3d9 build, this does not 
> occur. Video is attached.
>
> If you get around to reviewing 
> https://github.com/openjdk/jfx/pull/2058 
> <https://urldefense.com/v3/__https:/github.com/openjdk/jfx/pull/2058__;!!ACWV5N9M2RV99hQ!J3KNuGQU-sZ0xyclRGtrUi12g5JK3IX5bWVDFjedmOKvrKaCdDd1yMemreDAQpIgwP1g8kVm5k7g_uGdXfZsrqcq$>, 
> you can use the same testing system to also run kickstartfx with d3d12 
> as that is also broken in various ways on there.
>
> With our main application, I am getting render corruption issues as 
> shown in the video. I can also give instructions on how to run that 
> application, it is very similar to kickstartfx. Just needs a bit more 
> setup.
>
> Other than that, as mentioned by Martin I think, the translucent 
> background fill for the UNIFIED stage style does not show correctly in 
> kickstartfx if you compare it to the normal build. The left sidebar 
> frame should have the proper window theme color when the performance 
> mode is disabled, however it is only white or black, depending on the 
> system theme:
>
> On 02/02/2026 12:36, Lukasz Kostyra wrote:
>
>     This should be the final attempt at resolving this topic once and
>     for all :)
>
>     I pushed
>     https://github.com/openjdk/jfx-sandbox/commit/dcaf8879db2b660e547e21edf31a1c8421aeab34
>     <https://urldefense.com/v3/__https:/github.com/openjdk/jfx-sandbox/commit/dcaf8879db2b660e547e21edf31a1c8421aeab34__;!!ACWV5N9M2RV99hQ!J3KNuGQU-sZ0xyclRGtrUi12g5JK3IX5bWVDFjedmOKvrKaCdDd1yMemreDAQpIgwP1g8kVm5k7g_uGdXdE2KA0-$>
>     just now which in my testing makes KickstartFX work properly even
>     on UploadingPainter. After quite a bit of testing and scrolling it
>     seems to me the corrupted font issues are now resolved. Please
>     give it a go and let me know if it works on your end.
>
>     -Lukasz
>
>     *From:*openjfx-dev <openjfx-dev-retn at openjdk.org>
>     <mailto:openjfx-dev-retn at openjdk.org> *On Behalf Of *Lukasz Kostyra
>     *Sent:* Thursday, 29 January 2026 14:38
>     *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
>
>     Indeed it is still there, although on my machine it happens less
>     with Presenting Painter. I tried it a couple of times before
>     sending the email and it worked fine, so seems like I should also
>     go buy a lottery ticket today…
>
>     Well, good news to me is that this happens on PresentingPainter,
>     so I now have some more possibilities in terms of debugging it
>     in-place. I’ll get back to you when it’s fixed.
>
>     -Lukasz
>
>     *From:*Christopher Schnick <crschnick at xpipe.io>
>     *Sent:* Thursday, 29 January 2026 13:31
>     *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 commented out the uploading painter line and still see the same
>     issue. As you say, it shouldn't make a difference. Maybe you hit
>     the one time where the issue just didn't occur statistically speaking?
>
>     The good news is that
>     https://bugs.openjdk.org/browse/JDK-8154847 should be finally
>     fixed by the new translucent backdrop PR, so it shouldn't need
>     this property anymore in the future when it is merged.
>
>     On 29/01/2026 12:02, Lukasz Kostyra wrote:
>
>         I looked through KickstartFX and I noticed there’s a point
>         where KickstartFX forces the use of Uploading Painter -
>         PlatformState.java @ 112. UploadingPainter was designed to
>         work with software pipeline as a fallback mechanism (SW does
>         not have the SwapChain/Presentation mechanisms that HW
>         pipelines use) so using it with hardware-accelerated pipelines
>         is not officially supported. When I set
>         prism.forceUploadingPainter to false text and buttons rendered
>         correctly with D3D12 on my machine. Could you check if
>         everything works fine on your end with UploadingPainter disabled?
>
>         That being said, I do agree there should technically be no
>         visual difference between PresentingPainter and
>         UploadingPainter. I have some theories as to why that would be
>         the case, but because UploadingPainter with hardware pipelines
>         is not officially supported I’ll have to push this issue
>         towards a later point in time. UploadingPainter makes this a
>         bit extra difficult to debug because graphics debuggers rely
>         on applications calling Present() to determine when the
>         application progresses to the next frame - with
>         UploadingPainter no Present() is called and debuggers can’t
>         capture the frame properly for analysis.
>
>         As for Hyper-V problems - I didn’t get a chance to test these
>         yet but we also did not try running JavaFX with D3D12 backend
>         on virtualized platforms. I will take a look at that use case
>         also at a later point in time, once the performance
>         improvements are completed.
>
>         For both of these (UploadingPainter issues and Hyper-V issues)
>         I’ll add separate bugs to my backlog and tackle them later
>         down the line.
>
>         I also checked why UploadingPainter was preferred in
>         KickstartFX and this seems to be the issue -
>         https://bugs.openjdk.org/browse/JDK-8154847. If what Martin
>         mentioned in comment history is correct, there’s a possibility
>         that with D3D12 there should be no transparency issues, as
>         D3D12 defaults to alpha-supported SwapChain buffer (BGRX
>         format exists but presents some technical issues and
>         limitations, BGRA is more convenient). However I had no way of
>         verifying this theory, on my Intel Iris Xe laptop the
>         reproducer works as expected on both D3D and D3D12, with or
>         without UploadingPainter.
>
>         Let me know if KickstartFX runs properly with PresentingPainter.
>
>         -Lukasz
>
>         *From:*Christopher Schnick <crschnick at xpipe.io>
>         <mailto:crschnick at xpipe.io>
>         *Sent:* Wednesday, 21 January 2026 13:54
>         *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
>
>         Alright, that is good to know. I also ran the d3d12 build in a
>         Hyper-V Windows 11 VM, which are known to cause issues. For
>         example, this issue happens in those VMs with
>         StageStyle.UNIFIED:
>         https://bugs.openjdk.org/browse/JDK-8154847 (kickstartfx uses
>         the unified stage style unless you turn on performance mode in
>         the settings menu)
>
>         On that system, the app sometimes froze completely, sometimes,
>         the rendered image got stuck. Changing the performance mode
>         setting and the property -Dprism.forceUploadingPainter=true
>         changed the behavior, but it was broken in some way in all
>         configurations.
>
>         You should be able to reproduce these issues easily with the
>         Windows Sandbox feature:
>         https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-install
>         <https://urldefense.com/v3/__https:/learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-install__;!!ACWV5N9M2RV99hQ!PhZXH7yVYtau5GffJqYZ2u0kJWnvdfqwZ505JNps6FUDmkZT1cTaY28P1sUyr3UvO_oLMcT6UkYRK3KwB9dOzqRg$>
>
>         On 21/01/2026 13:48, Lukasz Kostyra wrote:
>
>             Thanks for checking.
>
>             I ran the KickstartFX build one more time, it failed but I
>             found some leftover global gradle.properties file which
>             defined older JDK which broke the build. Changing JDK to
>             25.0.1 everything built and works fine.
>
>             I also found a way to build KickstartFX using custom JFX
>             (customJavaFxLibsPath in build.gradle) and can reproduce
>             your font issues locally on D3D12. I’ll report back when I
>             solve them on my end. :)
>
>             -Lukasz
>
>             *From:*Christopher Schnick <crschnick at xpipe.io>
>             <mailto:crschnick at xpipe.io>
>             *Sent:* Tuesday, 20 January 2026 16:24
>             *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
>
>             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
>                 <https://urldefense.com/v3/__https:/github.com/openjdk/jfx-sandbox/commit/8d3ec1deff714caa4eab779581a341e18dd78f31__;!!ACWV5N9M2RV99hQ!Js1REsWcDjMJTtd7_06jSspPNfrXAhmcztgQtVr7IH0e7xUQW51OhBZ-P9O6TfdB0v6e7Brk7yYlHI7mq363A1sg$>
>                 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>
>                 <mailto: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>
>                 <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
>
>                 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/20260202/983e3230/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 26376 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20260202/983e3230/image001-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.png
Type: image/png
Size: 18275 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20260202/983e3230/image002-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image003.png
Type: image/png
Size: 57114 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20260202/983e3230/image003-0001.png>


More information about the openjfx-dev mailing list