
Why No 2D Userspace API in Linux Direct Rendering Manager? - segfaultbuserr
https://blog.ffwll.ch/2018/08/no-2d-in-drm.html
======
segfaultbuserr
For me, I think it's one of the greatest unfortunate event in the age of
modern desktops.

In the late 1990s, on a Pentium MMX computer without a GPU, it was possible to
have a reasonably usable desktop by utilizing simple 2D operations: 256 ROPs,
line drawing, rectangle filling/copying, and mono-to-color expansion. They
were usually a subset of Direct2D specs, and implemented by the vast majority
of graphics chips, like NeoMagic or Trident.

As the processing power have greatly increased, today, it's almost impossible
to use these machines anymore - simply moving a window will put the CPU in
100% load. Because today's desktops use composite window manager, it's already
impossible to translate a window move to an exact RectCopy command.

Even if composite is not used (and ignoring all the complexity of modern
highly-abstracted GUI systems where you cannot say the boundary of a window is
a line), we still cannot accelerate it, because the entire 2D graphics stack
was simply thrown again, there's no standard 2D APIs for applications or
developers to use. X Server still has EXA, but it's again, is not a modern
framework, and it's not possible to run X without using root.

I have a little non-x86 laptop with a 2D blitter, the graphics is nearly
impossible to use, and things are getting worse and worse day-by-day. On the
other hand, if you port Windows 95's graphics stack on it, it should be
perfectly usable.

In the end, I think it's the unfortunate result of economics - sure, there are
still many uses of running GUIs/desktops with 2D blitters, but the benefits of
supporting it greatly exceeded the cost. A GPU is much cheaper.

