From cfcf06b8b0ea0e26ae5e7d62c93b6e4098b810f5 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 3 Oct 2024 19:03:27 +0200 Subject: [PATCH] render: add WLR_RENDERER_FORCE_SOFTWARE env var Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3693 --- docs/env_vars.md | 2 ++ render/wlr_renderer.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/docs/env_vars.md b/docs/env_vars.md index 06e47ac59..59c8f078f 100644 --- a/docs/env_vars.md +++ b/docs/env_vars.md @@ -14,6 +14,8 @@ wlroots reads these environment variables hardware-accelerated renderers. * *WLR_RENDER_NO_EXPLICIT_SYNC*: set to 1 to disable explicit synchronization support in renderers. +* *WLR_RENDERER_FORCE_SOFTWARE*: set to 1 to force software rendering for GLES2 + and Vulkan * *WLR_EGL_NO_MODIFIERS*: set to 1 to disable format modifiers in EGL, this can be used to understand and work around driver bugs. diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index bb7bbbeb9..a4cea9384 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -143,6 +143,12 @@ static bool open_preferred_drm_fd(struct wlr_backend *backend, int *drm_fd_ptr, return true; } + if (env_parse_bool("WLR_RENDERER_FORCE_SOFTWARE")) { + *drm_fd_ptr = -1; + *own_drm_fd = false; + return true; + } + // Allow the user to override the render node const char *render_name = getenv("WLR_RENDER_DRM_DEVICE"); if (render_name != NULL) {