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.kazlaus...@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Nicholas Kazlauskas
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to