xref: /openbsd-src/sys/dev/pci/drm/i915/gt/intel_renderstate.h (revision 5ca02815211fc20fa71222bf4e6148b043e505b3)
1*5ca02815Sjsg /* SPDX-License-Identifier: MIT */
2c349dbc7Sjsg /*
3c349dbc7Sjsg  * Copyright © 2014 Intel Corporation
4c349dbc7Sjsg  */
5c349dbc7Sjsg 
6c349dbc7Sjsg #ifndef _INTEL_RENDERSTATE_H_
7c349dbc7Sjsg #define _INTEL_RENDERSTATE_H_
8c349dbc7Sjsg 
9c349dbc7Sjsg #include <linux/types.h>
10ad8b1aafSjsg #include "i915_gem.h"
11*5ca02815Sjsg #include "i915_gem_ww.h"
12c349dbc7Sjsg 
13c349dbc7Sjsg struct i915_request;
14ad8b1aafSjsg struct intel_context;
15c349dbc7Sjsg struct i915_vma;
16c349dbc7Sjsg 
17c349dbc7Sjsg struct intel_renderstate_rodata {
18c349dbc7Sjsg 	const u32 *reloc;
19c349dbc7Sjsg 	const u32 *batch;
20c349dbc7Sjsg 	const u32 batch_items;
21c349dbc7Sjsg };
22c349dbc7Sjsg 
23c349dbc7Sjsg #define RO_RENDERSTATE(_g)						\
24c349dbc7Sjsg 	const struct intel_renderstate_rodata gen ## _g ## _null_state = { \
25c349dbc7Sjsg 		.reloc = gen ## _g ## _null_state_relocs,		\
26c349dbc7Sjsg 		.batch = gen ## _g ## _null_state_batch,		\
27c349dbc7Sjsg 		.batch_items = sizeof(gen ## _g ## _null_state_batch)/4, \
28c349dbc7Sjsg 	}
29c349dbc7Sjsg 
30c349dbc7Sjsg extern const struct intel_renderstate_rodata gen6_null_state;
31c349dbc7Sjsg extern const struct intel_renderstate_rodata gen7_null_state;
32c349dbc7Sjsg extern const struct intel_renderstate_rodata gen8_null_state;
33c349dbc7Sjsg extern const struct intel_renderstate_rodata gen9_null_state;
34c349dbc7Sjsg 
35c349dbc7Sjsg struct intel_renderstate {
36ad8b1aafSjsg 	struct i915_gem_ww_ctx ww;
37c349dbc7Sjsg 	const struct intel_renderstate_rodata *rodata;
38c349dbc7Sjsg 	struct i915_vma *vma;
39c349dbc7Sjsg 	u32 batch_offset;
40c349dbc7Sjsg 	u32 batch_size;
41c349dbc7Sjsg 	u32 aux_offset;
42c349dbc7Sjsg 	u32 aux_size;
43c349dbc7Sjsg };
44c349dbc7Sjsg 
45c349dbc7Sjsg int intel_renderstate_init(struct intel_renderstate *so,
46ad8b1aafSjsg 			   struct intel_context *ce);
47c349dbc7Sjsg int intel_renderstate_emit(struct intel_renderstate *so,
48c349dbc7Sjsg 			   struct i915_request *rq);
49ad8b1aafSjsg void intel_renderstate_fini(struct intel_renderstate *so,
50ad8b1aafSjsg 			    struct intel_context *ce);
51c349dbc7Sjsg 
52c349dbc7Sjsg #endif /* _INTEL_RENDERSTATE_H_ */
53