render/egl: fail to create wlr_egl on software renderer
The creation of `wlr_egl` will fail is the device extension EGL_MESA_device_software is defined. The creation process is allowed to continue only if the environment variable `WLR_RENDERER_ALLOW_SOFTWARE` is defined to the value 1.
This commit is contained in:
parent
5a2ef794dc
commit
6becc69ec9
|
@ -39,6 +39,11 @@ wlroots reads these environment variables
|
||||||
|
|
||||||
* *WLR_X11_OUTPUTS*: when using the X11 backend specifies the number of outputs
|
* *WLR_X11_OUTPUTS*: when using the X11 backend specifies the number of outputs
|
||||||
|
|
||||||
|
## gles2 renderer
|
||||||
|
|
||||||
|
* *WLR_RENDERER_ALLOW_SOFTWARE*: allows the gles2 renderer to use software
|
||||||
|
rendering
|
||||||
|
|
||||||
# Generic
|
# Generic
|
||||||
|
|
||||||
* *DISPLAY*: if set probe X11 backend in `wlr_backend_autocreate`
|
* *DISPLAY*: if set probe X11 backend in `wlr_backend_autocreate`
|
||||||
|
|
12
render/egl.c
12
render/egl.c
|
@ -272,6 +272,18 @@ struct wlr_egl *wlr_egl_create(EGLenum platform, void *remote_display,
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (check_egl_ext(device_exts_str, "EGL_MESA_device_software")) {
|
||||||
|
const char *allow_software = getenv("WLR_RENDERER_ALLOW_SOFTWARE");
|
||||||
|
if (strcmp(allow_software, "1") == 0) {
|
||||||
|
wlr_log(WLR_INFO, "Using software rendering");
|
||||||
|
} else {
|
||||||
|
wlr_log(WLR_ERROR, "Software rendering detected, please use "
|
||||||
|
"the WLR_RENDERER_ALLOW_SOFTWARE environment variable "
|
||||||
|
"to proceed");
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
egl->exts.device_drm_ext =
|
egl->exts.device_drm_ext =
|
||||||
check_egl_ext(device_exts_str, "EGL_EXT_device_drm");
|
check_egl_ext(device_exts_str, "EGL_EXT_device_drm");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue