Skip to content

ci: make screenshot work without a front-end renderer - #315

Merged
techomancer merged 2 commits into
techomancer:mainfrom
irix7:pr/ci-screenshot
Oct 24, 2026
Merged

techomancer merged 2 commits into
techomancer:mainfrom
irix7:pr/ci-screenshot

Conversation

@belikh

@belikh belikh commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

A --ci instance installs no renderer (renderer_slot() stays empty), so nothing ever fills Rex3Screen::rgba and every iris-ci screenshot came out black — for example while driving a bare-metal guest whose framebuffer is visibly populated.

  • Ask the display thread for a frame and wait, bounded, for it to consume the request instead of sampling whatever was current. Boards that do not consume the request report no pending work and fall through immediately (GfxDisplay::screenshot_pending, default false; REX3 reports its existing flag).
  • When no renderer is installed, composite the guest screen from the display caches the refresh thread just updated, using SwCompositor. A GUI renderer still supplies the readback exactly as before.
  • A display with no video mode yet now returns a clear error instead of failing in the PNG encoder with 'Zero width'.

Verified live against an IRIX 7 ROM: iris-ci screenshot now writes the guest console instead of a black frame.

Tests: cargo test --workspace on upstream/main (1170 passed, 0 failed).

belikh and others added 2 commits October 25, 2026 06:53
A --ci instance installs no renderer, so nothing ever fills Rex3Screen::rgba and every iris-ci screenshot was black. Wait for the frame the display thread was asked to produce (bounded) and, when no renderer is present, composite the guest screen from the display caches the refresh thread just updated. A GUI renderer still supplies the readback as before.
@techomancer

Copy link
Copy Markdown
Owner

i think we will have to implement something like vnc backend for gui-less stuff like ci

@techomancer
techomancer merged commit 10d737f into techomancer:main Oct 24, 2026
7 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.

2 participants