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

Eric Anholt eric at anholt.net
Wed Mar 13 16:09:23 UTC 2019


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?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20190313/ae75bbe1/attachment.sig>


More information about the dri-devel mailing list