The deeper feature set behind the README key features. This page is end-user documentation; architecture and IGCL integration notes live in the other files of this directory.
Capability-gated and hidden when the GPU does not expose them:
- VRAM frequency offset
- VRAM voltage offset
- GPU voltage lock
- Custom VF curves
These controls only appear on hardware that reports support for them.
On Alchemist (A770-class), power limits up to 375 W and temperature
limits up to 115 °C are available in Advanced OC Mode. Values above the
standard 252 W / 90 °C require an elevation prompt and an explicit confirm.
The <=315 W range applies through a bundled 2023-era IGCL runtime (Intel's
own, BSD-3-Clause, attributed in THIRD_PARTY_NOTICES.txt), which the
kernel-mode driver still accepts. Above 315 W, the limit applies through
the Level Zero sysman power pair (zesPowerSetLimits, sustained + burst
limits written in ONE call - the same mechanism that syncs the PL2 burst
domain on every apply today); the app-verified sysman acceptance ceiling on
the A770 is 375 W (the physical budget: 2x8-pin 300 W + slot 75 W), and
requests above the ceiling are refused honestly, never clamped.
- Clamped ranges - every value is bounded to the device-reported minimum and maximum in both the UI and the backend; Arc Power never overrides driver-level ceilings.
- Verified read-backs - every apply is confirmed by reading the value back from the driver, including a delayed re-read to catch momentary "lies". A setter returning success but leaving the read-back unchanged is reported as a failure, never as "applied".
- Honest refusals - when the driver refuses, you get a truthful per-control error with a message you can act on, never a silent failure or a fake success state.
Limits, ranges, steps, and units are read from the GPU at launch - never hardcoded. The UI only shows what the device actually supports.
Quick access and apply-on-startup controls without opening the window.
- Dev builds delegate applies that need it to an elevated self-worker (one UAC prompt per apply).
- The packaged EXE is always elevated, so applies run in-process with no prompts; apply-on-startup runs through an elevated scheduled task.
- The warranty-waiver gate is prompted at open and on first apply; acceptance
is permanent, and an apply that hits an unset waiver re-prompts once and
retries automatically. OC-locked GPUs (Arc B50 / Arc Pro B50-class - the
driver refuses
ctlOverclockWaiverSetwithERROR_UNSUPPORTED_FEATURE) have no waiver: no prompt, the dashboard row reads "Not supported on this GPU", and fan/profile applies skip the gate (the driver's per-control refusals are the honest floor).
-
FPS - the preferred source is the per-process present stream (PresentMon ETW events, pinned v2.5.1 sidecar): the foreground game's own present rate, exact per frame. When the ETW lane is inactive (no foreground program, or the sidecar unavailable - e.g. the unelevated dev run) the reading falls back to the DXGI desktop presentation sampler (a 400-600 ms window; on the windowed desktop the count tracks the display refresh rate, not the game's render rate - the honest limit of the fallback tier). The AVG FPS stat is the last 10 seconds of frames.
-
API badge - the foreground graphics API is detected from the process's loaded modules: Vulkan and OpenGL-with-a-vendor-ICD rank above DirectX, a bare system OpenGL falls through to DirectX, and launcher-owned windows fall back to the child process that renders.
-
Chip-name labels - an overlay toggle shows the CPU/GPU row labels as the chip names (for example "A770" or "i7 5775C") instead of "GPU"/"CPU".
-
Glued units + a header divider - every overlay value-unit pair is one token ("50W", "16.67ms" - never "50 W"), and a single aligned vertical divider line separates the FPS/CPU/RAM/GPU/VRAM row headers from their values (the column widens automatically when the chip-name labels are on; the headerless API row sits below the line).
-
Refreshed ReBAR + a straight value column - the ReBAR pill refreshes on fast boots (concurrent boot readers share one driver query, so the pill lands green on the first render instead of staying gray), and every overlay row's values start at the same x - one character right of the divider line, never overlapping it.
-
Divider margins + an API header - the overlay divider keeps a clear gap on both sides (the header side widened; every value starts two characters past its padded label, ~1.25ch right of the line), and the API row gained its "API" header - it is now the sixth labeled row of the divider column, its value after the line like the other five.
-
Temperatures - CPU, GPU and VRAM temperatures round to whole degrees; AMD Ryzen CPU wattage comes from the RAPL energy counters (with an honest status in the log when the counters are unavailable or frozen).
-
RAM brand - the JEDEC manufacturer decode covers more raw encodings, with a part-number fallback for modules whose SPD brand string the board BIOS reports as "Unknown".
-
M20 UI compaction - the overlay divider now scales with the overlay size slider (its font is tied to the same scaled root as the rows), the Settings page was condensed so all cards fit the window without scrolling (with shorter, one-line descriptions), the Core-Offset range line hides when the gpuLock page switches to Lock mode, and the tuning sliders' blue fill no longer crosses the dark-blue thumb.
-
Alchemist fan Fixed mode - on the Alchemist line (the dedicated fixed-speed API refuses with ERROR_UNSUPPORTED_FEATURE on the current driver), Fixed mode works through the flat-table mechanism: the fan-capability probe falls back to a flat 2-point speed table, the Fixed apply writes the flat table and verifies by read-back, and the editor's Fixed chip enables with the fixed % slider (a flat table reads back as the honest 'fixed' mode while the Curve chip still shows the table points).