[RFC PATCH] drm/panfrost: Add initial panfrost driver

Rob Herring robh at kernel.org
Wed Mar 13 17:58:53 UTC 2019


On Wed, Mar 13, 2019 at 11:09 AM Eric Anholt <eric at anholt.net> wrote:
>
> Rob Herring <robh at kernel.org> writes:
>
> > On Fri, Mar 8, 2019 at 10:29 AM Eric Anholt <eric at anholt.net> wrote:
> >>
> >> Rob Herring <robh at kernel.org> writes:
> >>
> >> > From: "Marty E. Plummer" <hanetzer at startmail.com>
> >> >
> >> > This adds the initial driver for panfrost which supports Arm Mali
> >> > Midgard and Bifrost family of GPUs. Currently, only the T860 Midgard GPU
> >> > has been tested.
> >
> > [...]
> >
> >> It looks like you've got v3d's silliness with the fences -- we reserve a
> >> shared slot, then use excl only anyway.  For v3d I'm planning on moving
> >> to just excl -- only one of my entrypoints has info on write vs
> >> read-only, and I don't know of a usecase where having multiple read-only
> >> consumers of a shared buffer simultaneously matters.
> >>
> >> More importantly, I think you also have my bug of not doing implicit
> >> synchronization on buffers, which will break X11 rendering
> >> sometimes. X11's GL requirements are that previously-submitted rendering
> >> by the client fd will execute before X11's rendering on its fd to the
> >> same buffers.  If you're running a single client, X11's copies are cheap
> >> enough that it'll probably work out most of the time.
> >
> > Is there a fix for this? I didn't find anything that looked like one.
> >
> >>
> >> > --- /dev/null
> >> > +++ b/include/uapi/drm/panfrost_drm.h
> >>
> >> > +#define DRM_IOCTL_PANFROST_SUBMIT            DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
> >> > +#define DRM_IOCTL_PANFROST_WAIT_BO           DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)
> >> > +#define DRM_IOCTL_PANFROST_CREATE_BO         DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_CREATE_BO, struct drm_panfrost_create_bo)
> >> > +#define DRM_IOCTL_PANFROST_MMAP_BO           DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MMAP_BO, struct drm_panfrost_mmap_bo)
> >> > +#define DRM_IOCTL_PANFROST_GET_PARAM         DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_PARAM, struct drm_panfrost_get_param)
> >> > +#define DRM_IOCTL_PANFROST_GET_BO_OFFSET     DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_BO_OFFSET, struct drm_panfrost_get_bo_offset)
> >>
> >> SUBMIT and WAIT_BO might be IOR instead of IOWR
> >
> > Huh? Perhaps WAIT_BO should be IOW as we don't update the timeout
> > being absolute, but both have input parameters and SUBMIT has output
> > params.
>
> Sorry, IOW was what I meant.  I'm not seeing the output param of SUBMIT
> -- are you thinking of how the syncobj gets updated?

Yeah, I was assuming out_sync was set on output, but now that I
actually look at it I see that's not the case as only the object is
updated.

Rob


More information about the dri-devel mailing list