mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 03:44:06 +00:00
kdrive/fbdev: Don't try to accelerate rendering with glamor with a sw driver
It will likely be slower that unaccelerated rendering. Command-line flags were added for overriding this. Signed-off-by: stefan11111 <stefan11111@shitposting.expert>
This commit is contained in:
committed by
Enrico Weigelt
parent
f3c5b41161
commit
5adae6c3b3
@@ -24,6 +24,8 @@ char *fbdev_glvnd_provider = NULL;
|
||||
|
||||
Bool es_allowed = TRUE;
|
||||
Bool force_es = FALSE;
|
||||
Bool fbGlamorAllowed = TRUE;
|
||||
Bool fbForceGlamor = FALSE;
|
||||
Bool fbXVAllowed = TRUE;
|
||||
|
||||
static void
|
||||
@@ -97,7 +99,19 @@ fbdevInitAccel(ScreenPtr pScreen)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!glamor_init(pScreen, GLAMOR_USE_EGL_SCREEN | GLAMOR_NO_DRI3)) {
|
||||
int flags = GLAMOR_USE_EGL_SCREEN | GLAMOR_NO_DRI3;
|
||||
if (!fbGlamorAllowed) {
|
||||
flags |= GLAMOR_NO_RENDER_ACCEL;
|
||||
} else if (!fbForceGlamor){
|
||||
const char *renderer = (const char*)glGetString(GL_RENDERER);
|
||||
if (!renderer ||
|
||||
strstr(renderer, "softpipe") ||
|
||||
strstr(renderer, "llvmpipe")) {
|
||||
flags |= GLAMOR_NO_RENDER_ACCEL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!glamor_init(pScreen, flags)) {
|
||||
fbdev_glamor_egl_cleanup(scrpriv);
|
||||
return FALSE;
|
||||
}
|
||||
@@ -112,7 +126,8 @@ fbdevInitAccel(ScreenPtr pScreen)
|
||||
#endif
|
||||
|
||||
#ifdef XV
|
||||
if (fbXVAllowed) {
|
||||
/* X-Video needs glamor render accel */
|
||||
if (fbXVAllowed && !(flags & GLAMOR_NO_RENDER_ACCEL)) {
|
||||
kd_glamor_xv_init(pScreen);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -66,6 +66,8 @@ extern Bool fbDisableShadow;
|
||||
extern char *fbdev_glvnd_provider;
|
||||
extern Bool es_allowed;
|
||||
extern Bool force_es;
|
||||
extern Bool fbGlamorAllowed;
|
||||
extern Bool fbForceGlamor;
|
||||
#ifdef XV
|
||||
extern Bool fbXVAllowed;
|
||||
#endif
|
||||
|
||||
@@ -72,6 +72,10 @@ ddxUseMsg(void)
|
||||
("-fb path Framebuffer device to use. Defaults to /dev/fb0\n");
|
||||
ErrorF
|
||||
("-noshadow Disable the ShadowFB layer if possible\n");
|
||||
ErrorF
|
||||
("-glamor Force enable glamor render acceleration if possible\n");
|
||||
ErrorF
|
||||
("-noglamor Force disable glamor render acceleration\n");
|
||||
ErrorF
|
||||
("-glvendor Suggest what glvnd vendor library should be used\n");
|
||||
ErrorF
|
||||
@@ -101,6 +105,16 @@ ddxProcessArgument(int argc, char **argv, int i)
|
||||
}
|
||||
|
||||
#ifdef GLAMOR
|
||||
if (!strcmp(argv[i], "-glamor")) {
|
||||
fbForceGlamor = TRUE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[i], "-noglamor")) {
|
||||
fbGlamorAllowed = FALSE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[i], "-glvendor")) {
|
||||
if (i + 1 < argc) {
|
||||
fbdev_glvnd_provider = strdup(argv[i + 1]);
|
||||
|
||||
Reference in New Issue
Block a user