| 1 | /* SPDX-License-Identifier: MIT */ | 
|---|---|
| 2 | /* | 
| 3 | * Copyright © 2014-2018 Intel Corporation | 
| 4 | */ | 
| 5 | |
| 6 | #ifndef INTEL_GT_BUFFER_POOL_H | 
| 7 | #define INTEL_GT_BUFFER_POOL_H | 
| 8 | |
| 9 | #include <linux/types.h> | 
| 10 | |
| 11 | #include "i915_active.h" | 
| 12 | #include "intel_gt_buffer_pool_types.h" | 
| 13 | |
| 14 | struct intel_gt; | 
| 15 | struct i915_request; | 
| 16 | |
| 17 | struct intel_gt_buffer_pool_node * | 
| 18 | intel_gt_get_buffer_pool(struct intel_gt *gt, size_t size, | 
| 19 | enum i915_map_type type); | 
| 20 | |
| 21 | void intel_gt_buffer_pool_mark_used(struct intel_gt_buffer_pool_node *node); | 
| 22 | |
| 23 | static inline int | 
| 24 | intel_gt_buffer_pool_mark_active(struct intel_gt_buffer_pool_node *node, | 
| 25 | struct i915_request *rq) | 
| 26 | { | 
| 27 | /* did we call mark_used? */ | 
| 28 | GEM_WARN_ON(!node->pinned); | 
| 29 | |
| 30 | return i915_active_add_request(ref: &node->active, rq); | 
| 31 | } | 
| 32 | |
| 33 | static inline void | 
| 34 | intel_gt_buffer_pool_put(struct intel_gt_buffer_pool_node *node) | 
| 35 | { | 
| 36 | i915_active_release(ref: &node->active); | 
| 37 | } | 
| 38 | |
| 39 | void intel_gt_init_buffer_pool(struct intel_gt *gt); | 
| 40 | void intel_gt_flush_buffer_pool(struct intel_gt *gt); | 
| 41 | void intel_gt_fini_buffer_pool(struct intel_gt *gt); | 
| 42 | |
| 43 | #endif /* INTEL_GT_BUFFER_POOL_H */ | 
| 44 | 
