Repository navigation
Fix #306: render on the power-saving GPU by default, with a preference for the discrete one - #329
Merged
Merged
Conversation
…e for the discrete one On hybrid-graphics laptops (an integrated GPU driving the display plus a discrete one), egui-wgpu's default power preference is HighPerformance, so VectorCraft rendered on the discrete GPU and its frames were copied to the display through the integrated one. On an Asus ZenBook with Intel Iris + Arc the window flickered whenever the mouse moved over it (#306, #305). The canvas is rasterized on the CPU (vello_cpu) and the GPU only composites the canvas texture and draws the UI, so the integrated GPU is plenty. The desktop app now asks wgpu for the power-saving adapter by default. Single-GPU machines are unaffected. - Preferences > Performance > Graphics Processor (`gpuPreference`: powerSaving, the default, or highPerformance), with a note that it applies after a restart. The app reads it from the saved preferences before the window opens. WGPU_POWER_PREF still overrides it. - Help > About and `ui.inspect` (`graphicsAdapter`) name the adapter in use, and it is logged at startup, for future GPU bug reports. - Docs (README, docs/development.md) and ROADMAP updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 7, 2026
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.
Fixes #306 and #305.
On hybrid-graphics laptops, egui-wgpu's default power preference is
HighPerformance, so VectorCraft rendered on the discrete GPU and its frames were copied to the display driven by the integrated one. On an Asus ZenBook with Intel Iris and a discrete Arc GPU, the window flickered whenever the mouse moved over it, and disabling the Arc GPU stopped it. VectorCraft rasterizes the canvas on the CPU (vello_cpu); the GPU only composites the canvas texture and draws the UI, which the integrated GPU does easily. The desktop app now asks wgpu for the power-saving adapter by default. A machine with one GPU gets that GPU either way.What users see
docs/development.md(new "Desktop graphics processor" section) explain the default, the preference andWGPU_POWER_PREF.Preferences / commands
gpuPreference:powerSaving(default) orhighPerformance, a choice inPREF_SPECS, soprefs.get/set(by value or label) /reset/listhandle it, and invalid values are rejected without changing anything. Older preference files get the default.apps/vectorcraft/src/main.rsreads it from the saved state before the window opens and setswgpu_options(WgpuSetup::CreateNew).power_preference, through eframe's re-exports (no new dependencies).WGPU_POWER_PREF(low,high,none) overrides it when set.ui.inspectreturnsgraphicsAdapter. The web app is unchanged.Tests
prefs.listrow, reset by category.power_preference(pref, env)mapping (default, both values, unknown values, the environment variable winning either way), and the key the engine saves is the one the app reads.engine_prefs.gpuPreference.Checks
dfe7f1a(Fix #296: variable fonts list and draw every named style #326):cargo xtask ci, all 7 steps passed (fmt, clippy, test, assets, brands, layers, wasm), 3,473 tests.--control:graphicsAdapteris the integrated Radeon (Vulkan) and the canvas renders correctly;highPerformance: the RTX 3070, rendering correctly;WGPU_POWER_PREF=low: back on the integrated GPU;🤖 Generated with Claude Code