<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@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;}
/* Style Definitions */
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.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:none;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1369916593;
        mso-list-type:hybrid;
        mso-list-template-ids:-549675328 201326607 201326617 201326619 201326607 201326617 201326619 201326607 201326617 201326619;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1393190313;
        mso-list-type:hybrid;
        mso-list-template-ids:-331740376 201326607 201326617 201326619 201326607 201326617 201326619 201326607 201326617 201326619;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
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]-->
</head>
<body lang="en-NL" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<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:l1 level1 lfo2"><span lang="EN-US">Download the test script -
<a href="https://gist.github.com/lukostyra/bc354a5fd845b82805ffb3380caebe9a">https://gist.github.com/lukostyra/bc354a5fd845b82805ffb3380caebe9a</a><o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l1 level1 lfo2">Get JavaFX Direct3D 12 build - either download the EA2 SDK from [
<a href="https://jdk.java.net/javafxdirect3d12/">https://jdk.java.net/javafxdirect3d12/</a> ] or build it from scratch from direct3d12 [
<a href="https://github.com/openjdk/jfx-sandbox/tree/direct3d12">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:l1 level1 lfo2">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:l1 level1 lfo2">Ensure nothing else is running on your system.<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l1 level1 lfo2">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:l1 level1 lfo2">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> (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>
</body>
</html>