1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#ifndef I915_TIMELINE_H
26#define I915_TIMELINE_H
27
28#include <linux/lockdep.h>
29
30#include "i915_active.h"
31#include "i915_syncmap.h"
32#include "gt/intel_timeline_types.h"
33
34struct intel_timeline *
35intel_timeline_create(struct intel_gt *gt, struct i915_vma *global_hwsp);
36
37static inline struct intel_timeline *
38intel_timeline_get(struct intel_timeline *timeline)
39{
40 kref_get(&timeline->kref);
41 return timeline;
42}
43
44void __intel_timeline_free(struct kref *kref);
45static inline void intel_timeline_put(struct intel_timeline *timeline)
46{
47 kref_put(&timeline->kref, __intel_timeline_free);
48}
49
50static inline int __intel_timeline_sync_set(struct intel_timeline *tl,
51 u64 context, u32 seqno)
52{
53 return i915_syncmap_set(&tl->sync, context, seqno);
54}
55
56static inline int intel_timeline_sync_set(struct intel_timeline *tl,
57 const struct dma_fence *fence)
58{
59 return __intel_timeline_sync_set(tl, fence->context, fence->seqno);
60}
61
62static inline bool __intel_timeline_sync_is_later(struct intel_timeline *tl,
63 u64 context, u32 seqno)
64{
65 return i915_syncmap_is_later(&tl->sync, context, seqno);
66}
67
68static inline bool intel_timeline_sync_is_later(struct intel_timeline *tl,
69 const struct dma_fence *fence)
70{
71 return __intel_timeline_sync_is_later(tl, fence->context, fence->seqno);
72}
73
74int intel_timeline_pin(struct intel_timeline *tl);
75void intel_timeline_enter(struct intel_timeline *tl);
76int intel_timeline_get_seqno(struct intel_timeline *tl,
77 struct i915_request *rq,
78 u32 *seqno);
79void intel_timeline_exit(struct intel_timeline *tl);
80void intel_timeline_unpin(struct intel_timeline *tl);
81
82void intel_timeline_reset_seqno(const struct intel_timeline *tl);
83
84int intel_timeline_read_hwsp(struct i915_request *from,
85 struct i915_request *until,
86 u32 *hwsp_offset);
87
88void intel_gt_init_timelines(struct intel_gt *gt);
89void intel_gt_fini_timelines(struct intel_gt *gt);
90
91#endif
92