FRONTBUFFER TRACKING(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ frontbuffer tracking πŸ’…

ok so this is a page from the Kernel API Manual β€” get comfy bestie, we're talking about tracking the frontbuffer πŸ¦‹


🌸 NAME

frontbuffer tracking β€” the whole vibe of keeping tabs on the currently active frontbuffer ✨


πŸ’– DESCRIPTION

okay so, real talk: tons of features need us to track changes to the currently active frontbuffer β€” especially rendering that's targeted right at the frontbuffer πŸ‘‘

so to actually pull that off, we track frontbuffers using a bitmask for all possible frontbuffer slots through intel_frontbuffer_track. then the functions in this file get called in three iconic situations:

  • when the contents of the frontbuffer are invalidated,
  • when frontbuffer rendering has stopped again, so we flush out all the changes, and
  • when the frontbuffer is exchanged with a flip.

subsystems that are interested in frontbuffer changes (think PSR, FBC, DRRS πŸ‘€) should straight up put their callbacks into the relevant places and filter for the frontbuffer slots they're interested in. periodt πŸ’…


🧚 high level: the two flavors of powersaving 🌈

on a high level there are two types of powersaving features, and honestly they're giving very different main character energy:

πŸŽ€ type one: the special-cache girlies (FBC and PSR)

the first one works like a special cache (that's FBC and PSR) and they care about when they should stop caching and when to restart caching. the way you do this is by placing callbacks into the invalidate and the flush functions:

  • at invalidate, the caching must be stopped πŸ›‘
  • at flush time, it can be restarted πŸ”

and maybe they also need to know when the frontbuffer changes β€” like, when the hw doesn't initiate an invalidate and flush on its own β€” and you can achieve that by placing callbacks into the flip functions πŸ¦‹

⭐ type two: the busyness-only babes (e.g. DRRS)

the other type of display power saving feature only cares about busyness (DRRS is the moment here). in that case, all three β€” invalidate, flush and flip β€” indicate busyness πŸ”₯

⚠️ heads up: there is no direct way to detect idleness. the move instead is that an idle timer delayed work should be started from the flush and flip functions and cancelled as soon as busyness is detected. no cap, that's the whole trick πŸ™ˆ

πŸ‘‘ SEE ALSO


that's the whole page bestie, go be iconic with it πŸ«ΆπŸ’œ

sign-off kiss 😘 : this one lives at ./drivers/gpu/drm/i915/display and it's dated October 2026 β€” slay, see u then πŸŽ€β­

πŸ“¦ where this page comes from