STRUCT DPU_CRTC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct dpu_crtc πŸ¦‹

okay so bestie, this is the Kernel API Manual entry for struct dpu_crtc β€” the virtualized CRTC data structure. no cap, it's basically the main-character struct for a virtualized CRTC, and every field is about to get its little moment. πŸ’…


🌸 NAME 🌸

struct dpu_crtc β€” virtualized CRTC data structure

✨ SYNOPSIS ✨

struct dpu_crtc {
    struct drm_crtc base;
    char name[DPU_CRTC_NAME_SIZE];
    struct drm_pending_vblank_event *event;
    u32 vsync_count;
    u32 vblank_cb_count;
    u64 play_count;
    ktime_t vblank_cb_time;
    bool enabled;
    struct list_head feature_list;
    struct list_head active_list;
    struct list_head dirty_list;
    struct list_head ad_dirty;
    struct list_head ad_active;
    atomic_t frame_pending;
    struct dpu_crtc_frame_event frame_events[DPU_CRTC_FRAME_EVENT_SIZE];
    struct list_head frame_event_list;
    spinlock_t spin_lock;
    struct completion frame_done_comp;
    spinlock_t event_lock;
    struct dpu_core_perf_params cur_perf;
    struct dpu_crtc_smmu_state_data smmu_state;
 };

🫢 Members 🫢

  • base β€” base drm crtc structure 🫢
  • name β€” ASCII description of this crtc
  • event β€” pointer to last received drm vblank event. If there is a pending vblank event, this will be non-null.
  • vsync_count β€” running count of received vsync events
  • vblank_cb_count β€” count of vblank callback since last reset
  • play_count β€” frame count between crtc enable and disable
  • vblank_cb_time β€” ktime at vblank count reset
  • enabled β€” whether the DPU CRTC is currently enabled. It's updated in the commit-thread, not at state-swap time (which is earlier), so it's safe to make decisions on during VBLANK on/off work. 🫑
  • feature_list β€” list of color processing features supported on a crtc
  • active_list β€” list of color processing features are active
  • dirty_list β€” list of color processing features are dirty
  • ad_dirty β€” list containing ad properties that are dirty
  • ad_active β€” list containing ad properties that are active
  • frame_pending β€” whether or not an update is pending
  • frame_events β€” static allocation of in-flight frame events
  • frame_event_list β€” available frame event list
  • spin_lock β€” spin lock for frame event, transaction status, etc...
  • frame_done_comp β€” for frame_event_done synchronization
  • event_lock β€” Spinlock around event handling code
  • cur_perf β€” current performance committed to clock/bandwidth driver

πŸ‘€ SEE ALSO πŸ‘€

go check these besties, iykyk:

  • Kernel file ./drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
  • enum dpu_crtc_client_type(9)
  • enum dpu_crtc_smmu_state(9)
  • enum dpu_crtc_smmu_state_transition_type(9)
  • struct dpu_crtc_smmu_state_data(9)
  • enum dpu_crtc_crc_source(9)
  • struct dpu_crtc_mixer(9)
  • struct dpu_crtc_frame_event(9)
  • struct dpu_crtc_state(9)
  • dpu_crtc_frame_pending(9)
  • dpu_crtc_get_client_type(9)

xoxo, bestie πŸ’… β€” source/version: ./drivers/gpu/drm/msm/disp/dpu1 Β· date: October 2026 πŸŽ€

πŸ“¦ where this page comes from