[1]: https://ci.netsurf-browser.org/jenkins/job/docs-netsurf/doxy...
[1]: https://ci.netsurf-browser.org/jenkins/job/docs-netsurf/doxy...
One can use KMS directly, but at that point you're just implementing all the logic of a display server and might as well just use a small kiosk-style Wayland display server instead.
KMS is how you control the display hardware formally on FreeBSD and Linux. Other platforms will have their own APIs for doing this, but you are writing all the bits of a display server for that platform.
And, well, a small kiosk Wayland server is basically just KMS + libinput + a tiny IPC layer. All you save by doing this yourself is the last bit, but at the cost of having to deal with e.g. display modesetting and GPU buffer management.
The Linux fbdev subsystem is deprecated, but the fb devices will be emulated with DRM because they are useful.
But if you're doing that, then you've implemented a big portion of a display server. So... Just use one.
It could run in CGA, really