@BrodieOnLinux The part of a graphics chip that handles the HDMI output, aka the display controller, has several registers containing pointers into GPU memory. It composites several "planes" on top of each other in order to create the final output, each plane has an input framebuffer pointer configured in the registers. There are three main types of planes usually present -> the primary plane, which contains the output of the display server, the overlay plane, which usually contains (1/? π§΅)
@BrodieOnLinux directly scanned-out surfaces (On Smithay-based compositors, this is usually the Wayland surface that's in focus), this allows eg. video playback with lower latency, and lastly, cursor planes, where you configure the location of the cursor with registers, and the bound framebuffer is the contents of the cursor plane. Linux lacks any kind of general DRM (Direct Rendering Manager) state management, so cleaning up into a known state is usually the job of a display server (2/? π§΅)