drm_atomic_h..._for_vblanks(9)
β¨ drm_atomic_helper_wait_for_vblanks β¨
okay so bestie, welcome to the Kernel API Manual π this one's a DRM atomic helper, and it's literally just "hey, wait for the screen to actually refresh before you yeet the old buffers." iconic behaviour, honestly.
πΈ NAME πΈ
drm_atomic_helper_wait_for_vblanks β wait for vblank on CRTCs
like. the whole personality is in that one line tbh.
π SYNOPSIS π
void drm_atomic_helper_wait_for_vblanks (struct drm_device *dev , struct
drm_atomic_commit *state );
no return value, no drama, just vibes and blocking π
π¦ ARGUMENTS π¦
devβ the DRM device. the main character, the whole setup, the hardware of it all π«Άstateβ the atomic state object being committed. this is the moment, this is the commit, this is her β¨
π DESCRIPTION π
okay so picture this: you've just done the atomic commit, and now this helper waits for vblanks on all affected CRTCs. and yes, "all affected" means before you go cleaning up old framebuffers with drm_atomic_helper_cleanup_planes β order matters, bestie, do not skip ahead π
and the way it's optimized?? it will literally only wait on CRTCs where the framebuffers have actually changed. no wasted waits, no extra blocking. that's specifically so the legacy cursor and plane update use-case stays fast. main character energy for legacy support ngl π
also important: if your driver uses the nonblocking commit tracking support that gets initialized by callingdrm_atomic_helper_setup_commit, you should go look atdrm_atomic_helper_wait_for_flip_doneinstead. that's your function, this one's not it π (affectionately)
π₯ SEE ALSO π₯
Kernel file ./drivers/gpu/drm/drm_atomic_helper.c, and overview(9), plus the whole friend group:
drm_atomic_helper_check_modeset(9)drm_atomic_helper_check_wb_connector_state(9)drm_atomic_helper_check_plane_state(9)drm_atomic_helper_check_crtc_primary_plane(9)drm_atomic_helper_check_planes(9)drm_atomic_helper_check(9)drm_atomic_helper_commit_encoder_bridge_disable(9)drm_atomic_helper_commit_crtc_disable(9)drm_atomic_helper_commit_encoder_bridge_post_disable(9)drm_atomic_helper_update_legacy_modeset_state(9)drm_atomic_helper_calc_timestamping_constants(9)drm_atomic_helper_commit_crtc_set_mode(9)drm_atomic_helper_commit_modeset_disables(9)drm_atomic_helper_commit_writebacks(9)drm_atomic_helper_commit_encoder_bridge_pre_enable(9)drm_atomic_helper_commit_crtc_enable(9)drm_atomic_helper_commit_encoder_bridge_enable(9)drm_atomic_helper_commit_modeset_enables(9)drm_atomic_helper_wait_for_fences(9)drm_atomic_helper_wait_for_flip_done(9)drm_atomic_helper_commit_tail(9)drm_atomic_helper_commit_tail_rpm(9)drm_atomic_helper_async_check(9)drm_atomic_helper_async_commit(9)drm_atomic_helper_commit(9)implementing nonblocking commit(9)drm_atomic_helper_setup_commit(9)drm_atomic_helper_wait_for_dependencies(9)drm_atomic_helper_fake_vblank(9)drm_atomic_helper_commit_hw_done(9)drm_atomic_helper_commit_cleanup_done(9)drm_atomic_helper_prepare_planes(9)drm_atomic_helper_unprepare_planes(9)drm_atomic_helper_commit_planes(9)drm_atomic_helper_commit_planes_on_crtc(9)drm_atomic_helper_disable_planes_on_crtc(9)drm_atomic_helper_cleanup_planes(9)drm_atomic_helper_swap_state(9)drm_atomic_helper_update_plane(9)drm_atomic_helper_disable_plane(9)drm_atomic_helper_set_config(9)drm_atomic_helper_disable_all(9)drm_atomic_helper_reset_crtc(9)drm_atomic_helper_shutdown(9)drm_atomic_helper_duplicate_state(9)drm_atomic_helper_suspend(9)drm_atomic_helper_commit_duplicated_state(9)drm_atomic_helper_resume(9)drm_atomic_helper_page_flip(9)drm_atomic_helper_page_flip_target(9)drm_atomic_helper_bridge_propagate_bus_fmt(9)drm_atomic_helper_bridge_get_hdmi_output_bus_fmts(9)
like. that's the entire friend group chat right there, no cap π
kisses bestie, go wait for those vblanks π
this one lives at ./drivers/gpu/drm, dated October 2026 β that's the source and the version-of-record, and yes it's giving "filed under drivers/gpu/drm forever" πβ¨
π¦ 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