<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <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">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      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://github.com/openjdk/jfx-sandbox/tree/direct3d12/tests/performance/animation/RenderPerfTest/src/renderperf"
                  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://jdk.java.net/javafxdirect3d12/"
                  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://github.com/openjdk/jfx-sandbox/tree/direct3d12"
                  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://gist.github.com/lukostyra/bc354a5fd845b82805ffb3380caebe9a"
                    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://jdk.java.net/javafxdirect3d12/"
                  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://github.com/openjdk/jfx-sandbox/tree/direct3d12"
                  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>
  </body>
</html>