Le jeu. 20 avr. 2023 à 00:43, Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> a écrit : > > On 19/04/2023 17:41, Arnaud Vrac wrote: > > The dpu backend already handles applying alpha to the base stage, so we > > can use it to render the bottom plane in all cases. This allows mixing > > one additional plane with the hardware mixer. > > > > Signed-off-by: Arnaud Vrac <avrac@xxxxxxxxxx> > > This might require additional changes. First, for the STAGE_BASE pipe > in the source split mode (iow using two LMs) should programmed with > respect to the right LM's x offset (rather than usual left top-left LM). > See mdss_mdp_pipe_position_update(). Ok, I did test with 2 LMs and it seems to be working, I'll investigate. > > Also this might need some interaction with CTL_MIXER_BORDER_OUT being > set or not. If I remember correctly, if there bottom plane is not > fullscreen or if there are no planes at all, we should set > CTL_MIXER_BORDER_OUT (which takes STAGE_BASE) and start assigning them > from STAGE0. If not, we can use STAGE_BASE. I also tested with both fullscreen and non-fullscreen primary plane, and no plane. I'll check this. > > > --- > > drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > > index 14b5cfe306113..148921ed62f85 100644 > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > > @@ -881,7 +881,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, > > r_pipe->multirect_mode = DPU_SSPP_MULTIRECT_NONE; > > r_pipe->sspp = NULL; > > > > - pstate->stage = DPU_STAGE_0 + pstate->base.normalized_zpos; > > + pstate->stage = DPU_STAGE_BASE + pstate->base.normalized_zpos; > > if (pstate->stage >= pdpu->catalog->caps->max_mixer_blendstages) { > > DPU_ERROR("> %d plane stages assigned\n", > > pdpu->catalog->caps->max_mixer_blendstages - DPU_STAGE_0); > > > > -- > With best wishes > Dmitry >