<div style="text-align: center; display: grid; grid-template-columns: 1fr 1fr;">
<div> <!-- Left pane -->
<!-- Title -->

## Linux Kernel

- Communicates "directly" with hardware
    - Provides drivers
    - Initializes hardware
- Provides HAL
- Provides userspace APIs
    - Provides planes for userspace to draw to

</div>
<div> <!-- Right pane -->
<!-- Title -->

![Image.](media/overview.svg) <!-- .element: style="width: 50%;" -->

</div>

Notes:
Then there's the beloved Linux kernel.

Being that it is a kernel, one of it's main jobs is to communicate with the hardware. It does this through the use of drivers,
which provides the rest of the kernel with a stable interface.

Popular examples of these drivers are:
- i915 and xe, which are for Intel GPUs
- amdgpu, which is for AMD GPUs
- And nouveau, which is for NVIDIA.

There are quite a few more than this, but I'd be here all day if I talked about them.

The kernel also brings up the hardware to a usable state so that userspace can communicate with it.

Userspace can communicate with the graphics hardware using a Hardware Abstraction Layer, which in the kernel
is provided by the Direct Rendering Manager and the Kernel Mode Setting interface.


[comment]: # (!!!) <!--------------------------------------------------------->
