Since it's starting to be used outside the i915 TTM move code, move it to a separate set of files. v2: - Update the documentation. v4: - Rebase. Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20211221200050.436316-4-thomas.hellstrom@linux.intel.com
46 lines
1.2 KiB
C
46 lines
1.2 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2021 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _I915_DEPS_H_
|
|
#define _I915_DEPS_H_
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct ttm_operation_ctx;
|
|
struct dma_fence;
|
|
struct dma_resv;
|
|
|
|
/**
|
|
* struct i915_deps - Collect dependencies into a single dma-fence
|
|
* @single: Storage for pointer if the collection is a single fence.
|
|
* @fences: Allocated array of fence pointers if more than a single fence;
|
|
* otherwise points to the address of @single.
|
|
* @num_deps: Current number of dependency fences.
|
|
* @fences_size: Size of the @fences array in number of pointers.
|
|
* @gfp: Allocation mode.
|
|
*/
|
|
struct i915_deps {
|
|
struct dma_fence *single;
|
|
struct dma_fence **fences;
|
|
unsigned int num_deps;
|
|
unsigned int fences_size;
|
|
gfp_t gfp;
|
|
};
|
|
|
|
void i915_deps_init(struct i915_deps *deps, gfp_t gfp);
|
|
|
|
void i915_deps_fini(struct i915_deps *deps);
|
|
|
|
int i915_deps_add_dependency(struct i915_deps *deps,
|
|
struct dma_fence *fence,
|
|
const struct ttm_operation_ctx *ctx);
|
|
|
|
int i915_deps_add_resv(struct i915_deps *deps, struct dma_resv *resv,
|
|
const struct ttm_operation_ctx *ctx);
|
|
|
|
int i915_deps_sync(const struct i915_deps *deps,
|
|
const struct ttm_operation_ctx *ctx);
|
|
#endif
|