Message ID | 20210515225757.1989955-6-dmitry.baryshkov@linaro.org |
---|---|
State | New |
Headers | show |
Series | [v2,1/6] drm/msm/dpu: get DSPP blocks directly rather than through RM | expand |
Hi Dmitry, Le dim. 16 mai 2021 à 00:58, Dmitry Baryshkov <dmitry.baryshkov@linaro.org> a écrit : > > No code uses lm_max_width from resource manager, so drop it. I have a pending patch which uses this value to properly determine the number of LMs to use in the topology. Currently the code uses a hardcoded value of MAX_HDISPLAY_SPLIT (1080), but in reality I believe it should be the lm max width (typically 2560). This will avoid using two LMs to render resolutions like 1280x720 or 1920x1080. I haven't managed to make hdmi work yet on DPU (testing on MSM8998) so I'm not ready to send the patch yet, but it doesn't seem to trigger any error. -Arnaud > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 12 ------------ > drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 4 ---- > 2 files changed, 16 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c > index c36700a06ff2..ec4387ad1182 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c > @@ -88,18 +88,6 @@ int dpu_rm_init(struct dpu_rm *rm, > goto fail; > } > rm->mixer_blks[lm->id - LM_0] = &hw->base; > - > - if (!rm->lm_max_width) { > - rm->lm_max_width = lm->sblk->maxwidth; > - } else if (rm->lm_max_width != lm->sblk->maxwidth) { > - /* > - * Don't expect to have hw where lm max widths differ. > - * If found, take the min. > - */ > - DPU_ERROR("unsupported: lm maxwidth differs\n"); > - if (rm->lm_max_width > lm->sblk->maxwidth) > - rm->lm_max_width = lm->sblk->maxwidth; > - } > } > > for (i = 0; i < cat->ctl_count; i++) { > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h > index ee90b1233430..0c9113581d71 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h > @@ -17,14 +17,10 @@ struct dpu_global_state; > * struct dpu_rm - DPU dynamic hardware resource manager > * @mixer_blks: array of layer mixer hardware resources > * @ctl_blks: array of ctl hardware resources > - * @lm_max_width: cached layer mixer maximum width > - * @rm_lock: resource manager mutex > */ > struct dpu_rm { > struct dpu_hw_blk *mixer_blks[LM_MAX - LM_0]; > struct dpu_hw_blk *ctl_blks[CTL_MAX - CTL_0]; > - > - uint32_t lm_max_width; > }; > > struct dpu_kms; > -- > 2.30.2 > > _______________________________________________ > Freedreno mailing list > Freedreno@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/freedreno
On 16/05/2021 04:21, Arnaud Vrac wrote: > Hi Dmitry, > > Le dim. 16 mai 2021 à 00:58, Dmitry Baryshkov > <dmitry.baryshkov@linaro.org> a écrit : >> >> No code uses lm_max_width from resource manager, so drop it. > > I have a pending patch which uses this value to properly determine the > number of LMs to use in the topology. Currently the code uses a > hardcoded value of MAX_HDISPLAY_SPLIT (1080), but in reality I believe > it should be the lm max width (typically 2560). This will avoid using > two LMs to render resolutions like 1280x720 or 1920x1080. As a second thought, I think we better have this value in the hw_catalog itself rather than calculating it in the dpu_rm. WDYT? > > I haven't managed to make hdmi work yet on DPU (testing on MSM8998) so > I'm not ready to send the patch yet, but it doesn't seem to trigger > any error. > > -Arnaud > > >> >> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> >> --- >> drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 12 ------------ >> drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 4 ---- >> 2 files changed, 16 deletions(-) >> >> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c >> index c36700a06ff2..ec4387ad1182 100644 >> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c >> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c >> @@ -88,18 +88,6 @@ int dpu_rm_init(struct dpu_rm *rm, >> goto fail; >> } >> rm->mixer_blks[lm->id - LM_0] = &hw->base; >> - >> - if (!rm->lm_max_width) { >> - rm->lm_max_width = lm->sblk->maxwidth; >> - } else if (rm->lm_max_width != lm->sblk->maxwidth) { >> - /* >> - * Don't expect to have hw where lm max widths differ. >> - * If found, take the min. >> - */ >> - DPU_ERROR("unsupported: lm maxwidth differs\n"); >> - if (rm->lm_max_width > lm->sblk->maxwidth) >> - rm->lm_max_width = lm->sblk->maxwidth; >> - } >> } >> >> for (i = 0; i < cat->ctl_count; i++) { >> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h >> index ee90b1233430..0c9113581d71 100644 >> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h >> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h >> @@ -17,14 +17,10 @@ struct dpu_global_state; >> * struct dpu_rm - DPU dynamic hardware resource manager >> * @mixer_blks: array of layer mixer hardware resources >> * @ctl_blks: array of ctl hardware resources >> - * @lm_max_width: cached layer mixer maximum width >> - * @rm_lock: resource manager mutex >> */ >> struct dpu_rm { >> struct dpu_hw_blk *mixer_blks[LM_MAX - LM_0]; >> struct dpu_hw_blk *ctl_blks[CTL_MAX - CTL_0]; >> - >> - uint32_t lm_max_width; >> }; >> >> struct dpu_kms; >> -- >> 2.30.2 >> >> _______________________________________________ >> Freedreno mailing list >> Freedreno@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/freedreno
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c index c36700a06ff2..ec4387ad1182 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c @@ -88,18 +88,6 @@ int dpu_rm_init(struct dpu_rm *rm, goto fail; } rm->mixer_blks[lm->id - LM_0] = &hw->base; - - if (!rm->lm_max_width) { - rm->lm_max_width = lm->sblk->maxwidth; - } else if (rm->lm_max_width != lm->sblk->maxwidth) { - /* - * Don't expect to have hw where lm max widths differ. - * If found, take the min. - */ - DPU_ERROR("unsupported: lm maxwidth differs\n"); - if (rm->lm_max_width > lm->sblk->maxwidth) - rm->lm_max_width = lm->sblk->maxwidth; - } } for (i = 0; i < cat->ctl_count; i++) { diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h index ee90b1233430..0c9113581d71 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h @@ -17,14 +17,10 @@ struct dpu_global_state; * struct dpu_rm - DPU dynamic hardware resource manager * @mixer_blks: array of layer mixer hardware resources * @ctl_blks: array of ctl hardware resources - * @lm_max_width: cached layer mixer maximum width - * @rm_lock: resource manager mutex */ struct dpu_rm { struct dpu_hw_blk *mixer_blks[LM_MAX - LM_0]; struct dpu_hw_blk *ctl_blks[CTL_MAX - CTL_0]; - - uint32_t lm_max_width; }; struct dpu_kms;
No code uses lm_max_width from resource manager, so drop it. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> --- drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 12 ------------ drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 4 ---- 2 files changed, 16 deletions(-) -- 2.30.2