drm_atomic_h...update_plane(9)
π drm_atomic_h...update_plane(9) β the Kernel API Manual, but make it make sense
okay so bestie, welcome to the kernel API manual for drm_atomic_h...update_plane(9). yes the name is abridged with the little ... and no, that's not me being lazy, that's literally how it's printed. iconic behaviour honestly. anyway, let's get into it β¨
πΈ NAME πΈ
drm_atomic_helper_update_plane β a helper for updating the primary plane, but make it atomic π«
π SYNOPSIS π
here's the whole thing, copy it exactly, don't you dare paraphrase:
int drm_atomic_helper_update_plane (struct drm_plane *plane , struct
drm_crtc *crtc , struct drm_framebuffer *fb , int crtc_x , int crtc_y ,
unsigned int crtc_w , unsigned int crtc_h , uint32_t src_x , uint32_t
src_y , uint32_t src_w , uint32_t src_h , struct drm_modeset_acquire_ctx
*ctx );
that's a whole lot of arguments, but it's giving "responsible function with a lot of friends" and honestly? we respect it π«Ά
β¨ ARGUMENTS β¨
every single one of them, in order, no skips, periodt:
planeβ the plane object you're updating. like, the thing itself π¦crtcβ the CRTC that owns the owning plane. yes, owning owning. that's what it says πfbβ the framebuffer you're flipping onto the plane π₯crtc_xβ the x offset of the primary plane on the CRTCcrtc_yβ the y offset of the primary plane on the CRTCcrtc_wβ the width of the primary plane rectangle on the CRTCcrtc_hβ the height of the primary plane rectangle on the CRTCsrc_xβ the x offset of the framebuffer, for panning πsrc_yβ the y offset of the framebuffer, for panning πsrc_wβ the width of the source rectangle in the framebuffersrc_hβ the height of the source rectangle in the framebufferctxβ the lock acquire context. the vibe check for your locks π
ngl that's a lot of numbers but they're all just "where" and "how big" and it eats every time π
π DESCRIPTION π
so what does it actually do? it provides a default plane update handler that uses the atomic driver interface β¨ that's it, that's the whole tea. it's the helper you reach for so you don't have to hand-roll the update path yourself. main character energy, lowkey β
π RETURN π
- zero on success π
- an error code on failure π (she's not always gonna slay, and that's okay)
π SEE ALSO π
buckle up bestie, this list is long and we are not skipping a single one, because every reference here is a whole era:
first up, the context one β it's literally Kernel file ./drivers/gpu/drm/drm_atomic_helper.c overview(9) π
then, in this exact order, iykyk:
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_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_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 a lot of friends and every one of them is invited to the group chat π but fr fr they're all relevant, don't @ me.
π‘ friendly reminder: the 9 in all of those is the manpage section, not a shoutout to the year 2009. stay safe out there π§
πΈ little sign-off πΈ
this gem lives under ./drivers/gpu/drm and the page is dated October 2026. so like, she's from the future and she's still slaying. periodt π
β¨
bye bestie, go update some planes atomically, you've 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