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;