lkml.org 
[lkml]   [2020]   [May]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v3 020/105] drm/vc4: plane: Create overlays for any CRTC
    On Wed, May 27, 2020 at 8:49 AM Maxime Ripard <maxime@cerno.tech> wrote:
    >
    > Now that we have everything in place, we can now register all the overlay
    > planes that can be assigned to all the CRTCs.
    >
    > This has two side effects:
    >
    > - The number of overlay planes is reduced from 24 to 8. This is temporary
    > and will be increased again in the next patch.
    >
    > - The ID of the various planes is changed again, and we will now have all
    > the primary planes, then all the overlay planes and finally the cursor
    > planes. This shouldn't cause any issue since the ordering between
    > primary, overlay and cursor planes is preserved.
    >
    > Signed-off-by: Maxime Ripard <maxime@cerno.tech>

    Honestly, I'd squash this with the previous two patches, the
    individual refactors don't make much sense on their own or simplify
    this patch I think. Either way, patch 17-29 r-b.




    > ---
    > drivers/gpu/drm/vc4/vc4_plane.c | 35 +++++++++++++++++-----------------
    > 1 file changed, 18 insertions(+), 17 deletions(-)
    >
    > diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
    > index 824c188980b0..5335123ae2a0 100644
    > --- a/drivers/gpu/drm/vc4/vc4_plane.c
    > +++ b/drivers/gpu/drm/vc4/vc4_plane.c
    > @@ -1378,26 +1378,27 @@ int vc4_plane_create_additional_planes(struct drm_device *drm)
    > struct drm_crtc *crtc;
    > unsigned int i;
    >
    > - drm_for_each_crtc(crtc, drm) {
    > - /* Set up some arbitrary number of planes. We're not limited
    > - * by a set number of physical registers, just the space in
    > - * the HVS (16k) and how small an plane can be (28 bytes).
    > - * However, each plane we set up takes up some memory, and
    > - * increases the cost of looping over planes, which atomic
    > - * modesetting does quite a bit. As a result, we pick a
    > - * modest number of planes to expose, that should hopefully
    > - * still cover any sane usecase.
    > - */
    > - for (i = 0; i < 8; i++) {
    > - struct drm_plane *plane =
    > - vc4_plane_init(drm, DRM_PLANE_TYPE_OVERLAY);
    > + /* Set up some arbitrary number of planes. We're not limited
    > + * by a set number of physical registers, just the space in
    > + * the HVS (16k) and how small an plane can be (28 bytes).
    > + * However, each plane we set up takes up some memory, and
    > + * increases the cost of looping over planes, which atomic
    > + * modesetting does quite a bit. As a result, we pick a
    > + * modest number of planes to expose, that should hopefully
    > + * still cover any sane usecase.
    > + */
    > + for (i = 0; i < 8; i++) {
    > + struct drm_plane *plane =
    > + vc4_plane_init(drm, DRM_PLANE_TYPE_OVERLAY);
    >
    > - if (IS_ERR(plane))
    > - continue;
    > + if (IS_ERR(plane))
    > + continue;
    >
    > - plane->possible_crtcs = drm_crtc_mask(crtc);
    > - }
    > + plane->possible_crtcs =
    > + GENMASK(drm->mode_config.num_crtc - 1, 0);
    > + }
    >
    > + drm_for_each_crtc(crtc, drm) {
    > /* Set up the legacy cursor after overlay initialization,
    > * since we overlay planes on the CRTC in the order they were
    > * initialized.
    > --
    > git-series 0.9.1

    \
     
     \ /
      Last update: 2020-05-27 18:53    [W:4.166 / U:0.176 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site