Render through wgpu, which is eframe's default and the fleet's - #4
Merged
Merged
Conversation
odox was the only application here that turned eframe's defaults off and asked for `glow`. No reason was ever recorded: the comment above that feature list explains `accesskit` and the one below explains `gtk3`, and the trail's ten odox entries include several about the renderer and none about the backend. Turning the defaults off is how `wgpu` got dropped, since it is a default. It costs on two platforms. On Windows OpenGL arrives with the graphics vendor's driver, and without one a machine gets Microsoft's 1.1 stand-in, below what egui accepts — so `xodt.exe` exited after 0.7 seconds on a hosted runner saying `egui_glow requires opengl 2.0+`, and would do the same on any VM, stripped VDI or machine whose driver has fallen back to GDI. Apple deprecated OpenGL in 2018 and runs it as a translation layer over Metal. Measured before and after, because §2 and §9 rest on it. `objdump -p` still answers `libgcc_s`, `libm` and `libc` and nothing else on all three binaries: wgpu reaches Vulkan through the same `dlopen` glow used for OpenGL, so the pure-Rust linkage property is untouched. The suite passes. A window opens and draws. Two things do change. Each binary grows 12.5 MB to 17.7 MB. And the Debian dependencies are re-measured, which `build-deb.sh` asked for in writing: `libgl1` becomes `libvulkan1`, and `libwayland-egl1` goes with it because EGL was there to serve GL. Both display backends stay declared. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
anderix
force-pushed
the
wgpu-measurement
branch
from
September 16, 2026 00:03
6fb8565 to
50b1250
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
odox is the only application in the fleet that turns eframe's defaults off and asks for
glow. No reason was ever recorded — the comment above that feature list explainsaccesskit, the one below explainsgtk3, and the trail's ten odox entries include several about the renderer and none about the backend. Turning the defaults off is howwgpugot dropped, since it is a default and the replacement list did not carry it.What it costs today
On Windows, OpenGL arrives with the graphics vendor's driver. Without one a machine gets Microsoft's GDI Generic stand-in, which is OpenGL 1.1 — below what egui accepts.
xodt.exeexited after 0.7 seconds on a hosted runner sayingegui_glow requires opengl 2.0+, and would do the same on a VM, a stripped VDI, a Windows Server desktop, or a machine whose driver has fallen back to GDI. The other four applications in the fleet start on all of those, because they take eframe's default and render through Direct3D.That is also what blocks this repository's Store screenshots.
shots.ps1on the runner refuses at the first frame with the message above, so odox has no Windows frames and cannot get any until this lands; the unmeasured coordinates behind them are the second problem, not the first.On macOS it works today and is pointed one way: Apple deprecated OpenGL in 2018, froze it at 4.1, and runs it on Apple silicon as a translation layer over Metal. odox is heading into the Mac App Store on an API its vendor has signposted for removal.
What was measured, because §2 and §9 rest on it
objdump -p | grep NEEDEDlibc,libgcc_s,libmcargo testThe linkage property DESIGN §2 keeps is untouched: wgpu reaches Vulkan through the same
dlopenthat glow used for OpenGL.The three windows, side by side
Both release builds, the same three fixtures, the same 1200x800 window, photographed off the X server and compared pixel for pixel. Debian 13 with Mesa, whose Vulkan here is the software implementation rather than a GPU driver.
xodt,corpus/sample.odtxods,corpus/sample.odsxodp,corpus/sample.odpEvery difference is on the edge of a glyph. The document content is identical in all three — the table, the values, the outline, the slide — and what moves is the antialiasing of egui's own chrome text, which is why the spreadsheet with its column letters and row numbers differs most. The frames and the difference images are in
dist/renderer-comparison/.The Debian dependencies, re-measured
build-deb.shasked for this in writing — "Re-measure when eframe moves." Measured withpackaging/linux/check-libraries.shunder both display backends:libgl1→libvulkan1libwayland-egl1dropped, since EGL was there to serve GLlibegl1is loaded on both backends and is not in the list, so that was checked rather than reasoned about. Each library was made unreadable in turn, with bubblewrap binding an empty file over it, and the build run again:libEGL.so.1libvulkan.so.1FailedToCreateSurfaceForAnyBackendSo
libvulkan1alone is right: it is the path this is being moved onto, EGL is a fallback rather than a requirement, and a package that named both would be claiming a dependency the application does not have.No driver package is named.
libvulkan1recommendsmesa-vulkan-drivers | vulkan-icditself, and naming one here would be transcribing another package's dependencies and wrong on a machine whose driver is NVIDIA's.Not done here
Nothing has run on a discrete GPU. The comparison above is against Mesa's software Vulkan, which is the harder case for the argument rather than the easier one — a driver that reaches real hardware is the path wgpu is written for.
🤖 Generated with Claude Code