<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Thanks Florian for the built runtime image.</p>
<p>I ran the tests on my AMD system with a Radeon RX 7600. The
performance on d3d12 seems to be worse, especially the 3DMesh
didn't even display anything and timeouted a few times.</p>
<div class="moz-cite-prefix">On 14/11/2025 20:01, Florian Enner
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAEGLHR8K=QasvyshEQaHYYqETq_0q-na-3drfL-Fvjc9VOFWvg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>Hi Kevin,</div>
<div><br>
</div>
<div>Then would it be ok for external people to provide a link
on the mailing list? </div>
<div><br>
</div>
<div>@Christopher</div>
<div><br>
</div>
<div>This one <a
href="https://drive.google.com/file/d/1BsTiKo0t-u1R50vH2fGTrruaxOC60O7h"
moz-do-not-send="true" class="moz-txt-link-freetext">https://drive.google.com/file/d/1BsTiKo0t-u1R50vH2fGTrruaxOC60O7h</a>
was built with</div>
<div><br>
</div>
<div>%JAVA_HOME%\bin\jlink --module-path
"%JAVA_HOME%\jmods;%JAVAFX_JMODS%" --add-modules
jdk.compiler,javafx.base,javafx.controls,javafx.graphics,jdk.jsobject,javafx.media
--strip-debug --no-header-files --no-man-pages --output
javafx26-d3d-jre-25</div>
<div> </div>
<div>With that it's down to <b>"<unzip-path>\javafx26-d3d-jre-25\bin\java.exe"
--enable-native-access=javafx.graphics -Dprism.order=d3d
RenderPerfTest.java --output-csv -r 3</b></div>
<div><b><br>
</b></div>
<div>-- Florian</div>
<div><br>
</div>
</div>
<br>
<div class="gmail_quote gmail_quote_container">
<div dir="ltr" class="gmail_attr">On Fri, Nov 14, 2025 at
7:16 PM Kevin Rushforth <<a
href="mailto:kevin.rushforth@oracle.com"
moz-do-not-send="true" class="moz-txt-link-freetext">kevin.rushforth@oracle.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div> Because we (Oracle) have very strict rules about
publishing binaries. We are not allowed to publish anything
that hasn't been approved for release, even an experimental
test program.<br>
<br>
-- Kevin<br>
<br>
<br>
<div>On 11/14/2025 10:07 AM, Christopher Schnick wrote:<br>
</div>
<blockquote type="cite">
<p>May I ask why that is not possible?</p>
<div>On 14/11/2025 19:04, Kevin Rushforth wrote:<br>
</div>
<blockquote type="cite"> While that might be easier, it is
not possible for us to provide such a binary.<br>
<br>
We could simplify it a bit by providing instructions to
download the JMODs (rather than the SDK) from <a
href="http://jdk.java.net/direct3d12" target="_blank"
moz-do-not-send="true">jdk.java.net/direct3d12</a> and
use jlink to create a JDK that includes JavaFX. That way
the custom options only need to be added one time to
jlink; running "javac" and "java" would need no options
related to finding the JavaFX modules or enabling native
access.<br>
<br>
-- Kevin<br>
<br>
<br>
<div>On 11/14/2025 9:50 AM, Christopher Schnick wrote:<br>
</div>
<blockquote type="cite">
<p>I will have to check whether I have time to look
into this, but I am wondering if it would be
possible for these tests to require less manual
setup?<br>
<br>
Isn't this where something like jlink could easily
solve all these steps and the user would just have
to run one of multiple launcher scripts of a
prebuilt runtime image? I would argue it would be
faster to just build a jlink image and provide a
download link compared to writing the detailed
instructions so that users run the test exactly as
they should.</p>
<div>On 14/11/2025 15:10, Lukasz Kostyra wrote:<br>
</div>
<blockquote type="cite">
<div>
<p class="MsoNormal"><span lang="PL">Hello all,</span></p>
<p class="MsoNormal"><span lang="PL"> </span></p>
<p class="MsoNormal"><span lang="EN-US">I got
feedback on the previous call for performance
testing email that, instead of using the Bash
test script on Windows (and hoping you have
Cygwin/MINGW installed) it would be easier to
integrate testing and CSV output functionality
into RenderPerfTest. I made those changes and
they are now available on jfx-sandbox
direct3d12 branch (you WON’T find those on
main repo yet): <a
href="https://urldefense.com/v3/__https://github.com/openjdk/jfx-sandbox/tree/direct3d12/tests/performance/animation/RenderPerfTest/src/renderperf__;!!ACWV5N9M2RV99hQ!NmrWBwOSB5NyqKCJx6q9-tF7teG_yDvJ2o7OEusvsVHTtYtUYWFIH_wlix7deQTg_OvqIoRsq-bCyYbUdqGIATP6$"
target="_blank" moz-do-not-send="true">
https://github.com/openjdk/jfx-sandbox/tree/direct3d12/tests/performance/animation/RenderPerfTest/src/renderperf</a><br>
<br>
Any feedback regarding RenderPerfTest will be
updated on that branch automatically, so it’s
indeed a better solution if there’s more
feedback to it :)</span></p>
<p class="MsoNormal"><span lang="EN-US"><br>
<b><u>New steps for running tests:</u></b></span></p>
<ol style="margin-top:0cm" start="1" type="1">
<li style="margin-left:0cm"><span lang="EN-US">Download
RenderPerfTest from above link (has to be
jfx-sandbox repo, direct3d12 branch) - best
to download the entire “renderperf” folder
as ZIP as it contains extra resources needed
for the test app</span></li>
<li style="margin-left:0cm">Get JavaFX Direct3D
12 build - either download the EA2 SDK from [
<a
href="https://urldefense.com/v3/__https://jdk.java.net/javafxdirect3d12/__;!!ACWV5N9M2RV99hQ!NmrWBwOSB5NyqKCJx6q9-tF7teG_yDvJ2o7OEusvsVHTtYtUYWFIH_wlix7deQTg_OvqIoRsq-bCyYbUdqSbhooh$"
target="_blank" moz-do-not-send="true">https://jdk.java.net/javafxdirect3d12/</a>
] or build it from scratch from direct3d12 [ <a
href="https://urldefense.com/v3/__https://github.com/openjdk/jfx-sandbox/tree/direct3d12__;!!ACWV5N9M2RV99hQ!NmrWBwOSB5NyqKCJx6q9-tF7teG_yDvJ2o7OEusvsVHTtYtUYWFIH_wlix7deQTg_OvqIoRsq-bCyYbUdvfpvAcN$"
target="_blank" moz-do-not-send="true">https://github.com/openjdk/jfx-sandbox/tree/direct3d12</a>
] branch (make sure to <b>build with
-PCONF=Release</b>; at the time of writing
this email there is no functional difference
between the sandbox repo and the EA2 build).</li>
<li style="margin-left:0cm">RenderPerf can be
run with <span lang="EN-US">(underlined parts
you need to fill in yourself)</span>:<br>
<b>java --upgrade-module-path="<u><path_to_jfx_sdk>/lib</u>"
--add-modules=javafx.base,javafx.controls,javafx.graphics,jdk.jsobject,javafx.media
--enable-native-access=javafx.graphics
-Dprism.order=<u><backend></u>
renderperf/RenderPerfTest.java --output-csv
-r <u><runs><br>
</u></b><span lang="EN-US">Where:<br>
</span><b><span lang="EN-US">
<path_to_jfx_sdk></span></b> - path
to directory where JavaFX SDK is located (has
to be where JavaFX bin and lib folders <span
lang="EN-US">reside</span>)<br>
<b><span lang="EN-US"> <backend> </span></b>-
short-hand for which Prism backend to use<br>
<span lang="EN-US"> <b><runs></b></span>
- how many times each test case should run<span
lang="EN-US">;</span><span lang="EN-US"> </span><span
lang="EN-US">RenderPerf </span>will average
FPS results from these runs</li>
</ol>
<p> </p>
<ol style="margin-top:0cm" start="4" type="1">
<li style="margin-left:0cm"><span lang="EN-US">Running
RenderPerf like above will produce <b>RenderPerf_results-<backend>-<date>-<time>.csv</b>
in your current directory.</span></li>
</ol>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><b><u><span lang="EN-US">Examples:</span></u></b></p>
<ol style="margin-top:0cm" start="1" type="1">
<li style="margin-left:0cm">For D3D baseline
test, run:<br>
<b>java --upgrade-module-path="<u><path_to_jfx_sdk></u>/lib"
--add-modules=javafx.base,javafx.controls,javafx.graphics,jdk.jsobject,javafx.media,
--enable-native-access=javafx.graphics
-Dprism.order=d3d
renderperf/RenderPerfTest.java --output-csv
-r 3</b><br>
<br>
</li>
<li style="margin-left:0cm">For D3D12 baseline
test, run:<br>
java --upgrade-module-path="<b><u><path_to_jfx_sdk></u></b>/lib"
--add-modules=javafx.base,javafx.controls,javafx.graphics,jdk.jsobject,javafx.media,
--enable-native-access=javafx.graphics
-Dprism.order=d3d12
renderperf/RenderPerfTest.java --output-csv -r
3</li>
</ol>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><b><u><span lang="EN-US">Notes:</span></u></b></p>
<p class="MsoNormal"><span lang="EN-US">* Closing
the test on warm-up stage will stop the test
run early</span></p>
<p class="MsoNormal"><span lang="EN-US">*
Similarly to the test script, RenderPerfTest
defines default object numbers at the
beginning as <b>Map<String, Integer>
defaultObjectCounts </b>which are used for
running all the tests. Similar remarks as to
the test script apply - It would be preferred
to keep these numbers as-is but if needed
(test timeouts loading, or framerate on
baseline D3D run is very low (below 15FPS) )
they can be lowered, as long as they remain
consistent between D3D and D3D12 runs.</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">Thanks
once again for your help!</span></p>
<p class="MsoNormal"><span lang="EN-US">-Lukasz</span></p>
<p class="MsoNormal"> </p>
<div>
<div
style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span
lang="EN-US"> openjfx-dev <a
href="mailto:openjfx-dev-retn@openjdk.org" target="_blank"
moz-do-not-send="true"><openjfx-dev-retn@openjdk.org></a>
<b>On Behalf Of </b>Lukasz Kostyra<br>
<b>Sent:</b> Thursday, 13 November 2025
15:50<br>
<b>To:</b> <a
href="mailto:openjfx-dev@openjdk.org"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">openjfx-dev@openjdk.org</a><br>
<b>Subject:</b> JavaFX Direct3D 12 - Call
for performance testing help</span></p>
</div>
</div>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Hello openjfx-dev,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Because Windows is very open
hardware-wise, it is difficult to prepare the
backend for all possible hardware combinations <span
lang="EN-US">available</span>, especially from
<span lang="EN-US">performance perspective.</span>
To make sure JavaFX performance does not degrade
compared to old D3D backend we would like to
call for volunteers to <span lang="EN-US">help
</span>performance-test the backend. These tests
will let us get a general idea on how the
backend behaves on different hardware and which
areas of the backend to focus on <span
lang="EN-US">while </span>moving forward with
optimization effort for Direct3D 12.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">At this point we tested the
backend quite extensively on Intel-based
integrated GPUs and did some testing on a
machine running a recent discrete N<span
lang="EN-US">v</span>idia GPU. We are
primarily looking for testing <span
lang="EN-US">Direct3D 12 backend <b>on </b></span><b>a
system running an AMD discrete GPU</b>, but
any hardware combinations are welcome - the more
the merrier :). Also note that these tests <b>require
a Windows machine</b>, as D3D12 backend is
Windows-only.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span lang="EN-US">We run
performance testing using RenderPerfTest
JavaFX app</span> located in the JavaFX
repository under
"tests/performance/animation/RenderPerfTest". <span
lang="EN-US">I wrote a bash script to use with
this app for performance-testing the backend</span>.
The script will run all available demos on
RenderPerfTest with a set amount of objects per
test, average the FPS results from each <span
lang="EN-US">run </span>and output the
results into a CSV file.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><b><u>How to run perf tests:</u></b></p>
<ol style="margin-top:0cm" start="1" type="1">
<li style="margin-left:0cm"><span lang="EN-US">Download
the test script - <a
href="https://urldefense.com/v3/__https://gist.github.com/lukostyra/bc354a5fd845b82805ffb3380caebe9a__;!!ACWV5N9M2RV99hQ!NmrWBwOSB5NyqKCJx6q9-tF7teG_yDvJ2o7OEusvsVHTtYtUYWFIH_wlix7deQTg_OvqIoRsq-bCyYbUdirf_tui$"
target="_blank" moz-do-not-send="true">https://gist.github.com/lukostyra/bc354a5fd845b82805ffb3380caebe9a</a></span></li>
<li style="margin-left:0cm">Get JavaFX Direct3D
12 build - either download the EA2 SDK from [
<a
href="https://urldefense.com/v3/__https://jdk.java.net/javafxdirect3d12/__;!!ACWV5N9M2RV99hQ!NmrWBwOSB5NyqKCJx6q9-tF7teG_yDvJ2o7OEusvsVHTtYtUYWFIH_wlix7deQTg_OvqIoRsq-bCyYbUdqSbhooh$"
target="_blank" moz-do-not-send="true">https://jdk.java.net/javafxdirect3d12/</a>
] or build it from scratch from direct3d12 [ <a
href="https://urldefense.com/v3/__https://github.com/openjdk/jfx-sandbox/tree/direct3d12__;!!ACWV5N9M2RV99hQ!NmrWBwOSB5NyqKCJx6q9-tF7teG_yDvJ2o7OEusvsVHTtYtUYWFIH_wlix7deQTg_OvqIoRsq-bCyYbUdvfpvAcN$"
target="_blank" moz-do-not-send="true">https://github.com/openjdk/jfx-sandbox/tree/direct3d12</a>
] branch (make sure to <b>build with
-PCONF=Release</b>; at the time of writing
this email there is no functional difference
between the sandbox repo and the EA2 build).</li>
<li style="margin-left:0cm">Put the script in
the same directory as <b>renderperf/RenderPerfTest.java</b>
<span lang="EN-US">- </span>I usually <span
lang="EN-US"> copy </span>the contents of
tests/performance/animation/RenderPerfTest/src
into a separate directory where the script is
located.<span lang="EN-US"> The script will
look in the current directory specifically
for </span>"<b><span lang="EN-US">renderperf</span></b>"<span
lang="EN-US"> directory containing a </span>"<b><span
lang="EN-US">RenderPerfTest.java</span></b>"<span
lang="EN-US"> source file.</span></li>
<li style="margin-left:0cm">Ensure nothing else
is running on your system.</li>
<li style="margin-left:0cm">Perform a baseline
test run with D3D backend:<br>
<span lang="EN-US"> </span><b>./run_renderperf_all.sh
-j <path_to_jfx_sdk> -b d3d -r 3<br>
</b><span lang="EN-US">When the script is
done, t</span>his should result in "<b>RenderPerf_results_d3d-<date>-<time>.csv</b>"
file. This will let us establish how your
machine performs on <span lang="EN-US">RenderPerf’s
</span>test cases on the old D3D backend.</li>
<li style="margin-left:0cm">Perform a perf test
run for D3D12 backend:<br>
<span lang="EN-US"> </span><b>./run_renderperf_all.sh
-j <path_to_jfx_sdk> -b d3d12 -r 3<br>
</b>This should result in "<b>RenderPerf_results_d3d12-<date>-<time>.csv</b>"
file. <span lang="EN-US">The results </span>will
be used as a comparison<span lang="EN-US"> to
D3D backend</span>.</li>
</ol>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span lang="EN-US">Once you
are done, r</span>eply to this email thread
with details what hardware you ran the tests on
and with <span lang="EN-US">contents of </span>both
CSV file<span lang="EN-US">s specifying which
came from which test run - I’m pretty sure <b>attachments
will be stripped when sending an email to
the mailing list</b>, so to make sure the
results get to us you should paste them inline</span>.
Also, include the console output of running any
JavaFX app on D3D12 backend with
"-Dprism.verbose=true".</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Note that these tests will
run for quite a bit of time. Each test case's
single run will take 15 seconds - 5 seconds of
warm-u<span lang="EN-US">p</span> and 10 seconds
of actual test run where FPS is measured.
Testing every single case, 3 runs each, for a
single backend takes approximately 40 minutes -
ensure your computer won't lock or turn off the
screens during that process.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><b><u>Test script reference:</u></b></p>
<p class="MsoNormal"> <b>./run_renderperf_all.sh
-j/--jfx </b><b><span lang="EN-US"><</span>path_to_jfx_sdk>
[-b/--backend <backend>] [-r/--runs
<runs>]</b></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Where:</p>
<p class="MsoNormal"> <b>-j, --jfx </b> -
required; path to directory where JavaFX SDK is
located (has to be where JavaFX bin and lib
folders are located)</p>
<p class="MsoNormal"> <b>-b, --backend</b> -
optional, defaults to "d3d12"; short-hand for
which Prism backend to use. Whatever is set here
will be forwarded to "-Dprism.order" property.</p>
<p class="MsoNormal"> <b>-r, --runs</b> -
optional, defaults to 3; how many times each
test case should run. Script will average FPS
results from these runs.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Notes:</p>
<p class="MsoNormal"> * Closing <span
lang="EN-US">currently running test during the</span>
warm-up stage (first 5 seconds since starting
the execution of the test case) should stop the
test script earl<span lang="EN-US">y</span>.</p>
<p class="MsoNormal"> * Script starts by
declaring an array of test cases and object
counts to run. We recommend leaving those as
they are, however if there are tests which do
not load because of <span lang="EN-US">a </span>"Timeout"<span
lang="EN-US"> message</span><span lang="EN-US">
</span>(the script will then exit early) <span
lang="EN-US">or perform significantly worse on
D3D backend (below 20 FPS) </span>you <span
lang="EN-US">can </span>lower the object
count and retry.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span lang="EN-US">Let me
know if you have any problems with running the
tests. And, in advance, thanks for your help!</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Regards,</p>
<p class="MsoNormal">Lukasz</p>
</div>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
</body>
</html>