Re: [RFC PATCH v2 17/17] WIP: drm/tegra: Implement new UAPI (submit_handle_syncpts)
09.09.2020 11:26, Mikko Perttunen пишет: > On 9/9/20 4:24 AM, Dmitry Osipenko wrote: >> 09.09.2020 04:13, Dmitry Osipenko пишет: >> ... >>> How many sync points would use an average job? Maybe it should be better >>> to have the predefined array of sync points within the struct >>> drm_tegra_channel_submit? >>> >> >> The same question regarding the commands. >> >> Wouldn't it be a good idea to make both usrptr arrays of sync points and >> commands optional by having a small fixed-size buffers within >> drm_tegra_channel_submit? Then a majority of jobs would only need to >> copy the gather data from userspace. >> > > Sure, I'll look into it. For syncpoints, it would be usually 1 but > sometimes 2, so maybe make it 2. For commands, at least for downstream > it would typically be 2 (one wait and one gather). Any opinion from > grate-driver's point of view? Not sure if there is any recommendation > regarding the max size of IOCTL data. The Opentegra will need more than 2 commands. We'll need to take a look at what are the min/max/average numbers of commands are used by Opentegra since it combines multiple jobs into one and each job may have several wait commands. ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [RFC PATCH v2 17/17] WIP: drm/tegra: Implement new UAPI (submit_handle_syncpts)
On 9/9/20 4:24 AM, Dmitry Osipenko wrote: 09.09.2020 04:13, Dmitry Osipenko пишет: ... How many sync points would use an average job? Maybe it should be better to have the predefined array of sync points within the struct drm_tegra_channel_submit? The same question regarding the commands. Wouldn't it be a good idea to make both usrptr arrays of sync points and commands optional by having a small fixed-size buffers within drm_tegra_channel_submit? Then a majority of jobs would only need to copy the gather data from userspace. Sure, I'll look into it. For syncpoints, it would be usually 1 but sometimes 2, so maybe make it 2. For commands, at least for downstream it would typically be 2 (one wait and one gather). Any opinion from grate-driver's point of view? Not sure if there is any recommendation regarding the max size of IOCTL data. Mikko ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [RFC PATCH v2 17/17] WIP: drm/tegra: Implement new UAPI (submit_handle_syncpts)
05.09.2020 13:34, Mikko Perttunen пишет: > +int tegra_drm_ioctl_channel_submit(struct drm_device *drm, void *data, > +struct drm_file *file) > +{ > + struct tegra_drm_file *fpriv = file->driver_priv; > + struct drm_tegra_channel_submit *args = data; > + struct drm_tegra_submit_syncpt_incr incr; > + struct tegra_drm_job_data *job_data; > + struct ww_acquire_ctx acquire_ctx; > + struct tegra_drm_channel_ctx *ctx; > + struct host1x_job *job; > + struct gather_bo *bo; > + u32 i; > + int err; > + > + if (args->reserved[0] || args->reserved[1] || args->reserved[2] || > + args->reserved[3]) > + return -EINVAL; > + > + ctx = tegra_drm_channel_ctx_lock(fpriv, args->channel_ctx); > + if (!ctx) > + return -EINVAL; > + > + err = submit_copy_gather_data(drm, &bo, args); > + if (err) > + goto unlock; > + > + job_data = kzalloc(sizeof(*job_data), GFP_KERNEL); > + if (!job_data) { > + err = -ENOMEM; > + goto put_bo; > + } > + > + err = submit_process_bufs(drm, bo, job_data, ctx, args, &acquire_ctx); > + if (err) > + goto free_job_data; > + > + err = submit_create_job(drm, &job, bo, ctx, args, file); > + if (err) > + goto free_job_data; > + > + err = submit_handle_syncpts(drm, job, &incr, args); > + if (err) > + goto put_job; How many sync points would use an average job? Maybe it should be better to have the predefined array of sync points within the struct drm_tegra_channel_submit? ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [RFC PATCH v2 17/17] WIP: drm/tegra: Implement new UAPI (submit_handle_syncpts)
09.09.2020 04:13, Dmitry Osipenko пишет: ... > How many sync points would use an average job? Maybe it should be better > to have the predefined array of sync points within the struct > drm_tegra_channel_submit? > The same question regarding the commands. Wouldn't it be a good idea to make both usrptr arrays of sync points and commands optional by having a small fixed-size buffers within drm_tegra_channel_submit? Then a majority of jobs would only need to copy the gather data from userspace. ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel