Skip to content
Русский

Runnable now — the adapter switch on a two-adapter box

Not hardware-gated in the usual sense: this needs only a machine with two adapters, which the reference boxes already are. It is here because the path it names has never executed anywhere. Renderer::set_adapter rebuilds every GPU-owning member on a second adapter’s device, and a Renderer holding a real surface needs a window — so core/tests/suite/adapter_switch.rs can pin the refusal, the guard and the exact-name rule but structurally cannot reach the successful rebuild, and the sessions that built it opened no window. Plan 0224 Phase 7 measured the default on both operating systems and did not take a switch. What is unverified is not the flip an operator gets at launch; it is the menu row that moves a running show.

The failure mode if something is wrong is a member rebuilt on one teardown path and forgotten on the other, which surfaces at runtime as a device-lost or a stale handle rather than at compile time.

  • The row walks, and the picture comes back on the named adapter. With music playing, press S, move to the Adapter row beside Quality, and press right. Record what diagnostics.log’s renderer adapter: line says afterwards, and that it names the adapter the row named. Walk back with left and record the return trip too — a switch to the weaker adapter is the likelier one to fail, because two devices are briefly alive at the commit and the new one may not fit.
  • The show survives it. The preset on screen and the engine clock are the ones that were there; the window, the audio and the diagnostics are untouched. Accumulated GPU state — trails, feedback, a simulation field — is expected to restart visibly, which is the documented cost and not a fault. A preset with a long trail is the one to watch it on.
  • The file is written, by name. config.toml reads [output] gpu = "<the roster's own name>" — not an index — and the next unflagged launch comes up on it with the startup line reading (from config.toml [output] gpu).
  • A refused switch changes nothing. If any switch is refused, record the stderr line: it must read adapter unchanged, still on …, the show must keep running, and config.toml must not have been written.
  • What an open console does across it. Open the console with C first, then switch. Record whether it re-attached on the new device (console re-attached after the adapter switch: … in diagnostics.log) or fell to the degrade path. The degrade path is the live half of backlog 0165 and has still never fired — a switch onto the adapter that does not drive the console’s display is the newest configuration in which it could. Either outcome is the reading; say which.

Built from 13c7582 at version 0.158.0. This site tracks main and is not versioned per release.