diff --git a/src/compositor.c b/src/compositor.c
index 2e58a2d7e3bc9daa8ac4f6301d6f6be5533c7764..5cafb7d7fc5c63b11be22db5893754bbea80cbfc 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1064,6 +1064,14 @@ check_glx_renderer (ScreenInfo *screen_info)
         "SVGA3D",
         NULL
     };
+#if HAVE_PRESENT_EXTENSION
+    const char *prefer_xpresent[] = {
+        "Intel",
+        "AMD",
+        NULL
+    };
+#endif /* HAVE_PRESENT_EXTENSION */
+
     int i;
 
     g_return_val_if_fail (screen_info != NULL, FALSE);
@@ -1086,6 +1094,20 @@ check_glx_renderer (ScreenInfo *screen_info)
         return FALSE;
     }
 
+#if HAVE_PRESENT_EXTENSION
+    if (screen_info->vblank_mode == VBLANK_AUTO)
+    {
+        i = 0;
+        while (prefer_xpresent[i] && !strcasestr (glRenderer, prefer_xpresent[i]))
+            i++;
+        if (prefer_xpresent[i])
+        {
+            g_warning ("Prefer XPresent with %s", glRenderer);
+            return FALSE;
+        }
+    }
+#endif /* HAVE_PRESENT_EXTENSION */
+
     return TRUE;
 }
 
@@ -1357,7 +1379,6 @@ init_glx (ScreenInfo *screen_info)
 
     if (!check_glx_renderer (screen_info))
     {
-        g_warning ("Screen is missing required GL renderer, GL support disabled.");
         free_glx_data (screen_info);
 
         return FALSE;