at master 47 lines 1.4 kB view raw
1/* SPDX-License-Identifier: MIT */ 2/* 3 * Copyright © 2021 Intel Corporation 4 */ 5 6#ifndef _XE_SYNC_H_ 7#define _XE_SYNC_H_ 8 9#include "xe_sync_types.h" 10 11struct drm_syncobj; 12struct xe_device; 13struct xe_exec_queue; 14struct xe_file; 15struct xe_sched_job; 16struct xe_vm; 17 18#define SYNC_PARSE_FLAG_EXEC BIT(0) 19#define SYNC_PARSE_FLAG_LR_MODE BIT(1) 20#define SYNC_PARSE_FLAG_DISALLOW_USER_FENCE BIT(2) 21 22int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef, 23 struct xe_sync_entry *sync, 24 struct drm_xe_sync __user *sync_user, 25 struct drm_syncobj *ufence_syncobj, 26 u64 ufence_timeline_value, 27 unsigned int flags); 28int xe_sync_entry_add_deps(struct xe_sync_entry *sync, 29 struct xe_sched_job *job); 30void xe_sync_entry_signal(struct xe_sync_entry *sync, 31 struct dma_fence *fence); 32void xe_sync_entry_cleanup(struct xe_sync_entry *sync); 33struct dma_fence * 34xe_sync_in_fence_get(struct xe_sync_entry *sync, int num_sync, 35 struct xe_exec_queue *q, struct xe_vm *vm); 36 37static inline bool xe_sync_is_ufence(struct xe_sync_entry *sync) 38{ 39 return !!sync->ufence; 40} 41 42struct xe_user_fence *__xe_sync_ufence_get(struct xe_user_fence *ufence); 43struct xe_user_fence *xe_sync_ufence_get(struct xe_sync_entry *sync); 44void xe_sync_ufence_put(struct xe_user_fence *ufence); 45int xe_sync_ufence_get_status(struct xe_user_fence *ufence); 46 47#endif