DRM_MODE_PAGE_FLIP_EVENT(9)
π 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_IDproperty.
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.hoverview(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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms