]> Git Repo - J-linux.git/blobdiff - drivers/gpu/drm/scheduler/sched_main.c
Merge tag 'riscv-for-linus-6.4-mw1' of git://git.kernel.org/pub/scm/linux/kernel...
[J-linux.git] / drivers / gpu / drm / scheduler / sched_main.c
index 1e08cc5a17029e627cea89a314797573657cc8fe..fcd5bd7e5e8e969fbdbdc7c9b93d1fa5b0f8cdd9 100644 (file)
@@ -53,6 +53,7 @@
 
 #include <drm/drm_print.h>
 #include <drm/drm_gem.h>
+#include <drm/drm_syncobj.h>
 #include <drm/gpu_scheduler.h>
 #include <drm/spsc_queue.h>
 
@@ -719,6 +720,34 @@ int drm_sched_job_add_dependency(struct drm_sched_job *job,
 }
 EXPORT_SYMBOL(drm_sched_job_add_dependency);
 
+/**
+ * drm_sched_job_add_syncobj_dependency - adds a syncobj's fence as a job dependency
+ * @job: scheduler job to add the dependencies to
+ * @file: drm file private pointer
+ * @handle: syncobj handle to lookup
+ * @point: timeline point
+ *
+ * This adds the fence matching the given syncobj to @job.
+ *
+ * Returns:
+ * 0 on success, or an error on failing to expand the array.
+ */
+int drm_sched_job_add_syncobj_dependency(struct drm_sched_job *job,
+                                        struct drm_file *file,
+                                        u32 handle,
+                                        u32 point)
+{
+       struct dma_fence *fence;
+       int ret;
+
+       ret = drm_syncobj_find_fence(file, handle, point, 0, &fence);
+       if (ret)
+               return ret;
+
+       return drm_sched_job_add_dependency(job, fence);
+}
+EXPORT_SYMBOL(drm_sched_job_add_syncobj_dependency);
+
 /**
  * drm_sched_job_add_resv_dependencies - add all fences from the resv to the job
  * @job: scheduler job to add the dependencies to
@@ -1014,7 +1043,7 @@ static int drm_sched_main(void *param)
                drm_sched_fence_scheduled(s_fence);
 
                if (!IS_ERR_OR_NULL(fence)) {
-                       s_fence->parent = dma_fence_get(fence);
+                       drm_sched_fence_set_parent(s_fence, fence);
                        /* Drop for original kref_init of the fence */
                        dma_fence_put(fence);
 
This page took 0.031528 seconds and 4 git commands to generate.