drm_atomic_..._plane_state(9)
π NAME π
drm_atomic_helper_check_plane_state β bestie, this is the vibe check for your plane state β¨
So like, you know how drm_atomic_..._plane_state(9) lives in the Kernel API Manual? Yeah. That's her. That's the page. POV: you're a DRM driver dev and you just want to know if your plane update is valid before you commit to it. Iconic. Let's go π
πΈ SYNOPSIS πΈ
int drm_atomic_helper_check_plane_state (struct drm_plane_state
*plane_state , const struct drm_crtc_state *crtc_state , int min_scale ,
int max_scale , bool can_position , bool can_update_disabled );
Not me dropping the whole signature like it's a fit pic πΈ β copy it exactly, no edits, iykyk.
π¦ ARGUMENTS π¦
plane_stateβ the plane state you're checking, aka the main character of this whole function πcrtc_stateβ the CRTC state you're checking it against. Gotta make sure they're compatible, no cap.min_scaleβ the minimum src:dest scaling factor, expressed in 16.16 fixed point. Yes bestie, fixed point, we love a bit-shifty queen π₯max_scaleβ the maximum src:dest scaling factor, also in 16.16 fixed point. Respect the ceiling fr fr.can_positionβ is it even legal to position the plane so it doesn't cover the entire CRTC? Like, is she allowed to be off to the side? This will generally only befalsefor primary planes π (primary planes are the ones who have to cover the whole thing, sorry queen)can_update_disabledβ can the plane be updated while the CRTC is disabled? That's the question. That's the whole question π
β¨ DESCRIPTION β¨
Okay so what does she actually do? She checks that a desired plane update is valid β a literal vibe check on your update before it hits the floor β and she also updates various bits of derived state for you. Clipped coordinates, etc. The little details. The garnish. π
Now here's the part for the drivers who like to do it themselves: even if you provide your own plane handling rather than using the helper-provided implementations, you may still wish to call this function. Why? To avoid duplication of error checking code, bestie. Don't rewrite the same checks by hand. That's not main character energy, that's just wasted effort. Reuse the helper. Slay. π
β RETURN β
- Zero if the update appears valid π«Ά
- Error code on failure π
That's it. Binary. She either eats or she doesn't.
π SEE ALSO π
Buckle up bestie, this list is LONG and we are NOT skipping a single one. Every single one of these is getting her moment π
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_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_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 I said. LONG. But every single one showed up, because we don't do half-finished lists here π§
Heads up bestie: this page is literally just the check function β she validates and massages derived state, she doesn't commit anything. Don't go thinking the update already happened just because she returned 0. Look at the SEE ALSO crew for the commit-side stuff π
Okay that's the page!! Sourced from ./drivers/gpu/drm, dated October 2026, and filed under the manual name drm_atomic_..._plane_state(9). Mwah π Go validate those plane states, bestie β you're gonna eat π«Άβ¨
π¦ 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