Skip to content

fix(desktop): WebKitGTK fast-path on hybrid GPUs, + compile the Tauri crate in CI - #170

Merged
marinom2 merged 2 commits into
mainfrom
fix/desktop-lag-and-deps
Jul 29, 2026
Merged

fix(desktop): WebKitGTK fast-path on hybrid GPUs, + compile the Tauri crate in CI#170
marinom2 merged 2 commits into
mainfrom
fix/desktop-lag-and-deps

Conversation

@marinom2

Copy link
Copy Markdown
Owner

Two independent fixes that missed the #169 merge window.

The desktop app feels slow, and it isn't the machine

WebKitGTK hands rendered frames to the compositor as DMA-BUFs. On a box with two DRM devices — an Intel iGPU driving modesetting next to a discrete NVIDIA card, i.e. an ordinary desktop with a GPU — that import fails and WebKit quietly drops to a fallback path instead of raising an error. The window still draws, so the only symptom is that everything feels heavy.

Measured on an RTX 5060 Ti + HD 530, X11, WebKitGTK 2.52.3, idle window at 3840×2160:

idle CPU, web process
default (DMA-BUF renderer on) 2.7 – 14.3 %
WEBKIT_DISABLE_DMABUF_RENDERER=1 0.0 %

Hardware GL was healthy throughout (direct rendering: Yes, OpenGL 4.6, RTX 5060 Ti) — the GPU was never the bottleneck, the buffer handoff was.

Set only when the operator has expressed no preference, so anyone whose stack handles DMA-BUF correctly can opt back in with WEBKIT_DISABLE_DMABUF_RENDERER=0.

Nothing in CI compiles the Tauri crate

release.yml builds it, but only on a v* tag — so a Rust change can sit on main for weeks and first break when you try to cut installers. Adds a cargo check job (the cheap half of that build: type- and borrow-check, no linking or bundling). The Rust change above would otherwise have merged unverified.

Dependabot keeps proposing an upgrade that cannot pass

next is a production dependency and eslint-config-next is a development one, so grouping by dependency-type splits a version-locked pair across two PRs. Neither works alone: eslint-config-next 16 pulls eslint 10 and expects next 16, while eslint 10 removed the eslintrc API that next lint from next 15 still calls.

That already happened — #161 merged the development half and left lint unrunnable until #168 pinned it back — and #167 was queued to do it again (closed, with the reasoning on the PR). Grouping the trio first means the upgrade arrives as one reviewable change that either works or doesn't.

marinom2 added 2 commits July 29, 2026 11:04
…Linux

The desktop app is slow on an ordinary Linux desktop-with-a-GPU, and it looks
like a weak machine rather than a bug.

WebKitGTK hands rendered frames to the compositor as DMA-BUFs. When the box has
two DRM devices - an Intel iGPU driving `modesetting` alongside a discrete
NVIDIA card - the import fails and WebKit quietly falls back instead of
surfacing an error. The window still draws, so the only symptom is that
everything feels heavy.

Measured on an RTX 5060 Ti + HD 530, X11, WebKitGTK 2.52.3, idle window at
3840x2160: the web process burns 2.7-14.3% CPU with the renderer enabled and
0.0% with it disabled. Hardware GL was fine throughout (direct rendering yes,
OpenGL 4.6) - the GPU was never the problem, the buffer handoff was.

Set only when the operator has expressed no preference, so anyone whose stack
handles DMA-BUF properly can opt back in with WEBKIT_DISABLE_DMABUF_RENDERER=0.

Also adds a `cargo check` job, because nothing in CI compiles this crate today:
release.yml builds it, but only on a `v*` tag, so a Rust change can sit on main
until someone tries to cut installers and discovers it there. This commit would
itself have been unverified without it.
They are a matched pair, but `next` is a production dependency and
`eslint-config-next` is a development one, so grouping by dependency-type
proposes them in two PRs that cannot pass independently: eslint-config-next 16
pulls eslint 10 and expects next 16, while eslint 10 removed the eslintrc API
that `next lint` from next 15 still calls.

That is not hypothetical. PR #161 merged the development half on its own and
lint stopped running entirely - "Unknown options: useEslintrc" before it read a
file - and stayed broken until the pair was pinned back. The two currently-open
dependabot PRs are the same shape: #167 would take eslint to 10 and
eslint-config-next to 16 while next stays on 15.

Dependabot puts a dependency in the first group it matches, so listing the
trio first keeps them together and makes the upgrade a single reviewable
change that either works or doesn't.
@vercel

vercel Bot commented Jul 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
lightnode Ready Ready Preview, Comment Jul 29, 2026 8:06am

Request Review

@marinom2
marinom2 merged commit 1cd513d into main Jul 29, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant