1 | /* SPDX-License-Identifier: MIT */ |
2 | /* |
3 | * Copyright © 2021 Intel Corporation |
4 | */ |
5 | |
6 | #ifndef _I915_DEPS_H_ |
7 | #define _I915_DEPS_H_ |
8 | |
9 | #include <linux/types.h> |
10 | |
11 | struct ttm_operation_ctx; |
12 | struct dma_fence; |
13 | struct dma_resv; |
14 | |
15 | /** |
16 | * struct i915_deps - Collect dependencies into a single dma-fence |
17 | * @single: Storage for pointer if the collection is a single fence. |
18 | * @fences: Allocated array of fence pointers if more than a single fence; |
19 | * otherwise points to the address of @single. |
20 | * @num_deps: Current number of dependency fences. |
21 | * @fences_size: Size of the @fences array in number of pointers. |
22 | * @gfp: Allocation mode. |
23 | */ |
24 | struct i915_deps { |
25 | struct dma_fence *single; |
26 | struct dma_fence **fences; |
27 | unsigned int num_deps; |
28 | unsigned int fences_size; |
29 | gfp_t gfp; |
30 | }; |
31 | |
32 | void i915_deps_init(struct i915_deps *deps, gfp_t gfp); |
33 | |
34 | void i915_deps_fini(struct i915_deps *deps); |
35 | |
36 | int i915_deps_add_dependency(struct i915_deps *deps, |
37 | struct dma_fence *fence, |
38 | const struct ttm_operation_ctx *ctx); |
39 | |
40 | int i915_deps_add_resv(struct i915_deps *deps, struct dma_resv *resv, |
41 | const struct ttm_operation_ctx *ctx); |
42 | |
43 | int i915_deps_sync(const struct i915_deps *deps, |
44 | const struct ttm_operation_ctx *ctx); |
45 | #endif |
46 | |