1 /*
2 * Copyright © 2024 Intel Corporation
3 * SPDX-License-Identifier: MIT
4 */
5
6 #ifndef EXECUTOR_H
7 #define EXECUTOR_H
8
9 #include <stdint.h>
10
11 #include "intel/dev/intel_device_info.h"
12 #include "intel/isl/isl.h"
13
14 typedef struct {
15 uint32_t size;
16 uint32_t handle;
17 void *map;
18 void *cursor;
19 uint64_t addr;
20 } executor_bo;
21
22 typedef struct {
23 void *mem_ctx;
24
25 struct intel_device_info *devinfo;
26 struct isl_device *isl_dev;
27 int fd;
28
29 struct {
30 uint32_t ctx_id;
31 } i915;
32
33 struct {
34 uint32_t vm_id;
35 uint32_t queue_id;
36 } xe;
37
38 struct {
39 executor_bo batch;
40 executor_bo extra;
41 executor_bo data;
42 } bo;
43
44 uint64_t batch_start;
45 } executor_context;
46
47 typedef struct {
48 const char *original_src;
49
50 void *kernel_bin;
51 uint32_t kernel_size;
52 } executor_params;
53
54 typedef struct {
55 uint64_t offset;
56 } executor_address;
57
58 __attribute__((unused)) static uint64_t
executor_combine_address(void * data,void * location,executor_address address,uint32_t delta)59 executor_combine_address(void *data, void *location,
60 executor_address address, uint32_t delta)
61 {
62 return address.offset + delta;
63 }
64
65 executor_address executor_address_of_ptr(executor_bo *bo, void *ptr);
66
67 void *executor_alloc_bytes(executor_bo *bo, uint32_t size);
68 void *executor_alloc_bytes_aligned(executor_bo *bo, uint32_t size, uint32_t alignment);
69
70 void failf(const char *fmt, ...) PRINTFLIKE(1, 2);
71
72 const char *executor_apply_macros(executor_context *ec, const char *original_src);
73
74 #ifdef genX
75 # include "executor_genx.h"
76 #else
77 # define genX(x) gfx9_##x
78 # include "executor_genx.h"
79 # undef genX
80 # define genX(x) gfx11_##x
81 # include "executor_genx.h"
82 # undef genX
83 # define genX(x) gfx12_##x
84 # include "executor_genx.h"
85 # undef genX
86 # define genX(x) gfx125_##x
87 # include "executor_genx.h"
88 # undef genX
89 # define genX(x) gfx20_##x
90 # include "executor_genx.h"
91 # undef genX
92 #endif
93
94 #endif /* EXECUTOR_H */
95