Email or username:

Password:

Forgot your password?
Top-level
ity

@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/? 🧡)

5 comments
ity

@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/? 🧡)

ity

@BrodieOnLinux If the display server crashes without being able to clean up (and if it actually has cleanup code; For example wlroots-based compositors don't have cleanup code even on VT switch, so if you eg. use Cosmic or Anvil and Sway in two VTs you'll get windows stuck on the screen), the display controller simply persists the current state and keeps rendering the cursor framebuffer which is still in VRAM.

See also docs.kernel.org/gpu/drm-kms.ht

(3/? 🧡)

ity

@BrodieOnLinux
The framebuffer console (which is the text console terminal emulator in the kernel, fbcon.c), which uses the legacy framebuffer subsystem for rendering, which is then driven with a driver that implements the legacy framebuffer API on top of the DRM subsystem, doesn't have any cleanup code for planes, so this is what you get :P

We don't remember the name of the DRM compatibility driver on the top of our head, would have to check back.

(4/4 🧡)

@BrodieOnLinux
The framebuffer console (which is the text console terminal emulator in the kernel, fbcon.c), which uses the legacy framebuffer subsystem for rendering, which is then driven with a driver that implements the legacy framebuffer API on top of the DRM subsystem, doesn't have any cleanup code for planes, so this is what you get :P

π˜‹π˜ͺ𝘳𝘬

@ity @BrodieOnLinux So this is basically the β€œhardware cursor”?

ity

@dirk @BrodieOnLinux

Yea this is the "hardware cursor" that display servers talk about when they offer an option between a software cursor (compositing the cursor themselves into the primary plane) and hardware cursor (managing a cursor plane) :P

Go Up