Skip to content

Commit 51678bb

Browse files
Tvrtko UrsulinPhilipp Stanner
authored andcommitted
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 <[email protected]> Cc: Christian König <[email protected]> Cc: Danilo Krummrich <[email protected]> Cc: Matthew Brost <[email protected]> Cc: Philipp Stanner <[email protected]> Reviewed-by: Matt Coster <[email protected]> Acked-by: Danilo Krummrich <[email protected]> Signed-off-by: Philipp Stanner <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent e8941ac commit 51678bb

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

drivers/gpu/drm/scheduler/sched_main.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,29 @@ int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
984984
}
985985
EXPORT_SYMBOL(drm_sched_job_add_implicit_dependencies);
986986

987+
/**
988+
* drm_sched_job_has_dependency - check whether fence is the job's dependency
989+
* @job: scheduler job to check
990+
* @fence: fence to look for
991+
*
992+
* Returns:
993+
* True if @fence is found within the job's dependencies, or otherwise false.
994+
*/
995+
bool drm_sched_job_has_dependency(struct drm_sched_job *job,
996+
struct dma_fence *fence)
997+
{
998+
struct dma_fence *f;
999+
unsigned long index;
1000+
1001+
xa_for_each(&job->dependencies, index, f) {
1002+
if (f == fence)
1003+
return true;
1004+
}
1005+
1006+
return false;
1007+
}
1008+
EXPORT_SYMBOL(drm_sched_job_has_dependency);
1009+
9871010
/**
9881011
* drm_sched_job_cleanup - clean up scheduler job resources
9891012
* @job: scheduler job to clean up

include/drm/gpu_scheduler.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,8 @@ int drm_sched_job_add_resv_dependencies(struct drm_sched_job *job,
564564
int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
565565
struct drm_gem_object *obj,
566566
bool write);
567-
567+
bool drm_sched_job_has_dependency(struct drm_sched_job *job,
568+
struct dma_fence *fence);
568569

569570
void drm_sched_entity_modify_sched(struct drm_sched_entity *entity,
570571
struct drm_gpu_scheduler **sched_list,

0 commit comments

Comments
 (0)