STRUCT DPU_HW_SCALER3_CFG(9)
β¨ struct dpu_hw_scaler3_cfg(9) β¨
Hey bestie! Welcome to the struct dpu_hw_scaler3_cfg page from the Kernel API Manual π. This is the whole vibe for QSEEDv3 configuration β like, the main character struct that holds all the scaling settings for the DPU. Let's get into it, no cap π§.
πΈ NAME πΈ
struct dpu_hw_scaler3_cfg β QSEEDv3 configuration. That's it, that's the energy β¨.
π SYNOPSIS π
struct dpu_hw_scaler3_cfg {
u32 enable;
u32 dir_en;
int32_t init_phase_x[DPU_MAX_PLANES];
int32_t phase_step_x[DPU_MAX_PLANES];
int32_t init_phase_y[DPU_MAX_PLANES];
int32_t phase_step_y[DPU_MAX_PLANES];
u32 preload_x[DPU_MAX_PLANES];
u32 preload_y[DPU_MAX_PLANES];
u32 src_width[DPU_MAX_PLANES];
u32 src_height[DPU_MAX_PLANES];
u32 dst_width;
u32 dst_height;
u32 y_rgb_filter_cfg;
u32 uv_filter_cfg;
u32 alpha_filter_cfg;
u32 blend_cfg;
u32 lut_flag;
u32 dir_lut_idx;
u32 y_rgb_cir_lut_idx;
u32 uv_cir_lut_idx;
u32 y_rgb_sep_lut_idx;
u32 uv_sep_lut_idx;
u32 *dir_lut;
size_t dir_len;
u32 *cir_lut;
size_t cir_len;
u32 *sep_lut;
size_t sep_len;
struct dpu_hw_scaler3_de_cfg de;
u32 dir_weight;
};
π MEMBERS π
Okay so here's the whole squad β every single field explained, and yes we're going through all of them because details matter and we don't skip π«Ά.
π The Basics
enableβ the scaler enable switch. Lowkey the on/off button for the whole thing π₯.dir_enβ direction detection block enable. It's giving "do we detect direction or not" vibes π.
πΈ Phase Stuff (per-plane, because we're thorough)
init_phase_xβ horizontal initial phase.int32_tarray overDPU_MAX_PLANES, okurr π .phase_step_xβ horizontal phase step. Same array energy,int32_t[DPU_MAX_PLANES]π.init_phase_yβ vertical initial phase.int32_t[DPU_MAX_PLANES], yes bestie π.phase_step_yβ vertical phase step.int32_t[DPU_MAX_PLANES], slay β¨.
π¦ Preloads & Dimensions
preload_xβ horizontal preload value.u32[DPU_MAX_PLANES], iconic π.preload_yβ vertical preload value.u32[DPU_MAX_PLANES], periodt π.src_widthβ source width.u32[DPU_MAX_PLANES]β gotta know how wide the source is fr fr.src_heightβ source height.u32[DPU_MAX_PLANES]β and how tall, obviously π.dst_widthβ destination width. Just au32, no array, we're keeping it simple here π.dst_heightβ destination height. Also a plainu32, main character energy π.
π§ Filter Configs β The Aesthetic Choices
y_rgb_filter_cfgβ y/rgb plane filter configuration. This is how we're filtering the luma/color, iykyk π.uv_filter_cfgβ uv plane filter configuration. Chroma vibes only π.alpha_filter_cfgβ alpha filter configuration. For when transparency is the moment β¨.blend_cfgβ blend coefficients configuration. Mixing it up, literally π.
π₯ LUT Flags β The Big One
lut_flagβ scaler LUT update flags. Okay so this is a bitmask situation, and you know we have to list every bit:0x1β swap LUT bank0x2β update 2D filter LUT0x4β update y circular filter LUT0x8β update uv circular filter LUT0x10β update y separable filter LUT0x20β update uv separable filter LUT
Like, it's giving "I contain multitudes" π . No cap, these are the exact flags.
π«Ά LUT Indices β The Address Book
dir_lut_idxβ 2D filter LUT index. Where's the 2D LUT at? Right here π.y_rgb_cir_lut_idxβ y circular filter LUT index. Found it π―.uv_cir_lut_idxβ uv circular filter LUT index. Also found π.y_rgb_sep_lut_idxβ y circular filter LUT index. (Yes, the manpage says "circular" here too β we're not fixing it, we're just reporting it, bestie π.)uv_sep_lut_idxβ uv separable filter LUT index. Separable and slay πΈ.
π LUT Pointers & Lengths β The Actual Data
dir_lutβ pointer to 2D LUT.u32 *, it's just pointing at the good stuff π.dir_lenβ length for thedir_lut.size_t, because size matters π.cir_lutβ pointer to circular filter LUT.u32 *, circular and cute π.cir_lenβ length for thecir_lut.size_t, keeping it measured β¨.sep_lutβ pointer to separable filter LUT.u32 *, separable supremacy π.sep_lenβ length for thesep_lut.size_t, and that's that π.
π§ Detail Enhancer & Directional Weight
deβ detail enhancer configuration. It's astruct dpu_hw_scaler3_de_cfg, so you know it's got its own whole vibe going on π₯.dir_weightβ Directional weight.u32, the final touch, the je ne sais quoi π.
π SEE ALSO π
Like, go check these out, bestie β they're all connected and honestly iconic:
- Kernel file
./drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h struct dpu_hw_blk(9)struct dpu_hw_scaler3_de_cfg(9)struct dpu_drm_pix_ext_v1(9)struct dpu_drm_de_v1(9)struct dpu_drm_scaler_v2(9)struct dpu_hw_qos_cfg(9)
Okay that's the whole page, bestie! π This was brought to you by the source at ./drivers/gpu/drm/msm/disp/dpu1 and it's dated October 2026 β like, future vibes but make it kernel. Stay scaley β¨π
π«Ά.
π¦ 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