DRM_MODE_PAGE_FLIP_EVENT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME πŸ’…

DRM_MODE_PAGE_FLIP_EVENT β€” and okay bestie, I need you to know that the NAME line here literally just says DRM_MODE_PAGE_FLIP_EVENT and then a dash and then nothing. No blurb, no teaser, no nothing. The flag is its own vibe. Main character energy, honestly. πŸŽ€


✨ SYNOPSIS ✨

DRM_MODE_PAGE_FLIP_EVENT

That's it. That's the whole synopsis. She's a flag, she doesn't need a whole signature to slay. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so here's what this flag actually does: you pass it when you want the kernel to send you back a vblank event β€” the struct in question is struct drm_event_vblank β€” and that event comes tagged with the type DRM_EVENT_FLIP_COMPLETE, which is the kernel's way of being like "hey the page-flip is done, you're welcome". πŸ’–

🌸 How it behaves with the atomic uAPI 🌸

When you use it with the atomic uAPI, the rule is one event per CRTC included in the atomic commit β€” so if you're committing multiple CRTCs, don't expect one tidy little event, expect a whole group chat. πŸ”₯

Now, when is a CRTC "included" in an atomic commit? Two ways:

  • one of its properties is set, or
  • a property is set on a connector or plane that's linked to that CRTC via the CRTC_ID property.

That's the whole club membership criteria, bestie. 🫢

⭐ The constraints, and yes they're real: at least one CRTC must be included. And every CRTC that gets pulled in has to be either previously powered on or newly powered on. In other words β€” a powered-off CRTC that stays off absolutely cannot be included in the atomic commit. Not allowed. Denied. Blocked. 🚫

🌈 SEE ALSO 🌈

Like, the whole friend group. No cap, here's the full list:

  • Kernel file ./include/uapi/drm/drm_mode.h overview(9)
  • struct drm_mode_modeinfo(9)
  • struct drm_mode_get_plane(9)
  • struct drm_mode_get_connector(9)
  • struct drm_mode_property_enum(9)
  • struct drm_mode_get_property(9)
  • struct drm_mode_fb_cmd2(9)
  • enum drm_colorop_type(9)
  • enum drm_colorop_lut3d_interpolation_type(9)
  • enum drm_colorop_lut1d_interpolation_type(9)
  • struct drm_plane_size_hint(9)
  • struct hdr_metadata_infoframe(9)
  • struct hdr_output_metadata(9)
  • DRM_MODE_PAGE_FLIP_ASYNC(9)
  • DRM_MODE_PAGE_FLIP_FLAGS(9)
  • struct drm_mode_create_dumb(9)
  • DRM_MODE_ATOMIC_TEST_ONLY(9)
  • DRM_MODE_ATOMIC_NONBLOCK(9)
  • DRM_MODE_ATOMIC_ALLOW_MODESET(9)
  • DRM_MODE_ATOMIC_FLAGS(9)
  • struct drm_mode_create_blob(9)
  • struct drm_mode_destroy_blob(9)
  • struct drm_mode_create_lease(9)
  • struct drm_mode_list_lessees(9)
  • struct drm_mode_get_lease(9)
  • struct drm_mode_revoke_lease(9)
  • struct drm_mode_rect(9)
  • struct drm_mode_closefb(9)

okay that's the whole page, ily, go flip some pages πŸ’œ

Oh and before I forget β€” this gorgeous little manual page lives under ./include/uapi/drm and it's dated October 2026. Periodt. πŸŽ€βœ¨

πŸ“¦ where this page comes from