<div dir="ltr"><div><div><span style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px">I'm porting to [qxl-wddm-dod] set of flexvdi changes</span><br></div></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">related to execution of '</span><span style="font-size:12pt">present display only' events</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">in separate thread. There are 2<b> questions below</b> I'd like to ask and k</span><span style="font-size:12pt">now your opinion.</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt"><br></span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">I see there 2 aspects:</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">- reliability</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">- performance</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><br></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt"></span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt"><u>Reliability:</u></span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">I see in flexvdi mailing list existing report of</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">BSOD upon system shutdown. Possible cause is lack of</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">synchronization between system flows, hardware availability and worker thread state </span><span style="font-size:12pt">(last patch in flexvdi 'Terminate working thread on exit' </span><span style="font-size:12pt">introduces termination procedure but nobody calls it, </span><span style="font-size:12pt">as I can see)</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">The lack of synchronization may cause also races in</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">power</span><span style="font-size:12pt"> management flows and (possible) on changing</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">operating mode.</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt"><br></span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><strong><span style="font-size:12pt">Question 1:</span></strong></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><strong><span style="font-size:12pt">Do you have some additional recommendation which</span></strong></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><strong><span style="font-size:12pt">flows shall be specially checked for races with</span></strong></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><strong><span style="font-size:12pt">rendering thread?</span></strong></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><br></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt"><u>Performance:</u></span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt"></span><span style="font-size:12pt">It looks like </span>the change should not affect total CPU consumption for</div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px">the rendering, it splits more or less the same operations over</div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px">2 different threads. <span style="font-size:12pt">It is still possible that the </span><span style="font-size:12pt">change can improve</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">common user experience </span><span style="font-size:12pt">due to </span><span style="font-size:12pt">faster indication of operation completion to </span><span style="font-size:12pt">the OS.</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><strong><span style="font-size:12pt"><br></span></strong></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><strong><span style="font-size:12pt">Question 2:</span></strong></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><strong><span style="font-size:12pt">Do you have some ideas how to make quantitive</span></strong></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><strong><span style="font-size:12pt">evaluation of this possible </span></strong><strong style="font-size:12pt"><span style="font-size:12pt">improvement of user experience? </span></strong></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt"><br></span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">I think about: </span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">- finding scenarios when we receive </span><span style="font-size:12pt">rendering calls (PresentDisplayOnly) when the worker </span><span style="font-size:12pt">thread is still processing previous operation. If they exist this can mean that some bottleneck solved in GDI.</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">- writing or getting tool that loads the graphics</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">adapter by heavy operations (like continuos moving of window / scrolling etc) with CPU consumption measurement</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><br></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><br></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt">Please share your thoughts.</span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><span style="font-size:12pt"><br></span></div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px">Thanks,</div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px">Yuri</div><div style="color:rgb(0,0,0);font-family:"courier new",courier,monaco,monospace,sans-serif;font-size:16px"><br></div></div>