drm_atomic_...t_for_fences(9)
π NAME π
okay so drm_atomic_helper_wait_for_fences β bestie, it literally waits for the fences stashed in the plane state. that's the whole vibe. no cap.
β¨ SYNOPSIS β¨
int drm_atomic_helper_wait_for_fences (struct drm_device *dev , struct
drm_atomic_commit *state , bool pre_swap );
π ARGUMENTS π
devβ the DRM device, aka the main character of this whole operation π«Άstateβ the atomic state object, and it's holding the old state structures, lowkey carrying baggagepre_swapβ if it's true, you get an interruptible wait andstateis the new state. otherwise,stateis the old state. pick a lane, bestie π
πΈ DESCRIPTION πΈ
so for implicit sync, the driver should fish the exclusive fence out from the incoming fb's and stash it in the drm_plane_state. iconic behaviour, honestly. this here gets called after drm_atomic_helper_swap_state, so it uses the current plane state β and it just uses the atomic state to find the changed planes. that's it, that's the job β¨
now, pre_swap exists because the point where we block for fences moves around depending on whether an atomic commit is blocking or non-blocking. it's giving "depends on the situation" energy:
- for a non-blocking commit, all the waiting needs to happen after
drm_atomic_helper_swap_stateis called - for blocking commits, we wanna wait before we do anything that can't be easily rolled back β that is, before we call
drm_atomic_helper_swap_stateπ
fr fr, order matters here. don't come for me if you get it backwards.
Returns zero if success, or < 0 if dma_fence_wait fails. slay when it's zero, sad butterfly when it's not π¦
π§ SEE ALSO π§
like, this function has so many friends, i'm obsessed. go read these next:
Kernel file ./drivers/gpu/drm/drm_atomic_helper.coverview(9)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_vblanks(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)
k byeee π«Ά this page lives in ./drivers/gpu/drm, it's from October 2026, and yes β it's the drm_atomic_...t_for_fences(9) page, Kernel API Manual edition. go wait for your fences, bestie, you got this π
π¦ 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