i915_deps.h (1218B)
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 11struct ttm_operation_ctx; 12struct dma_fence; 13struct 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 */ 24struct 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 32void i915_deps_init(struct i915_deps *deps, gfp_t gfp); 33 34void i915_deps_fini(struct i915_deps *deps); 35 36int i915_deps_add_dependency(struct i915_deps *deps, 37 struct dma_fence *fence, 38 const struct ttm_operation_ctx *ctx); 39 40int i915_deps_add_resv(struct i915_deps *deps, struct dma_resv *resv, 41 const struct ttm_operation_ctx *ctx); 42 43int i915_deps_sync(const struct i915_deps *deps, 44 const struct ttm_operation_ctx *ctx); 45#endif