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 <[email protected]> *On Behalf Of
*Lukasz Kostyra
*Sent:* Monday, 17 November 2025 15:14
*To:* Christopher Schnick <[email protected]>
*Cc:* OpenJFX <[email protected]>
*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 <[email protected]>
*Sent:* Saturday, 15 November 2025 17:39
*To:* Lukasz Kostyra <[email protected]>
*Cc:* OpenJFX <[email protected]>
*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 <[email protected]>
<mailto:[email protected]>
*Sent:* Thursday, 13 November 2025 16:11
*To:* Lukasz Kostyra <[email protected]>
<mailto:[email protected]>
*Cc:* [email protected]
*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 [email protected] 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