1#pragma once
2
3/* device */
4uint32_t backend_device_get_device_count(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
5uint32_t backend_device_get_count(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
6uint32_t backend_device_get_name(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
7uint32_t backend_device_get_description(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
8uint32_t backend_device_get_type(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
9uint32_t backend_device_get_memory(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
10uint32_t backend_device_supports_op(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
11uint32_t backend_device_get_buffer_type(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
12uint32_t backend_device_get_props(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
13uint32_t backend_device_buffer_from_ptr(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
14
15/* buffer-type */
16uint32_t backend_buffer_type_get_name(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
17uint32_t backend_buffer_type_get_alignment(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
18uint32_t backend_buffer_type_get_max_size(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
19/* APIR_COMMAND_TYPE_BUFFER_TYPE_IS_HOST is deprecated. Keeping the handler for backward compatibility. */
20uint32_t backend_buffer_type_is_host(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
21uint32_t backend_buffer_type_alloc_buffer(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
22uint32_t backend_buffer_type_get_alloc_size(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
23
24/* buffer */
25uint32_t backend_buffer_get_base(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
26uint32_t backend_buffer_set_tensor(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
27uint32_t backend_buffer_get_tensor(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
28uint32_t backend_buffer_cpy_tensor(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
29uint32_t backend_buffer_clear(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
30uint32_t backend_buffer_free_buffer(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
31
32/* backend */
33uint32_t backend_backend_graph_compute(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx);
34
35static inline const char * backend_dispatch_command_name(ApirBackendCommandType type) {
36 switch (type) {
37 /* device */
38 case APIR_COMMAND_TYPE_DEVICE_GET_DEVICE_COUNT:
39 return "backend_device_get_device_count";
40 case APIR_COMMAND_TYPE_DEVICE_GET_COUNT:
41 return "backend_device_get_count";
42 case APIR_COMMAND_TYPE_DEVICE_GET_NAME:
43 return "backend_device_get_name";
44 case APIR_COMMAND_TYPE_DEVICE_GET_DESCRIPTION:
45 return "backend_device_get_description";
46 case APIR_COMMAND_TYPE_DEVICE_GET_TYPE:
47 return "backend_device_get_type";
48 case APIR_COMMAND_TYPE_DEVICE_GET_MEMORY:
49 return "backend_device_get_memory";
50 case APIR_COMMAND_TYPE_DEVICE_SUPPORTS_OP:
51 return "backend_device_supports_op";
52 case APIR_COMMAND_TYPE_DEVICE_GET_BUFFER_TYPE:
53 return "backend_device_get_buffer_type";
54 case APIR_COMMAND_TYPE_DEVICE_GET_PROPS:
55 return "backend_device_get_props";
56 case APIR_COMMAND_TYPE_DEVICE_BUFFER_FROM_PTR:
57 return "backend_device_buffer_from_ptr";
58 /* buffer-type */
59 case APIR_COMMAND_TYPE_BUFFER_TYPE_GET_NAME:
60 return "backend_buffer_type_get_name";
61 case APIR_COMMAND_TYPE_BUFFER_TYPE_GET_ALIGNMENT:
62 return "backend_buffer_type_get_alignment";
63 case APIR_COMMAND_TYPE_BUFFER_TYPE_GET_MAX_SIZE:
64 return "backend_buffer_type_get_max_size";
65 case APIR_COMMAND_TYPE_BUFFER_TYPE_IS_HOST:
66 return "backend_buffer_type_is_host (DEPRECATED)";
67 case APIR_COMMAND_TYPE_BUFFER_TYPE_ALLOC_BUFFER:
68 return "backend_buffer_type_alloc_buffer";
69 case APIR_COMMAND_TYPE_BUFFER_TYPE_GET_ALLOC_SIZE:
70 return "backend_buffer_type_get_alloc_size";
71 /* buffer */
72 case APIR_COMMAND_TYPE_BUFFER_GET_BASE:
73 return "backend_buffer_get_base";
74 case APIR_COMMAND_TYPE_BUFFER_SET_TENSOR:
75 return "backend_buffer_set_tensor";
76 case APIR_COMMAND_TYPE_BUFFER_GET_TENSOR:
77 return "backend_buffer_get_tensor";
78 case APIR_COMMAND_TYPE_BUFFER_CPY_TENSOR:
79 return "backend_buffer_cpy_tensor";
80 case APIR_COMMAND_TYPE_BUFFER_CLEAR:
81 return "backend_buffer_clear";
82 case APIR_COMMAND_TYPE_BUFFER_FREE_BUFFER:
83 return "backend_buffer_free_buffer";
84 /* backend */
85 case APIR_COMMAND_TYPE_BACKEND_GRAPH_COMPUTE:
86 return "backend_backend_graph_compute";
87
88 default:
89 return "unknown";
90 }
91}
92
93extern "C" {
94static const backend_dispatch_t apir_backend_dispatch_table[APIR_BACKEND_DISPATCH_TABLE_COUNT] = {
95
96 /* device */
97
98 /* APIR_COMMAND_TYPE_DEVICE_GET_DEVICE_COUNT = */ backend_device_get_device_count,
99 /* APIR_COMMAND_TYPE_DEVICE_GET_COUNT = */ backend_device_get_count,
100 /* APIR_COMMAND_TYPE_DEVICE_GET_NAME = */ backend_device_get_name,
101 /* APIR_COMMAND_TYPE_DEVICE_GET_DESCRIPTION = */ backend_device_get_description,
102 /* APIR_COMMAND_TYPE_DEVICE_GET_TYPE = */ backend_device_get_type,
103 /* APIR_COMMAND_TYPE_DEVICE_GET_MEMORY = */ backend_device_get_memory,
104 /* APIR_COMMAND_TYPE_DEVICE_SUPPORTS_OP = */ backend_device_supports_op,
105 /* APIR_COMMAND_TYPE_DEVICE_GET_BUFFER_TYPE = */ backend_device_get_buffer_type,
106 /* APIR_COMMAND_TYPE_DEVICE_GET_PROPS = */ backend_device_get_props,
107 /* APIR_COMMAND_TYPE_DEVICE_BUFFER_FROM_PTR = */ backend_device_buffer_from_ptr,
108
109 /* buffer-type */
110
111 /* APIR_COMMAND_TYPE_BUFFER_TYPE_GET_NAME = */ backend_buffer_type_get_name,
112 /* APIR_COMMAND_TYPE_BUFFER_TYPE_GET_ALIGNMENT = */ backend_buffer_type_get_alignment,
113 /* APIR_COMMAND_TYPE_BUFFER_TYPE_GET_MAX_SIZE = */ backend_buffer_type_get_max_size,
114 /* APIR_COMMAND_TYPE_BUFFER_TYPE_IS_HOST = */ backend_buffer_type_is_host /* DEPRECATED */,
115 /* APIR_COMMAND_TYPE_BUFFER_TYPE_ALLOC_BUFFER = */ backend_buffer_type_alloc_buffer,
116 /* APIR_COMMAND_TYPE_BUFFER_TYPE_GET_ALLOC_SIZE = */ backend_buffer_type_get_alloc_size,
117
118 /* buffer */
119
120 /* APIR_COMMAND_TYPE_BUFFER_GET_BASE = */ backend_buffer_get_base,
121 /* APIR_COMMAND_TYPE_BUFFER_SET_TENSOR = */ backend_buffer_set_tensor,
122 /* APIR_COMMAND_TYPE_BUFFER_GET_TENSOR = */ backend_buffer_get_tensor,
123 /* APIR_COMMAND_TYPE_BUFFER_CPY_TENSOR = */ backend_buffer_cpy_tensor,
124 /* APIR_COMMAND_TYPE_BUFFER_CLEAR = */ backend_buffer_clear,
125 /* APIR_COMMAND_TYPE_BUFFER_FREE_BUFFER = */ backend_buffer_free_buffer,
126
127 /* backend */
128
129 /* APIR_COMMAND_TYPE_BACKEND_GRAPH_COMPUTE = */ backend_backend_graph_compute,
130};
131}