<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <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 http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <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"><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" href="mailto:openjfx-dev@openjdk.org">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>
  </body>
</html>