Skip to content

splash fixes - #167

Merged
dangowrt merged 4 commits into
openwrt:masterfrom
dangowrt:splash-fixes
Oct 2, 2026
Merged

dangowrt merged 4 commits into
openwrt:masterfrom
dangowrt:splash-fixes

Conversation

@dangowrt

@dangowrt dangowrt commented Oct 1, 2026

Copy link
Copy Markdown
Member

Various fixes for plymouth boot splash, particularly on devices without CONFIG_VT.

OpenWrt builds the kernel without CONFIG_VT, so BOOT_TTY never exists
and plymouth falls back to the first serial device it finds, which is
the system console. It opens that console, watches it for input, puts it
in raw mode and locks every termios bit, so a shell sharing it loses its
cursor keys, its interrupt character and a share of everything typed.
Forcing details mode along the way also costs the splash its renderer.

Carry a patch that makes --graphical-boot keep plymouth away from a
console altogether and pass it from both entry points. The faked
"splash" kernel argument and --ignore-serial-consoles go with it, both
implied now, as does --attach-to-session, which redirected the console
into plymouth's pty with TIOCCONS and stopped kernel messages reaching
the serial port.

Signed-off-by: Daniel Golle <[email protected]>
ply_pixel_buffer_get_size() reports the logical area while
ply_pixel_buffer_get_argb32_data() points at the device pixel buffer.
Where the device scale is above one, the plutovg surface then describes
the buffer as too narrow and with too short a stride, so each odd
logical row lands in the right half of the panel and the image collapses
into a fraction of it. The damaged area is handed over in logical
coordinates as well, while ply_renderer_head_flush_area() reads it as
device pixels.

Size the surface in device pixels, scale the canvas by the device scale
so a theme keeps drawing in logical coordinates, and report the damaged
area in device pixels.

Signed-off-by: Daniel Golle <[email protected]>
The preinit hook asked for a splash by appending "splash" to a faked
kernel command line and told plymouth to ignore serial consoles, which
left it free to take the system console as its terminal anyway.

--graphical-boot covers both and keeps plymouth on KMS only.

Signed-off-by: Daniel Golle <[email protected]>
plymouth resolves a configured theme as themes/<name>/<name>.plymouth,
so the descriptor has to carry the name of its directory. Named
openwrt.plymouth it is never found, and plymouth walks its fallback
chain down to the built-in text splash, which draws nothing at all on a
board that has no text console.

Name the descriptor after the theme so the configured theme loads.

Signed-off-by: Daniel Golle <[email protected]>
@dangowrt
dangowrt merged commit 816fa8f into openwrt:master Oct 2, 2026
14 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.

1 participant