<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    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 class="moz-cite-prefix">On 11/14/2025 10:07 AM, Christopher
      Schnick wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:c7ec36ec-2669-40ec-9a00-e944eb4b194c@xpipe.io">
      
      <p>May I ask why that is not possible?</p>
      <div class="moz-cite-prefix">On 14/11/2025 19:04, Kevin Rushforth
        wrote:<br>
      </div>
      <blockquote type="cite" cite="mid:eaddb4ba-ea67-49e3-9384-7f1ff4e24085@oracle.com">
        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 jdk.java.net/direct3d12 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 class="moz-cite-prefix">On 11/14/2025 9:50 AM, Christopher
          Schnick wrote:<br>
        </div>
        <blockquote type="cite" cite="mid:953ef489-27df-435b-993f-4a345643aa38@xpipe.io">
          <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 class="moz-cite-prefix">On 14/11/2025 15:10, Lukasz
            Kostyra wrote:<br>
          </div>
          <blockquote type="cite" cite="mid:IA3PR10MB8682E5772DA242391EE8DC8FFECAA@IA3PR10MB8682.namprd10.prod.outlook.com">
            <meta name="Generator" content="Microsoft Word 15 (filtered medium)">
            <style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;
        mso-fareast-language:EN-US;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;
        mso-fareast-language:EN-US;}span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}div.WordSection1
        {page:WordSection1;}ol
        {margin-bottom:0cm;}ul
        {margin-bottom:0cm;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
            <div class="WordSection1">
              <p class="MsoNormal"><span lang="PL">Hello all,<o:p></o:p></span></p>
              <p class="MsoNormal"><span lang="PL"><o:p> </o:p></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$" moz-do-not-send="true" class="moz-txt-link-freetext">
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 :)<o:p></o:p></span></p>
              <p class="MsoNormal"><span lang="EN-US"><br>
                  <b><u>New steps for running tests:<o:p></o:p></u></b></span></p>
              <ol style="margin-top:0cm" start="1" type="1">
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l4 level1 lfo5"><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<o:p></o:p></span></li>
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l4 level1 lfo5">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$" moz-do-not-send="true" class="moz-txt-link-freetext">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$" moz-do-not-send="true" class="moz-txt-link-freetext">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).<o:p></o:p></li>
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l4 level1 lfo5">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<o:p></o:p></li>
              </ol>
              <p class="MsoListParagraph"><o:p> </o:p></p>
              <ol style="margin-top:0cm" start="4" type="1">
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l4 level1 lfo5"><span lang="EN-US">Running RenderPerf like above will
                    produce <b>RenderPerf_results-<backend>-<date>-<time>.csv</b>
                    in your current directory.</span><o:p></o:p></li>
              </ol>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal"><b><u><span lang="EN-US">Examples:<o:p></o:p></span></u></b></p>
              <ol style="margin-top:0cm" start="1" type="1">
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l1 level1 lfo7">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>
                  <o:p></o:p></li>
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l1 level1 lfo7">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<o:p></o:p></li>
              </ol>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal"><b><u><span lang="EN-US">Notes:<o:p></o:p></span></u></b></p>
              <p class="MsoNormal"><span lang="EN-US">* Closing the test
                  on warm-up stage will stop the test run early<o:p></o:p></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.<o:p></o:p></span></p>
              <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
              <p class="MsoNormal"><span lang="EN-US">Thanks once again
                  for your help!<o:p></o:p></span></p>
              <p class="MsoNormal"><span lang="EN-US">-Lukasz<o:p></o:p></span></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <div>
                <div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
                  <p class="MsoNormal"><b><span lang="EN-US" style="mso-ligatures:none;mso-fareast-language:#0C00">From:</span></b><span lang="EN-US" style="mso-ligatures:none;mso-fareast-language:#0C00"> openjfx-dev <a class="moz-txt-link-rfc2396E" href="mailto:openjfx-dev-retn@openjdk.org" 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 class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:openjfx-dev@openjdk.org" moz-do-not-send="true">openjfx-dev@openjdk.org</a><br>
                      <b>Subject:</b> JavaFX Direct3D 12 - Call for
                      performance testing help<o:p></o:p></span></p>
                </div>
              </div>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal">Hello openjfx-dev,<o:p></o:p></p>
              <p class="MsoNormal"><o:p> </o:p></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.<o:p></o:p></p>
              <p class="MsoNormal"><o:p> </o:p></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.<o:p></o:p></p>
              <p class="MsoNormal"><o:p> </o:p></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.<o:p></o:p></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal"><b><u>How to run perf tests:<o:p></o:p></u></b></p>
              <ol style="margin-top:0cm" start="1" type="1">
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo6"><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$" moz-do-not-send="true" class="moz-txt-link-freetext">https://gist.github.com/lukostyra/bc354a5fd845b82805ffb3380caebe9a</a><o:p></o:p></span></li>
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo6">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$" moz-do-not-send="true" class="moz-txt-link-freetext">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$" moz-do-not-send="true" class="moz-txt-link-freetext">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).<o:p></o:p></li>
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo6">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.<o:p></o:p></span></li>
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo6">Ensure
                  nothing else is running on your system.<o:p></o:p></li>
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo6">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.<o:p></o:p></li>
                <li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo6">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>.<o:p></o:p></li>
              </ol>
              <p class="MsoNormal"><o:p> </o:p></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".<o:p></o:p></p>
              <p class="MsoNormal"><o:p> </o:p></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.<o:p></o:p></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal"><b><u>Test script reference:<o:p></o:p></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>]<o:p></o:p></b></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal">Where:<o:p></o:p></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)<o:p></o:p></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.<o:p></o:p></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.<o:p></o:p></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal">Notes:<o:p></o:p></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>.<o:p></o:p></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.<o:p></o:p></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal"><o:p> </o:p></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!<o:p></o:p></span></p>
              <p class="MsoNormal"><o:p> </o:p></p>
              <p class="MsoNormal">Regards,<o:p></o:p></p>
              <p class="MsoNormal">Lukasz<o:p></o:p></p>
            </div>
          </blockquote>
        </blockquote>
        <br>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>