npv:_reasonable_ "pedanticage" of the code
[nyanmp.git] / npv / vk / api_usage.h
blob8ee52a2c3c0e288ff42ee3895bbc875ed15cfce1
1 #ifndef NPV_VK_API_USAGE_H
2 #define NPV_VK_API_USAGE_H
3 /*
4 * this is public domain without any warranties of any kind
5 * Sylvain BERTRAND
6 */
7 /*
8 * this is the simplification and taylorization of vk api for the specific
9 * uses of npv
11 #define IF_FATALVK(fmt, ...) \
12 if (r < 0) \
13 npv_vk_fatal(fmt, __VA_ARGS__)
14 /*----------------------------------------------------------------------------*/
15 #define vk_get_dev_q() \
16 npv_vk_surf_p.dev.dl_vk_get_dev_q(npv_vk_surf_p.dev.vk, npv_vk_surf_p.dev.phydev.q_fam, 0, &npv_vk_surf_p.dev.q)
18 #define vk_create_cp(info) \
19 r = npv_vk_surf_p.dev.dl_vk_create_cp(npv_vk_surf_p.dev.vk, info, 0, &npv_vk_surf_p.dev.cp)
21 #define vk_create_swpchn(info) \
22 r = npv_vk_surf_p.dev.dl_vk_create_swpchn(npv_vk_surf_p.dev.vk, info, 0, &npv_vk_surf_p.dev.swpchn.vk)
24 #define vk_destroy_swpchn(swpchn) \
25 npv_vk_surf_p.dev.dl_vk_destroy_swpchn(npv_vk_surf_p.dev.vk, swpchn, 0)
27 #define vk_get_swpchn_imgs() \
28 r = npv_vk_surf_p.dev.dl_vk_get_swpchn_imgs(npv_vk_surf_p.dev.vk, npv_vk_surf_p.dev.swpchn.vk, &npv_vk_surf_p.dev.swpchn.imgs_n, npv_vk_surf_p.dev.swpchn.imgs)
30 #define vk_create_img(info, img) \
31 r = npv_vk_surf_p.dev.dl_vk_create_img(npv_vk_surf_p.dev.vk, info, 0, img)
33 #define vk_destroy_img(img) \
34 npv_vk_surf_p.dev.dl_vk_destroy_img(npv_vk_surf_p.dev.vk, img, 0)
36 #define vk_get_img_mem_rqmts(...) \
37 r = npv_vk_surf_p.dev.dl_vk_get_img_mem_rqmts(npv_vk_surf_p.dev.vk,##__VA_ARGS__)
39 #define vk_alloc_mem(info, dev_mem) \
40 r = npv_vk_surf_p.dev.dl_vk_alloc_mem(npv_vk_surf_p.dev.vk, info, 0, dev_mem)
42 #define vk_free_mem(dev_mem) \
43 npv_vk_surf_p.dev.dl_vk_free_mem(npv_vk_surf_p.dev.vk, dev_mem, 0)
45 #define vk_bind_img_mem(infos) \
46 r = npv_vk_surf_p.dev.dl_vk_bind_img_mem(npv_vk_surf_p.dev.vk, 1, infos)
48 #define vk_map_mem(dev_mem, data) \
49 r = npv_vk_surf_p.dev.dl_vk_map_mem(npv_vk_surf_p.dev.vk, dev_mem, 0, vk_whole_sz, 0, data)
51 #define vk_unmap_mem(dev_mem) \
52 npv_vk_surf_p.dev.dl_vk_unmap_mem(npv_vk_surf_p.dev.vk, dev_mem)
54 #define vk_alloc_cbs(info) \
55 r = npv_vk_surf_p.dev.dl_vk_alloc_cbs(npv_vk_surf_p.dev.vk, info, npv_vk_surf_p.dev.cbs)
57 #define vk_begin_cb(...) \
58 r = npv_vk_surf_p.dev.dl_vk_begin_cb(__VA_ARGS__)
60 #define vk_end_cb(...) \
61 r = npv_vk_surf_p.dev.dl_vk_end_cb(__VA_ARGS__)
63 #define vk_cmd_pl_barrier(cb, b) \
64 npv_vk_surf_p.dev.dl_vk_cmd_pl_barrier(cb, vk_pl_stage_top_of_pipe_bit, vk_pl_stage_top_of_pipe_bit, 0, 0, 0, 0, 0, 1, b)
66 #define vk_q_submit(info) \
67 r = npv_vk_surf_p.dev.dl_vk_q_submit(npv_vk_surf_p.dev.q, 1, info, 0)
69 #define vk_q_wait_idle() \
70 r = npv_vk_surf_p.dev.dl_vk_q_wait_idle(npv_vk_surf_p.dev.q)
72 #define vk_get_img_subrsrc_layout(...) \
73 npv_vk_surf_p.dev.dl_vk_get_img_subrsrc_layout(npv_vk_surf_p.dev.vk, __VA_ARGS__)
75 #define vk_acquire_next_img(...) \
76 r = npv_vk_surf_p.dev.dl_vk_acquire_next_img(npv_vk_surf_p.dev.vk, __VA_ARGS__)
78 #define vk_reset_cb(cb) \
79 r = npv_vk_surf_p.dev.dl_vk_reset_cb(cb, 0)
81 /* linear filtering if scaling happens */
82 /* TODO: should be tested prior to usage: fmt feature of src img should have the vk_fmt_feature_sampled_img_filt_linear_bit */
83 #define vk_cmd_blit_img(cb, src_img, dst_img, region) \
84 npv_vk_surf_p.dev.dl_vk_cmd_blit_img(cb, src_img, vk_img_layout_general, dst_img, vk_img_layout_present, 1, region, 1)
86 #define vk_q_present(info) \
87 r = npv_vk_surf_p.dev.dl_vk_q_present(npv_vk_surf_p.dev.q, info)
89 #define vk_create_sem(info, sem) \
90 r = npv_vk_surf_p.dev.dl_vk_create_sem(npv_vk_surf_p.dev.vk, info, 0, sem)
92 #define vk_cmd_clr_color_img npv_vk_surf_p.dev.dl_vk_cmd_clr_color_img
93 /******************************************************************************/
94 /* cherry picked from nyanvk/syms_global.h */
95 #define VK_GLOBAL_SYMS \
96 STATIC void *(*npv_dl_vk_get_instance_proc_addr)(\
97 struct vk_instance_t *instance,\
98 u8 *name);\
99 STATIC void *(*npv_dl_vk_get_dev_proc_addr)(\
100 struct vk_dev_t *dev,\
101 u8 *name);\
102 STATIC s32 (*npv_dl_vk_enumerate_instance_version)(u32 *version); \
103 STATIC s32 (*npv_dl_vk_enumerate_instance_layer_props)( \
104 u32 *props_n, \
105 struct vk_layer_props_t *props); \
106 STATIC s32 (*npv_dl_vk_enumerate_instance_ext_props)( \
107 u8 *layer_name, \
108 u32 *props_n, \
109 struct vk_ext_props_t *props); \
110 STATIC s32 (*npv_dl_vk_create_instance)( \
111 struct vk_instance_create_info_t *info, \
112 void *allocator, \
113 struct vk_instance_t **instance); \
114 STATIC s32 (*npv_dl_vk_enumerate_phydevs)( \
115 struct vk_instance_t *instance, \
116 u32 *phydevs_n, \
117 struct vk_phydev_t **phydevs); \
118 STATIC s32 (*npv_dl_vk_enumerate_dev_ext_props)( \
119 struct vk_phydev_t *phydev, \
120 u8 *layer_name, \
121 u32 *props_n, \
122 struct vk_ext_props_t *props); \
123 STATIC void (*npv_dl_vk_get_phydev_props)( \
124 struct vk_phydev_t *phydev, \
125 struct vk_phydev_props_t *props); \
126 STATIC s32 (*npv_dl_vk_create_dev)( \
127 struct vk_phydev_t *phydev, \
128 struct vk_dev_create_info_t *create_info, \
129 void *allocator, \
130 struct vk_dev_t **dev); \
131 STATIC void (*npv_dl_vk_get_phydev_q_fam_props)( \
132 struct vk_phydev_t *phydev, \
133 u32 *q_fam_props_n, \
134 struct vk_q_fam_props_t *props); \
135 STATIC s32 (*npv_dl_vk_create_xcb_surf)( \
136 struct vk_instance_t *instance, \
137 struct vk_xcb_surf_create_info_t *info, \
138 void *allocator, \
139 struct vk_surf_t **surf); \
140 STATIC void (*npv_dl_vk_destroy_surf)(\
141 struct vk_instance_t *instance,\
142 struct vk_surf_t *surf,\
143 void *allocator); \
144 STATIC s32 (*npv_dl_vk_get_phydev_surf_support)( \
145 struct vk_phydev_t *phydev, \
146 u32 q_fam, \
147 struct vk_surf_t *surf, \
148 u32 *supported); \
149 STATIC s32 (*npv_dl_vk_get_phydev_surf_texel_mem_blk_confs)( \
150 struct vk_phydev_t *phydev, \
151 struct vk_phydev_surf_info_t *info, \
152 u32 *confs_n, \
153 struct vk_surf_texel_mem_blk_conf_t *confs); \
154 STATIC void (*npv_dl_vk_get_phydev_mem_props)( \
155 struct vk_phydev_t *phydev, \
156 struct vk_phydev_mem_props_t *props); \
157 STATIC s32 (*npv_dl_vk_get_phydev_surf_caps)( \
158 struct vk_phydev_t *phydev, \
159 struct vk_phydev_surf_info_t *info, \
160 struct vk_surf_caps_t *caps); \
161 STATIC s32 (*npv_dl_vk_get_phydev_surf_present_modes)( \
162 struct vk_phydev_t *phydev, \
163 struct vk_surf_t *surf, \
164 u32 *modes_n, \
165 u32 *modes);
166 /******************************************************************************/
167 #define vk_get_instance_proc_addr npv_dl_vk_get_instance_proc_addr
169 #define vk_get_dev_proc_addr npv_dl_vk_get_dev_proc_addr
171 #define vk_enumerate_instance_version \
172 r = npv_dl_vk_enumerate_instance_version
174 #define vk_enumerate_instance_layer_props \
175 r = npv_dl_vk_enumerate_instance_layer_props
177 #define vk_enumerate_instance_ext_props(...) \
178 r = npv_dl_vk_enumerate_instance_ext_props(0, __VA_ARGS__)
180 #define vk_create_instance(info) \
181 r = npv_dl_vk_create_instance(info, 0, &npv_vk_instance_l)
183 #define vk_enumerate_phydevs(...) \
184 r = npv_dl_vk_enumerate_phydevs(npv_vk_instance_l, __VA_ARGS__)
186 #define vk_enumerate_dev_ext_props(phydev, props_n, props) \
187 r = npv_dl_vk_enumerate_dev_ext_props(phydev, 0, props_n, props)
189 #define vk_get_phydev_props npv_dl_vk_get_phydev_props
191 #define vk_create_dev(info) \
192 r = npv_dl_vk_create_dev(npv_vk_surf_p.dev.phydev.vk, info, 0, &npv_vk_surf_p.dev.vk)
194 #define vk_get_phydev_q_fam_props npv_dl_vk_get_phydev_q_fam_props
196 #define vk_create_xcb_surf(info) \
197 r = npv_dl_vk_create_xcb_surf(npv_vk_instance_l, info, 0, &npv_vk_surf_p.vk)
199 #define vk_get_phydev_surf_support(phydev, q_fam, supported) \
200 r = npv_dl_vk_get_phydev_surf_support(phydev, q_fam, npv_vk_surf_p.vk, supported)
202 #define vk_get_phydev_surf_texel_mem_blk_confs(...) \
203 r = npv_dl_vk_get_phydev_surf_texel_mem_blk_confs(npv_vk_surf_p.dev.phydev.vk, __VA_ARGS__)
205 #define vk_get_phydev_mem_props npv_dl_vk_get_phydev_mem_props
207 #define vk_get_phydev_surf_caps(info, caps) \
208 r = npv_dl_vk_get_phydev_surf_caps(npv_vk_surf_p.dev.phydev.vk, info, caps)
210 #define vk_get_phydev_surf_present_modes() \
211 r = npv_dl_vk_get_phydev_surf_present_modes(npv_vk_surf_p.dev.phydev.vk, npv_vk_surf_p.vk, &npv_vk_tmp_present_modes_n_l, npv_vk_tmp_present_modes_l)
212 #endif