| /* SPDX-License-Identifier: MIT */ | |
| /* | |
| * Copyright © 2021 Intel Corporation | |
| */ | |
| #ifndef _XE_SYNC_H_ | |
| #define _XE_SYNC_H_ | |
| #include "xe_sync_types.h" | |
| struct drm_syncobj; | |
| struct xe_device; | |
| struct xe_exec_queue; | |
| struct xe_file; | |
| struct xe_sched_job; | |
| struct xe_vm; | |
| #define SYNC_PARSE_FLAG_EXEC BIT(0) | |
| #define SYNC_PARSE_FLAG_LR_MODE BIT(1) | |
| #define SYNC_PARSE_FLAG_DISALLOW_USER_FENCE BIT(2) | |
| int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef, | |
| struct xe_sync_entry *sync, | |
| struct drm_xe_sync __user *sync_user, | |
| struct drm_syncobj *ufence_syncobj, | |
| u64 ufence_timeline_value, | |
| unsigned int flags); | |
| int xe_sync_entry_add_deps(struct xe_sync_entry *sync, | |
| struct xe_sched_job *job); | |
| void xe_sync_entry_signal(struct xe_sync_entry *sync, | |
| struct dma_fence *fence); | |
| int xe_sync_entry_wait(struct xe_sync_entry *sync); | |
| bool xe_sync_needs_wait(struct xe_sync_entry *sync); | |
| void xe_sync_entry_cleanup(struct xe_sync_entry *sync); | |
| struct dma_fence * | |
| xe_sync_in_fence_get(struct xe_sync_entry *sync, int num_sync, | |
| struct xe_exec_queue *q, struct xe_vm *vm); | |
| static inline bool xe_sync_is_ufence(struct xe_sync_entry *sync) | |
| { | |
| return !!sync->ufence; | |
| } | |
| struct xe_user_fence *__xe_sync_ufence_get(struct xe_user_fence *ufence); | |
| struct xe_user_fence *xe_sync_ufence_get(struct xe_sync_entry *sync); | |
| void xe_sync_ufence_put(struct xe_user_fence *ufence); | |
| int xe_sync_ufence_get_status(struct xe_user_fence *ufence); | |
| #endif |