STRUCT DPU_HW_TEAR_CHECK(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… struct dpu_hw_tear_check(9) ๐Ÿ’…

okay bestie, welcome to the Kernel API Manual โ€” yes, that's the manual name, we're being fancy today ๐ŸŽ€ this page is about struct dpu_hw_tear_check, and it's lowkey an icon.


โœจ NAME โœจ

struct dpu_hw_tear_check โ€” a struct that literally just holds parameters for configuring the tear-effect module ๐Ÿฆ‹ and no, it doesn't do anything by itself, it's a vibe holder. It's the struct used to configure the tear-check logic, and that logic lives either in the ping-pong module or in the interface module. iykyk โœจ


๐ŸŒธ SYNOPSIS ๐ŸŒธ

here's the whole thing, character for character, no cap:

struct dpu_hw_tear_check {
    u32 vsync_count;
    u32 sync_cfg_height;
    u32 vsync_init_val;
    u32 sync_threshold_start;
    u32 sync_threshold_continue;
    u32 start_pos;
    u32 rd_ptr_irq;
    u8 hw_vsync_mode;
 };

look at her. seven u32s and one little u8 carrying the whole hw_vsync_mode situation. main character energy fr fr ๐Ÿ‘‘


๐Ÿซถ Members ๐Ÿซถ

okay so every field got a job and every job matters, let's go one by one ๐Ÿ’–

  • vsync_count โ€” the ratio of the MDP VSYNC clk freq (in Hz) to the refresh rate, and then all that gets divided by the no of lines. math girlie behavior, we respect it ๐Ÿงฎ
  • sync_cfg_height โ€” total vertical lines, and it's the display height minus 1. so like, display height - 1. don't forget the minus one bestie ๐Ÿ˜ญ
  • vsync_init_val โ€” the init value that the read pointer gets loaded with at the vsync edge. that's where it starts, that's where it vibes ๐ŸŒธ
  • sync_threshold_start โ€” the read pointer threshold start ROI, used for the write operation. ROI here is the threshold start region, not "return on investment" (though honestly same energy ๐Ÿ’…)
  • sync_threshold_continue โ€” the minimum number of lines the write pointer needs to be above the read pointer. minimum. lines. above. periodt โญ
  • start_pos โ€” the position from which the start_threshold value is added. yes, start_threshold with an underscore, that's what the page says, we copy exactly ๐ŸŽ€
  • rd_ptr_irq โ€” the read pointer line at which the interrupt has to be generated. when the pointer hits this line, it's interrupt o'clock ๐Ÿ”ฅ
  • hw_vsync_mode โ€” sync with the external frame sync input. that's the whole note. external. frame. sync. input. ๐ŸŒˆ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

  • the kernel file ./drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h โ€” go read it, it's literally right there ๐Ÿฆ‹
  • enum dpu_3d_blend_mode(9)
  • struct dpu_hw_fmt_layout(9)
  • struct dpu_mdss_color(9)
  • struct dpu_hw_pp_vsync_info(9)

go read them all, bestie, you'll be so smart ๐Ÿ’œ


๐Ÿ’€ real talk though: this page is a struct definition page โ€” nothing here is deprecated, dangerous, or undefined, it's just fields. but you do have to fill them correctly or the tear-check logic is gonna have a bad time. ๐Ÿ™ˆ

okay that's the whole page, mwah ๐Ÿ˜˜ this came from the kernel docs out of ./drivers/gpu/drm/msm/disp/dpu1, dated October 2026, and the manual calls her struct dpu_hw_tear_check(9) โ€” slay, bye ๐ŸŽ€โœจ๐Ÿ’–

๐Ÿ“ฆ where this page comes from