[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