dcn32_assign_subvp_pipe(9)
β¨ dcn32_assign_subvp_pipe β¨
okay bestie, so this is a page from the Kernel API Manual β it's all about dcn32_assign_subvp_pipe, the function that decides which pipe gets to use Sub-VP π
πΈ SYNOPSIS πΈ
bool dcn32_assign_subvp_pipe (struct dc *dc , struct dc_state *context ,
unsigned int *index );
like, it returns a bool, takes a dc, a context, and an index β that's the whole squad right there π«Ά
π ARGUMENTS π
dcβ the current dc state, i.e. what's happening right now bestiecontextβ the new dc state, the glow-up we're considering β¨indexβ[out]parameter! it hands you back the dc pipe index for the pipe that got chosen to have phantom pipes assigned π
π¦ DESCRIPTION π¦
so here's the vibe check π β we only even enter this function if we're Sub-VP capable (translation: enough pipes are available) and regular P-State switching (that's VACTIVE/VBLANK, iykyk) is not supported. OR we're in there because we're forcing SubVP P-State switching on the current config. either way, we're in it now π₯
the rule, no cap: the number of pipes used for the chosen surface has to be less than or equal to the number of free pipes available. that's non-negotiable, fr fr π§
in general? we pick surfaces with the longest frame time first β that's better for SubVP + VBLANK, periodt π
but for the multi-display cases, ActiveDRAMClockChangeMargin lowkey doesn't give us enough info on its own to figure out which one should be the SubVP pipe π we need a way to determine if a pipe / plane doesn't support MCLK switching naturally (like ACTIVE or VBLANK) β that's the missing piece, and it's giving unresolved plotline ngl π
β RETURN β
Trueβ slay π a valid pipe assignment was found for Sub-VPFalseβ nope π no valid assignment for you
π SEE ALSO π
the source file itself lives at ./drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c β like, that's the whole address bestie π
and here's the whole friend group, all of them iconic, all of them (9):
dcn32_helper_populate_phantom_dlg_params(9)dcn32_set_phantom_stream_timing(9)dcn32_get_num_free_pipes(9)dcn32_enough_pipes_for_subvp(9)subvp_subvp_schedulable(9)subvp_drr_schedulable(9)subvp_vblank_schedulable(9)subvp_subvp_admissable(9)subvp_validate_static_schedulability(9)dcn32_allow_subvp_high_refresh_rate(9)dcn32_determine_max_vratio_prefetch(9)dcn32_assign_fpo_vactive_candidate(9)dcn32_find_vactive_pipe(9)
and that's the whole page, bestie π«Ά this one came out of ./drivers/gpu/drm/amd/display/... with a date stamp of October 2026, served up hot from the Kernel API Manual β go read the other dcn32_* pages, they're literally so good, mwah ππ
π¦ 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