xref: /aosp_15_r20/external/mesa3d/src/intel/executor/executor.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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