On Fri, May 23, 2025 at 10:02:03AM +0300, Abel Vesa wrote: > On 25-05-23 09:55:00, Abel Vesa wrote: > > On 25-04-30 15:00:51, Krzysztof Kozlowski wrote: > > > v12.0 DPU on SM8750 comes with 10-bit color alpha. Add register > > > differences and new implementations of setup_alpha_out(), > > > setup_border_color() and setup_blend_config(). > > > > > > Reviewed-by: Dmitry Baryshkov <dmitry.barysh...@oss.qualcomm.com> > > > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlow...@linaro.org> > > > > > > --- > > > > > > Changes in v4: > > > 1. Lowercase hex, use spaces for define indentation > > > 2. _dpu_crtc_setup_blend_cfg(): pass mdss_ver instead of ctl > > > > > > Changes in v3: > > > 1. New patch, split from previous big DPU v12.0. > > > --- > > > drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 19 ++++--- > > > drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c | 84 > > > +++++++++++++++++++++++++++++-- > > > 2 files changed, 94 insertions(+), 9 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > > > b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > > > index > > > a4b0fe0d9899b32141928f0b6a16503a49b3c27a..90f47fc15ee5708795701d78a1380f4ab01c1427 > > > 100644 > > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > > > @@ -320,14 +320,20 @@ static bool dpu_crtc_get_scanout_position(struct > > > drm_crtc *crtc, > > > } > > > > > > static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer, > > > - struct dpu_plane_state *pstate, const struct msm_format *format) > > > + struct dpu_plane_state *pstate, > > > + const struct msm_format *format, > > > + const struct dpu_mdss_version *mdss_ver) > > > { > > > struct dpu_hw_mixer *lm = mixer->hw_lm; > > > uint32_t blend_op; > > > - uint32_t fg_alpha, bg_alpha; > > > + uint32_t fg_alpha, bg_alpha, max_alpha; > > > > > > fg_alpha = pstate->base.alpha >> 8; > > > > For the 10-bit alpha, you need to shift here by 5 instead of 8. > > Typo. "6 instead of 8".
Granted there would be a next iteration of this patch, I'd suggest to modify _dpu_crtc_setup_blend_cfg() to always use 16-bit values and pass them down to LM's setup_blend_config() callback. Then LM can perform version-specific shifts, utilizing either 8 bits or 10 bits of alpha channel values. -- With best wishes Dmitry