<!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>