You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
drm/sched: Add helper to check job dependencies
Lets isolate scheduler internals from drivers such as pvr which currently walks the dependency array to look for fences. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com> Cc: Christian König <christian.koenig@amd.com> Cc: Danilo Krummrich <dakr@redhat.com> Cc: Matthew Brost <matthew.brost@intel.com> Cc: Philipp Stanner <pstanner@redhat.com> Reviewed-by: Matt Coster <matt.coster@imgtec.com> Acked-by: Danilo Krummrich <dakr@kernel.org> Signed-off-by: Philipp Stanner <phasta@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20250113103341.43914-1-tvrtko.ursulin@igalia.com
This commit is contained in:
committed by
Mecid Urganci
parent
a42728cf5f
commit
b927576a1d
@@ -984,6 +984,29 @@ int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
|
||||
}
|
||||
EXPORT_SYMBOL(drm_sched_job_add_implicit_dependencies);
|
||||
|
||||
/**
|
||||
* drm_sched_job_has_dependency - check whether fence is the job's dependency
|
||||
* @job: scheduler job to check
|
||||
* @fence: fence to look for
|
||||
*
|
||||
* Returns:
|
||||
* True if @fence is found within the job's dependencies, or otherwise false.
|
||||
*/
|
||||
bool drm_sched_job_has_dependency(struct drm_sched_job *job,
|
||||
struct dma_fence *fence)
|
||||
{
|
||||
struct dma_fence *f;
|
||||
unsigned long index;
|
||||
|
||||
xa_for_each(&job->dependencies, index, f) {
|
||||
if (f == fence)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_sched_job_has_dependency);
|
||||
|
||||
/**
|
||||
* drm_sched_job_cleanup - clean up scheduler job resources
|
||||
* @job: scheduler job to clean up
|
||||
|
||||
@@ -562,7 +562,8 @@ int drm_sched_job_add_resv_dependencies(struct drm_sched_job *job,
|
||||
int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
|
||||
struct drm_gem_object *obj,
|
||||
bool write);
|
||||
|
||||
bool drm_sched_job_has_dependency(struct drm_sched_job *job,
|
||||
struct dma_fence *fence);
|
||||
|
||||
void drm_sched_entity_modify_sched(struct drm_sched_entity *entity,
|
||||
struct drm_gpu_scheduler **sched_list,
|
||||
|
||||
Reference in New Issue
Block a user