[Mesa-dev] [PATCH v2 2/4] drirc: Initial blacklist for adaptive sync

Kazlauskas, Nicholas nicholas.kazlauskas at amd.com
Mon Oct 1 14:26:23 UTC 2018


On 09/29/2018 05:20 AM, Kenneth Graunke wrote:
> On Monday, September 24, 2018 8:18:37 PM CEST Nicholas Kazlauskas wrote:
>> Applications that don't present at a predictable rate (ie. not games)
>> shouldn't have adaptive sync enabled. This list covers some of the
>> common desktop compositors, web browsers and video players.
>>
>> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas at amd.com>
>> ---
>>   src/util/00-mesa-defaults.conf | 79 ++++++++++++++++++++++++++++++++++
>>   1 file changed, 79 insertions(+)
>>
>> diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf
>> index ca69dd164f..14dd3077f8 100644
>> --- a/src/util/00-mesa-defaults.conf
>> +++ b/src/util/00-mesa-defaults.conf
>> @@ -21,6 +21,8 @@ Application bugs worked around in this file:
>>     built-ins (specifically gl_VertexID), which causes the vertex shaders to fail
>>     to compile.
>>   
>> +* Applications that are not suitable for adapative sync are blacklisted here.
>> +
>>   TODO: document the other workarounds.
>>   
>>   -->
>> @@ -310,6 +312,83 @@ TODO: document the other workarounds.
>>           <application name="Far Cry 2 (wine)" executable="farcry2.exe">
>>               <option name="mesa_glthread" value="true"/>
>>           </application>
>> +
>> +        <!-- Adaptive sync blacklist follows below: -->
>> +        <application name="gnome-shell" executable="gnome-shell">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Desktop — Plasma" executable="plasmashell">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="kwin_x11" executable="kwin_x11">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="ksmserver-logout-greeter" executable="ksmserver-logout-greeter">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="ksmserver-switchuser-greeter" executable="ksmserver-switchuser-greeter">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="kscreenlocker_greet" executable="kscreenlocker_greet">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="startplasma" executable="startplasma">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="krunner" executable="krunner">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="marco" executable="marco">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="compton" executable="compton">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="xfwm4" executable="xfwm4">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="mutter" executable="mutter">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="muffin" executable="muffin">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="compiz" executable="compiz">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Firefox" executable="firefox">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Chromium" executable="chromium">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Google Chrome" executable="chrome">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Iceweasel" executable="iceweasel">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Epiphany" executable="epiphany">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Konqueror" executable="konqueror">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Seamonkey" executable="seamonkey">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="VLC Media Player" executable="vlc">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Totem" executable="totem">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="Dragon Player" executable="dragon">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>> +        <application name="mpv" executable="mpv">
>> +            <option name="adaptive_sync_enable" value="false" />
>> +        </application>
>>       </device>
>>       <!-- vmwgfx doesn't like full buffer swaps and can't sync to vertical retraces.-->
>>       <device driver="vmwgfx">
>>
> 
> It doesn't seem like we're going to be able to enumerate every
> compositor, every video player, and browser variant out there.
> 
> Is there a GLX/EGL API to disable VRR that compositors should be using?
Since the window property is only set on the first flip an application 
could set it to 0 using xcb or xlib if they wanted to. An extension may 
make sense given all the other ones out there for flip related behavior 
but I'm not sure if this needed yet.

On the topic of the blacklist: I still think this it's the correct approach.

The goal is to enable variable refresh by default for the whole stack 
eventually but it's going to take some time. In the initial support it's 
going to be something the user has to opt into - so the expectation for 
issues in some programs should be expected.

There are also more games out there than there are browsers, video 
players and compositors just from rough estimates. Especially if you 
include programs you can run via WINE. A whitelist approach would 
include many more entries than this.

> 
> 
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 

Nicholas Kazlauskas


More information about the mesa-dev mailing list