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:
Simon Zeni 2021-01-26 21:13:28 -05:00 committed by Simon Ser
parent 5a2ef794dc
commit 6becc69ec9
2 changed files with 17 additions and 0 deletions

View File

@ -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`

View File

@ -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");
} }