[PATCH 3/4] drm/imx: add FB modifier support
Lucas Stach
l.stach at pengutronix.de
Thu May 4 08:59:16 UTC 2017
Am Mittwoch, den 03.05.2017, 18:15 +0100 schrieb Daniel Stone:
> Hi Lucas,
>
> On 3 May 2017 at 17:28, Lucas Stach <l.stach at pengutronix.de> wrote:
> > int available_pres = ipu_prg_max_active_channels();
> > int i;
> >
> > + /*
> > + * We are going over the planes in 2 passes: first we assign PREs to
> > + * planes with a tiling modifier, which need the PREs to resolve into
> > + * linear. Any failure to assign a PRE there is fatal. In the second
> > + * pass we try to assign PREs to linear FBs, to improve memory access
> > + * patterns for them. Failure at this point is non-fatal, as we can
> > + * scan out linear FBs without a PRE.
> > + */
> > for_each_plane_in_state(state, plane, plane_state, i) {
> > - struct ipu_plane_state *ipu_state =
> > - to_ipu_plane_state(plane_state);
> > - struct ipu_plane *ipu_plane = to_ipu_plane(plane);
> > + ipu_state = to_ipu_plane_state(plane_state);
> > + ipu_plane = to_ipu_plane(plane);
> > +
> > + if (!plane_state->fb) {
> > + ipu_state->use_pre = false;
> > + continue;
> > + }
> > +
> > + if (!(plane_state->fb->flags & DRM_MODE_FB_MODIFIERS) ||
> > + plane_state->fb->modifier == DRM_FORMAT_MOD_LINEAR)
> > + continue;
> > +
> > + if (!ipu_prg_present(ipu_plane->ipu) || !available_pres)
> > + return -EINVAL;
>
> What about planes which aren't present in this commit, but are still
> taking up a PRE unit? Will they have their PRE stolen, or am I missing
> something?
Yes, the plane->PRE assignment is configurable by matching different AXI
IDs in the PRG. So what's happening here is that we basically construct
a new assignment for each commit. Planes without a assigned PRE will
revert back to pass-through mode in the PRG on plane commit or plane
disable.
Regards,
Lucas
More information about the dri-devel
mailing list