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