42 lines
1.3 KiB
Markdown
42 lines
1.3 KiB
Markdown
|
<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 -->
|
||
|
|
||
|
 <!-- .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]: # (!!!) <!--------------------------------------------------------->
|