drm_crtc_send_vblank_event(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ drm_crtc_send_vblank_event(9) ✨

okay bestie, so this is a page from the Kernel API Manual β€” yes, the actual kernel docs, we're being fancy today πŸ’… β€” and it's all about drm_crtc_send_vblank_event, which is literally the helper that sends a vblank event after a pageflip. no cap, that's the whole vibe. πŸ¦‹


🌸 NAME 🌸

drm_crtc_send_vblank_event β€” the helper that sends your vblank event after a pageflip. it's giving "final step of the flip" energy ✨


πŸŽ€ SYNOPSIS πŸŽ€

void drm_crtc_send_vblank_event (struct drm_crtc *crtc , struct
       drm_pending_vblank_event *e );

like, it returns void. nothing back. it just does the thing and dips. iconic behavior honestly πŸ‘‘


πŸ’– ARGUMENTS πŸ’–

  • crtc β€” the source CRTC of the vblank event. aka the CRTC this whole event is coming from, main character of the operation 🌈
  • e β€” the event to send. this is the actual vblank event that's gonna get yeeted off to userspace 🫢

πŸ¦‹ DESCRIPTION πŸ¦‹

so what does it actually do? it updates the sequence # and the timestamp on the event for the most recently processed vblank, and then sends it to userspace. that's it. that's the job. and it ate πŸ’…

⚠️ okay important: the caller must hold the event lock. not optional, not a suggestion, hold the lock bestie πŸ”’

also, if you're in one of those "certain situations" and you're wondering if there's a different helper β€” yes queen, check out drm_crtc_arm_vblank_event πŸ™ˆ it's the helper you can use in certain situations, especially to send out events for atomic commit operations. so like, atomic commit girlies, that's your girl πŸ’œ


πŸ”₯ SEE ALSO πŸ”₯

bestie, this list is LONG, but we don't skip. every single one, in order, no cap:

Kernel file ./drivers/gpu/drm/drm_vblank.c vblank handling(9), drm_crtc_accurate_vblank_count(9), drm_vblank_init(9), drm_dev_has_vblank(9), drm_crtc_vblank_waitqueue(9), drm_calc_timestamping_constants(9), drm_crtc_vblank_helper_get_vblank_timestamp_internal(9), drm_crtc_vblank_helper_get_vblank_timestamp(9), drm_crtc_get_last_vbltimestamp(9), drm_crtc_vblank_count(9), drm_vblank_count_and_time(9), drm_crtc_vblank_count_and_time(9), drm_crtc_next_vblank_start(9), drm_crtc_arm_vblank_event(9), drm_crtc_vblank_get(9), drm_crtc_vblank_put(9), drm_crtc_wait_one_vblank(9), drm_crtc_vblank_off(9), drm_crtc_vblank_reset(9), drm_crtc_set_max_vblank_count(9), drm_crtc_vblank_on_config(9), drm_crtc_vblank_on(9), drm_crtc_vblank_restore(9), drm_handle_vblank(9), drm_crtc_handle_vblank(9), drm_crtc_vblank_start_timer(9), drm_crtc_vblank_cancel_timer(9), drm_crtc_vblank_get_vblank_timeout(9)

like I said. a whole friend group. go say hi to all of them 🧚


and that's the page, bestie!! πŸŽ€ this little writeup lives in ./drivers/gpu/drm and the doc fairies stamped it October 2026 β€” so yeah, it's dated, but it's still serving. mwah, go flip some pages πŸ’–βœ¨

πŸ“¦ where this page comes from