DRM is a really unfortunate acronym here. It took me a while to figure out it refers to direct rendering manager.
DRM is a really unfortunate acronym here. It took me a while to figure out it refers to direct rendering manager.
It seems like there are many layers, and there aren't many good references that really explain it "from the beginning".
https://en.wikipedia.org/wiki/Direct_Rendering_Infrastructur...
I think the basic way to understand it all is that the decision was made to pull more of the graphics stack into the Linux kernel, and this has enabled thinner abstractions to be built on top for various purposes. For example, Wayland makes use of the underlying DRI infrastructure.
There are different ways to create GPU drivers for Linux. In order to make use of DRI, the GPU has to have a DRM driver. This DRM driver is specific to the GPU hardware.
The DRM is the interface that software can work with to make calls to the GPU. You could think of DRM as a way to have a standard interface for GPU calls, so other software will speak to this DRM layer, but the DRM driver will speak to the hardware, which is why the DRM driver needs to be device specific.
The DRM driver is the part of the GPU driver that sits in the kernel, there will also be a userland part of the GPU driver. I believe the part of the driver that gets used will depend on what the software is targetting. Wayland will target the kernel side, but games would work with the userland side.
These images from Wikipedia may help visualise what DRM is doing. Without DRM: https://en.wikipedia.org/wiki/Direct_Rendering_Manager#/medi...
With DRM: https://en.wikipedia.org/wiki/Direct_Rendering_Manager#/medi...
As a side note, it's possible for GPU vendors to create more generic GPU drivers by using Gallium3D. This also creates drivers that work with DRI, but GPU drivers don't need to use Gallium3D to use DRI. I would suggest thinking of Gallium3D as a set of reusable GPU driver components, you could code a driver using these reusable components, or you could code something bespoke.
https://en.wikipedia.org/wiki/Gallium3D
In terms of Wayland in particular, you may be interested in this:
https://wayland.freedesktop.org/architecture.html
Does this help?
In terms of Wayland, I would suspect that it isn't necessary to have anything vendor specific, the whole point of targeting an abstraction layer like the DRI is to eliminate the need to cater for differences in devices.
EGL is sort of a cross-platform spec for window managers to work with graphics cards.