dpu_encoder_..._tx_complete(9)
π dpu_encoder_wait_for_tx_complete β the Kernel API Manual page, but make it make sense π
okay so bestie, you found the manual page for dpu_encoder_..._tx_complete(9) β yes the title got truncated, it's giving "my name is too long for the terminal", we love that for her. This page lives in the Kernel API Manual and honestly? She's short. She's sweet. She's about waiting. Let's get into it β¨
πΈ NAME πΈ
dpu_encoder_wait_for_tx_complete β literally just: wait for the encoder to transfer pixels to the panel. That's it. That's the whole job. She waits. π
π¦ SYNOPSIS π¦
int dpu_encoder_wait_for_tx_complete (struct drm_encoder *drm_enc );
no cap, that's the whole signature. one argument, one int coming back.
π ARGUMENTS π
drm_encβ encoder pointer. that's it, that's the whole description the original gave us, so we're not gonna invent lore, bestie π«Ά it's the encoder. the pointer to it. iconic behaviour honestly.
β¨ DESCRIPTION β¨
So the vibe here is: you're waiting on the hardware to transfer, like, all the pixels to the panel. Every last one. The full fit. π₯
And here's the cute part β physical encoders map this differently depending on their type, so the wait looks different depending on who's doing it:
- vid mode β
vsync_irq - cmd mode β
pp_done
iykyk. different encoder, different signal, same energy: wait. π
π RETURN π
0β success, slay, we're done waiting π-EWOULDBLOCKβ if it's already signaled. not an error-error, just a "girl, it already happened" moment π- error otherwise β any other error, bestie. that's the whole spec.
π SEE ALSO π
okay this is the part where the page goes absolutely feral with cross-references, so buckle up π§ this is a long list and we are not skipping a single one:
- Kernel file
./drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c enum dpu_enc_rc_events(9)struct dpu_encoder_virt(9)dpu_encoder_get_drm_fmt(9)dpu_encoder_needs_periph_flush(9)dpu_encoder_is_widebus_enabled(9)dpu_encoder_is_dsc_enabled(9)dpu_encoder_get_crc_values_cnt(9)dpu_encoder_setup_misr(9)dpu_encoder_get_crc(9)dpu_encoder_helper_report_irq_timeout(9)dpu_encoder_helper_wait_for_irq(9)dpu_encoder_get_vsync_count(9)dpu_encoder_get_linecount(9)dpu_encoder_helper_split_config(9)dpu_encoder_use_dsc_merge(9)dpu_encoder_get_dsc_config(9)dpu_encoder_prepare_wb_job(9)dpu_encoder_cleanup_wb_job(9)dpu_encoder_virt_runtime_resume(9)dpu_encoder_vblank_callback(9)dpu_encoder_underrun_callback(9)dpu_encoder_assign_crtc(9)dpu_encoder_toggle_vblank_for_crtc(9)dpu_encoder_frame_done_callback(9)_dpu_encoder_trigger_flush(9)_dpu_encoder_trigger_start(9)dpu_encoder_helper_trigger_start(9)_dpu_encoder_kickoff_phys(9)dpu_encoder_trigger_kickoff_pending(9)dpu_encoder_vsync_time(9)dpu_encoder_prepare_for_kickoff(9)dpu_encoder_is_valid_for_commit(9)dpu_encoder_start_frame_done_timer(9)dpu_encoder_kickoff(9)dpu_encoder_helper_phys_cleanup(9)dpu_encoder_helper_phys_setup_cdm(9)dpu_encoder_get_clones(9)dpu_encoder_init(9)dpu_encoder_wait_for_commit_done(9)dpu_encoder_get_intf_mode(9)dpu_encoder_helper_get_cwb_mask(9)dpu_encoder_helper_get_dsc(9)
that's forty-two entries plus the source file, and yes I counted, and yes I'm obsessed with whoever maintains this list ππ
also if you're ever typing a leading underscore in a function name, that's your cue that it's the internal-flavoured one. just saying, iykyk π
and that's the whole page, bestie!! π«Ά straight from ./drivers/gpu/drm/msm/disp/dpu1, dated October 2026, filed under dpu_encoder_..._tx_complete(9) β go forth and wait for those pixels, you absolute main character ππ
π¦ 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