On Fri, 27 Oct 2023 09:22:12 +0200 Christian König <christian.koenig@xxxxxxx> wrote: > > + > > + /** > > + * @update_job_credits: Called once the scheduler is considering this > > + * job for execution. > > + * > > + * Drivers may use this to update the job's submission credits, which is > > + * useful to e.g. deduct the number of native fences which have been > > + * signaled meanwhile. > > + * > > + * The callback must either return the new number of submission credits > > + * for the given job, or zero if no update is required. > > + * > > + * This callback is optional. > > + */ > > + u32 (*update_job_credits)(struct drm_sched_job *sched_job); > > Why do we need an extra callback for this? > > Just document that prepare_job() is allowed to reduce the number of > credits the job might need. ->prepare_job() is called only once if the returned fence is NULL, but we need this credit-update to happen every time a job is considered for execution by the scheduler. If you're saying this control-flow should be implemented with a dma_fence that's signaled when enough space is available, I fear Danilo's work won't be that useful to the PowerVR driver, unfortunately.