<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 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></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-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">This is somewhat easier to support on windows since windows has the concept of a fullscreen exclusive mode in the OS.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Alex<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> amd-gfx [mailto:amd-gfx-bounces@lists.freedesktop.org]
<b>On Behalf Of </b>Ernst Sjöstrand<br>
<b>Sent:</b> Wednesday, August 10, 2016 4:25 AM<br>
<b>To:</b> Michel Dänzer<br>
<b>Cc:</b> Christian König; Dave Airlie; amd-gfx mailing list; Zhang, Hawking<br>
<b>Subject:</b> Re: [PATCH] Add freesync ioctl interface<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">I thought I'd add some notes as a someone who also plays games on Windows with Freesync...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I have a 4K monitor with Freesync, the range is 45 to 60 Hz. It might sounds narrow but it allows you<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">to have a smooth experience even at very high resolutions and settings. If the game can't hit 60 fps<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">exactly it's still fine, it seems smooth and you don't get tearing.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">This is shown in all games as a 60 Hz monitor even though Freesync is enabled.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
In the Windows gaming world there's a couple of different combinations at play:<o:p></o:p></p>
</div>
<p class="MsoNormal">1) Vsync disabled.<o:p></o:p></p>
</div>
<p class="MsoNormal">The game renders frames simply as fast as it can. If the fps is below 45 I get tearing.<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">If it's above 60 I get tearing. Not very good solution.<o:p></o:p></p>
</div>
<p class="MsoNormal">2) Vsync enabled.<o:p></o:p></p>
</div>
<p class="MsoNormal">Fps stays capped to 60, so no tearing on that end. Also 50 fps is smooth and uses Freesync fine.<br>
This is AFAIK done behind the scene by the AMD DX11 implementation and not something the game<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">is involved in.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">If fps goes below 45 it starts locking to 30 fps instead, not so nice.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">3) Vsync disabled + AMD Frame Rate Target Control (FRTC).<o:p></o:p></p>
</div>
<p class="MsoNormal">You set FRTC to 1-2 fps below your max refresh rate. That means that if fps goes below 45 you get<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">tearing (at 45 Hz refresh or 60?), but at least it renders frames as fast as it can in that case still. This is a<br>
solution many people like. However FRTC doesn't work all the time.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Regards<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">//Ernst<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">2016-08-10 9:49 GMT+02:00 Michel Dänzer <<a href="mailto:michel@daenzer.net" target="_blank">michel@daenzer.net</a>>:<o:p></o:p></p>
<p class="MsoNormal">On 10/08/16 12:19 PM, Michel Dänzer wrote:<br>
> On 09/08/16 07:44 PM, Christian König wrote:<br>
>> Am 09.08.2016 um 12:03 schrieb Michel Dänzer:<br>
>>> On 09/08/16 06:31 PM, Christian König wrote:<br>
>>>><br>
>>>> When we add freesync support we just extend vblank_mode with a new enum<br>
>>>> to enable it optionally for existing applications.<br>
>>> "Just"... this will only be possible after the first 3 steps above.<br>
>><br>
>> Checking the present extension again we already got PresentOptionAsync<br>
>> in there as well.<br>
>><br>
>> So the whole thing boils down implementing a new vblank_mode enume which<br>
>> sets PresentOptionAsync and then doing the right thing on the X side<br>
>> with those information.<br>
><br>
> PresentOptionAsync isn't for this. It's for not waiting for the vertical<br>
> blank period before performing a flip, which may result in tearing. This<br>
> distinction still applies with variable refresh rate, so this option<br>
> cannot be re-purposed to distinguish between variable and fixed refresh<br>
> rate.<br>
><br>
><br>
> BTW, the only presentation time we can use for the vblank_mode override<br>
> is "now" / "as soon as possible". So for that case (which is currently<br>
> the case for basically all games, and will likely continue to be for the<br>
> vast majority for a long time), the whole exercise doesn't provide any<br>
> net benefit over using the existing vblank-based presentation<br>
> infrastructure and just force-enabling variable refresh rate somehow.<br>
><br>
> Note that I'm not questioning the value of time-based presentation for<br>
> video playback, and thus the need to implement it. I'm only questioning<br>
> the point of delaying variable refresh rate for games by gating it on<br>
> the time-based presentation infrastructure.<br>
<br>
Also, we still haven't covered how a variable refresh rate mode would<br>
actually get set in this case, assuming it can't be set all the time<br>
(because either there is no compositor, or it doesn't use OpenGL, or it<br>
doesn't work well with variable refresh rate).<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><br>
<br>
--<br>
Earthling Michel Dänzer | <a href="http://www.amd.com" target="_blank">http://www.amd.com</a><br>
Libre software enthusiast | Mesa and X developer<br>
_______________________________________________<br>
amd-gfx mailing list<br>
<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx" target="_blank">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><o:p></o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</body>
</html>