mirror of
https://github.com/open-webui/desktop.git
synced 2026-11-05 01:27:46 +00:00
[GH-ISSUE #273] Linux: forced SwiftShader causes delayed hover feedback and high CPU usage on Intel Iris Xe #175
Labels
No labels
help wanted
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
open-webui/desktop#175
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @hirntot on GitHub (Sep 18, 2026).
Original GitHub issue: https://github.com/open-webui/desktop/issues/273
Problem
Open WebUI Desktop 0.0.20 forces SwiftShader on Linux. On a system with Intel Iris Xe graphics, the remote web UI becomes noticeably sluggish: hover effects appear well after the pointer has moved away. The same service feels responsive in a Firefox-based web app.
After removing only the two forced graphics-backend switches from a separate test copy, while keeping the existing user profile and the renderer sandbox fix from #272, the user reported that interaction was much better.
Environment
Reproduction
Observations
--use-gl=angle --use-angle=swiftshader.pswas approximately 76% in the baseline observation and 8% in the test observation. These samples have different process lifetimes and workloads; they are supporting observations, not a controlled benchmark or a measured speedup.getGPUInfo(), so hardware acceleration is not independently confirmed. The verified change is removal of forced SwiftShader, together with the user's improved responsiveness.Proposed fix
Let Electron/Chromium choose the graphics backend by default instead of unconditionally selecting software rendering on every Linux system:
This was the only runtime change relative to the working sandbox-patched baseline. The existing GPU sandbox workaround and shared-memory setting were retained.
SwiftShader was introduced to address real Linux GPU/compositing failures (#178, #157). Rather than deleting that fallback entirely, consider exposing it as an explicit compatibility option or selecting it after a confirmed GPU initialization failure. A default change should be checked on the configurations that originally required the workaround, including other GPUs and package formats.
Validation and scope
The user confirmed the improvement in a separate patched app using their existing profile on the machine above. A new unofficial DEB containing these exact tested app bytes was built and its payload verified; installation of that second DEB has not yet been confirmed. Other GPU vendors, distributions, Wayland and AppImage/snap/Flatpak were not tested.
Related: #272 fixes the separate blank-webview sandbox failure and deliberately does not include this graphics change.
@marc-mrt commented on GitHub (Sep 27, 2026):
Same issue here, on a configuration the original report lists as untested: AMD + Wayland + Flatpak. Removing the forced SwiftShader switch fixes it, and
<webview>compositing keeps working.Environment
amdgpu), plus a Raphael iGPU; Chromium usedrenderD128(the 7900 XTX)com.openwebui.desktop, runtimeorg.freedesktop.Platform//23.08, Mesa 25.0.7 (org.freedesktop.Platform.GL.default)main(0931b46) still has the same two switches insrc/main/index.ts, so this still applies to the latest code.Observations
--use-gl=angle --use-angle=swiftshaderand mapslibvk_swiftshader.so. It used about 65–185% CPU during normal use, and the UI was very sluggish.flatpak run com.openwebui.desktop --use-angle=gl(and=vulkan,=default) still produces a GPU process with--use-angle=swiftshader.app.commandLine.appendSwitch()runs after argv is parsed, and Chromium keeps the last value for a repeated switch. So users currently have no workaround short of patchingapp.asar.use-angleswitch inapp.asar(a same-length byte patch toxse-angle, which Chromium ignores) and kept everything else, includinguse-gl=angle,disable-gpu-sandbox,no-sandboxanddisable-dev-shm-usage. The GPU process then starts with only--use-gl=angle, maps Mesa'slibgallium-25.0.7.soand no SwiftShader, and used about 5% CPU in a short idle sample. Remote connection views render normally, with no blank webview, and the app is responsive with my existing profile.These CPU numbers are
pssamples, not a controlled benchmark.Suggestion
This supports the direction in the original report: default to Chromium's own backend choice, and use SwiftShader only as a fallback. Chromium already has its own fallback path when hardware GL init fails. If the explicit fallback is still needed for #119 / #157 / #178, it could reuse the existing GPU-crash marker logic, which already relaunches after a GPU process crash. At minimum, an opt-out would help, for example an env var or config key checked before the
appendSwitchcalls, since command-line flags can't override it today:(
gpuSandboxDisabledis only a sketch of "a GPU crash already happened". It is defined after this block today, so the ordering would need adjusting.)Happy to test a build on this setup.