These interfaces can be cute to play with, but there's a reason that fbdev is deprecated on Linux - it's not a good interface outside toy examples. wscons may be more powerful, but I don't think it can be used to fully enable modern accelerated display devices, although do correct me if I'm wrong.
Despite some confusion in terminology, modern interfaces also operate on frame buffers, but with an API for switching them out atomically. Likewise, your display server (at least modern ones) just take your client window as a completed frame buffer, and mainly serve to let multiple applications all show their frame buffers without having to worry about what other applications are doing. Frame buffers all the way down, just with support for DMA, atomicity, fancy formats and color spaces, etc.
You can use the appropriate modern APIs to make a single, exclusive graphical application with all the benefits of modern display hardware easily enough. That is, after all, what your display server is. You just don't gain much - just a little bit of saved sideband IPC.
X11 makes it seem like a display server is a complicated thing that has to support drawing and what not, but with alternatives like Wayland, a full screen client buffer is handed off zero-copy from the client application tot he hardware without being looked at.
BTW if you want to learn how to put stuff on the screen without any display server on modern Linux, the kmscube example project is a great starting point: https://gitlab.freedesktop.org/mesa/kmscube
> wscons may be more powerful, but I don't think it can be used to fully enable modern accelerated display devices, although do correct me if I'm wrong.
As I mentioned in the text, I think that's the difference between WSDISPLAYIO_MODE_MAPPED and WSDISPLAYIO_MODE_DUMBFB. The former allows access to the hardware registers whereas the latter does not. Obviously, if you choose to use the former, then you are tied to a specific graphics driver. (But I'm not sure of this.)
And yes, agree, what I described is not great for performant results, but there is a lot you gain from the simplicity of this approach if all you want is toy around. I feel we lost a lot of this simplicity over the years, but it's "still there" if you don't care about optimal performance.
> I feel we lost a lot of this simplicity over the years, but it's "still there" if you don't care about optimal performance.
You lost some simplicity in going "straight to the metal", but at the same time it never really went straight to the metal because things have not actually worked that way for ages, nor do anyone really want to deal with exclusive access.
On the other hand, you can make a window with a shm buffer on your display server, giving you the same drawing simplicity of the old interfaces but without having to deal with fbdev, evdev, exclusive access, etc. - with that in mind, I do not think anything educational was lost.
No harm in playing around though.
Completely agreed on the feeling that we lost a lot by moving away from some of the simpler interface options. Particularly for introductory and play purposes. Specifically, even.