<feed xmlns='http://www.w3.org/2005/Atom'>
<title>video, branch master</title>
<subtitle>Mirror of video feed</subtitle>
<id>https://git.openwrt.org/feed/video/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/feed/video/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/'/>
<updated>2026-09-30T11:28:18Z</updated>
<entry>
<title>mesa: depend on accel-support in the hardware drivers</title>
<updated>2026-09-30T11:28:18Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-29T14:52:15Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=2baec75e2c07b3bb3ae3b73580a3bd3074818707'/>
<id>urn:sha1:2baec75e2c07b3bb3ae3b73580a3bd3074818707</id>
<content type='text'>
A hardware driver renders through /dev/dri/renderD*, which is 0600
root:root until accel-support allocates the render group and ships the
rule that puts the node into it.

The software rasterisers are the exception and keep no such dependency:
libmesa-softpipe, libmesa-llvmpipe and libvulkan-lvp run on the CPU and
open no device. Because the gate sits on each driver, an image built
around a software rasteriser stays out of the render group, while one
that picks a hardware driver pulls the group in with it.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>kmscon: depend on input-support for the evdev nodes</title>
<updated>2026-09-30T11:28:18Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-29T14:52:15Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=3c8ebee9b4f766f647cda6893ca27af6e7764a87'/>
<id>urn:sha1:3c8ebee9b4f766f647cda6893ca27af6e7764a87</id>
<content type='text'>
kmscon reads its keyboard from /dev/input directly through libudev, so
it needs the input group and the hotplug rule that input-support ships.
It has no libevdev or libinput dependency to inherit that from, unlike
the compositors in this feed.

The DRM side already comes from libdrm.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>libwpe: remove</title>
<updated>2026-09-29T11:37:13Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-23T13:04:46Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=e5bbe28a27349584f248f4c0c4b2aae7cfb4325e'/>
<id>urn:sha1:e5bbe28a27349584f248f4c0c4b2aae7cfb4325e</id>
<content type='text'>
Nothing depends on the libwpe API any more: wpewebkit is built against
WPEPlatform, and wpebackend-fdo and cog are gone.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>wpebackend-fdo: remove</title>
<updated>2026-09-29T11:37:13Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-23T13:04:46Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=d4540d0ce904699dd2da0e343593c1e74e8f1c68'/>
<id>urn:sha1:d4540d0ce904699dd2da0e343593c1e74e8f1c68</id>
<content type='text'>
The only consumers were wpewebkit, which is now built with
ENABLE_WPE_LEGACY_API=OFF, and cog, which is gone.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>cog: remove</title>
<updated>2026-09-29T11:37:13Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-23T13:04:46Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=7225a8673a6b67d65d6bc4ee7879cf0f934ae4b2'/>
<id>urn:sha1:7225a8673a6b67d65d6bc4ee7879cf0f934ae4b2</id>
<content type='text'>
Cog is a launcher built on the libwpe API and wpebackend-fdo, which
wpewebkit no longer provides now that it is built against WPEPlatform
only. MiniBrowser covers the testing role, and applications should use
the WPE API directly.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>wpewebkit: update to 2.54.0</title>
<updated>2026-09-29T11:37:13Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-28T23:24:55Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=37a9a0216898215cc6b318e2442f1c747175f229'/>
<id>urn:sha1:37a9a0216898215cc6b318e2442f1c747175f229</id>
<content type='text'>
Switch to WPEPlatform only: ENABLE_WPE_LEGACY_API=OFF drops the libwpe
API and with it the wpebackend-fdo backend, which served no other
package. MiniBrowser builds against WPEPlatform without them.

WPEWebKit now needs 128-bit atomics, so add libatomic. libstdcpp and
libxkbcommon used to arrive through libwpe and are linked directly, so
declare them.

Patch 122 is upstream and is dropped; 126 keeps only its DWARF register
mapping hunk. 138 and 147 are ported to the refactored atomic op macros,
where upstream hoisted 63 inline bodies out into named macros, and 147's
compare-exchange slow path gains the expected-value argument and the
result move it was missing.

Eight patches are new. The WebDriver log channel is read unguarded while
it is only declared when logging is compiled in. WPE reports
prefers-reduced-motion inverted, so animations are disabled by default.
WebKit cannot resolve a WebCore header that another WebCore header
includes by bare name, which stops the prefix header compiling as the
translation unit of its own that a precompiled header needs. libpas picks
a __uint128_t for pas_pair wherever the compiler is not Clang and the
target is not 32-bit ARM, which leaves 32-bit x86 without a type, and its
pair atomics then need the same unreachable stub that 32-bit ARM already
uses.

The remaining four are RISCV64. The offlineasm backend cannot lower a call
to a local label, nor a floating-point branch to a global label, both of
which the LLInt asm emits. B3 declares u64 inside the ARM64 and X86_64
arms of isValidFPImm64Form and reads it after the #endif, which no other
architecture compiles. The MacroAssembler is missing the
store64(TrustedImm32, BaseIndex) and immediate-valued moveConditionally32
forms that DFGSpeculativeJIT calls.

Add test-version.sh: nothing the packages install reports the version, so
the generic test cannot probe for it. The helper processes take no
arguments and print nothing, WPEWebDriver has no --version, and the .pc
file that carries the version belongs to Build/InstallDev.

Regenerate the whole series with git format-patch so every patch carries
a git-am header and a description, refresh it for the new line numbers,
and correct two descriptions that referred to WebKitGTK.

Link: https://wpewebkit.org/release/wpewebkit-2.54.0.html

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>kmscon: split the OpenGL ES path into kmscon-mod-gl</title>
<updated>2026-09-28T23:17:38Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-27T19:09:10Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=7dd5eba75d4b68785b4f7c5b3b086e6dfbd6644c'/>
<id>urn:sha1:7dd5eba75d4b68785b4f7c5b3b086e6dfbd6644c</id>
<content type='text'>
kmscon depends on a libmesa provider, so every system with a KMS
console pulls in Mesa, but the main binary links none of it: the GL
code lives entirely in mod-drm3d.so and mod-gltex.so, which are
dlopened from a directory scan of the module directory. The software
renderer bbulk is built into the binary, the drm2d backend needs only
libdrm, and hwaccel is off by default, so Mesa is unused on a default
install and the modules are absent-tolerant by construction.

Ship those two modules as kmscon-mod-gl and build them only when it
is selected. A system that carries Mesa for other reasons installs
the package and starts kmscon with --hwaccel; everything else gets a
console with no Mesa in the build at all.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>kmscon: add terminal emulator for KMS devices</title>
<updated>2026-09-26T11:41:58Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-24T21:51:07Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=605d768782e13fc8b8fa16e719d4a2742dafbd45'/>
<id>urn:sha1:605d768782e13fc8b8fa16e719d4a2742dafbd45</id>
<content type='text'>
A system without a framebuffer console has no text console at all.
kmscon draws a terminal straight onto a DRM device, through OpenGL ES
where the GPU allows and in software on the same device otherwise.

Device access goes through libseat, so the seat owns the drm device and
the vt rather than kmscon reaching for both itself. That needs seatd,
which is a small daemon and already starts before this service. Built
without the fbdev backend and with the built-in PC screen font, so it
needs neither pango nor freetype. The service is off until enabled, so
it does not take the display from whatever else is using it.

Two patches are carried. The first keeps the unifont generator, a
native helper linked against zlib for the build machine, out of a build
that has the unifont backend disabled, which otherwise breaks cross
compilation. The second stops an error loop: a render-only drm node
answers NULL to drmModeGetResources, which the hotplug path treated as
an error and returned from the poll handler, so kmscon wrote 776 error
lines in eighty seconds on a board where the GPU enumerates before the
display controller.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>libtsm: add terminal emulator state machine</title>
<updated>2026-09-26T11:41:58Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-24T21:51:07Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=9ab8f1fcafdb8fb35816503338bb127e4c3873e5'/>
<id>urn:sha1:9ab8f1fcafdb8fb35816503338bb127e4c3873e5</id>
<content type='text'>
State machine for a VT220 terminal emulator, with no rendering or input
handling of its own. kmscon builds on it.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>plymouth-theme-openwrt-demo: add a demo theme for the ucode engine</title>
<updated>2026-09-26T09:21:06Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-25T23:44:28Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/video/commit/?id=6aca04f3341370caae5dbd116cb7ac3d15dcd3ad'/>
<id>urn:sha1:6aca04f3341370caae5dbd116cb7ac3d15dcd3ad</id>
<content type='text'>
A worked example of what the ucode splash plugin can do, and the
default theme once it is installed: nothing here is meant to be the
last word on how an OpenWrt boot should look.

The scene is a network graph, laid out afresh on every boot, drawn from
one ucode program and one SVG with no rendered frames anywhere. It has
two phases because the splash does. Before ubusd exists there is
nothing true to report, so the graph simply grows, a node every second
or so, for however long preinit takes. Once the bus is up the rest of
the graph completes at once, the row of pictograms is built from
/etc/rc.d/S*, and the packets that move afterwards are driven by real
ubus activity rather than a timer.

A stage is shown only for a service that is actually enabled and has a
pictogram, dark until the service's own ubus object appears, so a box
without blockd never shows storage. sysntpd has no object and reports
its sync through /etc/hotplug.d/ntp instead, which is the general way
for a service with a hook but no object to light its stage. Shutdown,
reboot and sysupgrade take the graph apart rather than building it.

About 5 ms a frame at any resolution from 640x480 to 3840x2160 on a
Rock 5B, against 33 ms at the default frame rate.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
</feed>
