I&#x27;m not an expert, but here&#x27;s how I see it...<p>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.<p>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.<p>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.<p>These images from Wikipedia may help visualise what DRM is doing. Without DRM:
<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Direct_Rendering_Manager#&#x2F;media&#x2F;File:Access_to_video_card_without_DRM.svg" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Direct_Rendering_Manager#&#x2F;medi...</a><p>With DRM:
<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Direct_Rendering_Manager#&#x2F;media&#x2F;File:High_level_Overview_of_DRM.svg" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Direct_Rendering_Manager#&#x2F;medi...</a><p>As a side note, it&#x27;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&#x27;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.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Gallium3D" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Gallium3D</a><p>In terms of Wayland in particular, you may be interested in this:<p><a href="https:&#x2F;&#x2F;wayland.freedesktop.org&#x2F;architecture.html" rel="nofollow">https:&#x2F;&#x2F;wayland.freedesktop.org&#x2F;architecture.html</a><p>Does this help?