4 * this is public domain without any warranties of any kind
7 /* XXX: KEEP AN EYE ON ABBREVIATIONS, ALWAYS */
8 /*----------------------------------------------------------------------------*/
11 #define vk_whole_sz 0xffffffffffffffff
12 #define vk_q_fam_ignored 0xffffffff
13 /*----------------------------------------------------------------------------*/
14 #define VK_VERSION_MAJOR(x) (x >> 22)
15 #define VK_VERSION_MINOR(x) ((x >> 12) & 0x3ff)
16 #define VK_VERSION_PATCH(x) (x & 0xfff)
17 /*----------------------------------------------------------------------------*/
18 struct vk_offset_2d_t
{
22 struct vk_offset_3d_t
{
27 struct vk_extent_2d_t
{
31 struct vk_extent_3d_t
{
37 struct vk_offset_2d_t offset
;
38 struct vk_extent_2d_t extent
;
40 struct vk_instance_create_info_t
{
44 void *app_info
; /* allow easy hidden driver optimizations: no! */
46 u8
**enabled_layer_names
;
48 u8
**enabled_ext_names
;
50 #define VK_MAX_EXT_NAME_SZ 256
51 struct vk_ext_props_t
{
52 u8 name
[VK_MAX_EXT_NAME_SZ
];
55 #define VK_MAX_DESC_SZ 256
56 struct vk_layer_props_t
{
57 u8 name
[VK_MAX_EXT_NAME_SZ
];
59 u32 implementation_version
;
60 u8 desc
[VK_MAX_DESC_SZ
];
62 struct vk_phydev_limits_t
{
81 struct vk_phydev_sparse_props_t
{
84 #define VK_MAX_PHYDEV_NAME_SZ 256
86 struct vk_phydev_props_core_t
{
92 u8 name
[VK_MAX_PHYDEV_NAME_SZ
];
93 u8 pl_cache_uuid
[VK_UUID_SZ
];
94 struct vk_phydev_limits_t limits
;
95 struct vk_phydev_sparse_props_t sparse_props
;
97 /* the vulkan 1.1 version */
98 struct vk_phydev_props_t
{
101 struct vk_phydev_props_core_t core
;
103 struct vk_q_fam_props_core_t
{
106 u32 timestamp_valid_bits
;
107 struct vk_extent_3d_t min_img_transfer_granularity
;
109 struct vk_q_fam_props_t
{
112 struct vk_q_fam_props_core_t core
;
114 struct vk_phydev_features_t
{
117 struct vk_dev_q_create_info_t
{
125 struct vk_dev_create_info_t
{
129 u32 q_create_infos_n
;
130 struct vk_dev_q_create_info_t
*q_create_infos
;
134 u8
**enabled_ext_names
;
137 struct vk_cp_create_info_t
{
143 struct vk_xcb_surf_create_info_t
{
150 struct vk_phydev_surf_info_t
{
155 struct vk_surf_texel_mem_blk_conf_core_t
{
159 struct vk_surf_texel_mem_blk_conf_t
{
162 struct vk_surf_texel_mem_blk_conf_core_t core
;
164 struct vk_mem_type_t
{
168 struct vk_mem_heap_t
{
172 #define VK_MEM_TYPES_N_MAX 32
173 #define VK_MEM_HEAPS_N_MAX 16
174 struct vk_phydev_mem_props_core_t
{
176 struct vk_mem_type_t mem_types
[VK_MEM_TYPES_N_MAX
];
178 struct vk_mem_heap_t mem_heaps
[VK_MEM_HEAPS_N_MAX
];
180 struct vk_phydev_mem_props_t
{
183 struct vk_phydev_mem_props_core_t core
;
185 struct vk_surf_caps_core_t
{
188 struct vk_extent_2d_t current_extent
;
189 struct vk_extent_2d_t img_extent_min
;
190 struct vk_extent_2d_t img_extent_max
;
191 u32 img_array_layers_n_max
;
192 u32 supported_transforms
;
193 u32 current_transform
;
194 u32 supported_composite_alpha
;
195 u32 supported_img_usage_flags
;
197 struct vk_surf_caps_t
{
200 struct vk_surf_caps_core_t core
;
202 struct vk_swpchn_create_info_t
{
208 u32 img_texel_mem_blk_fmt
;
210 struct vk_extent_2d_t img_extent
;
213 u32 img_sharing_mode
;
222 struct vk_img_create_info_t
{
227 u32 texel_mem_blk_fmt
;
228 struct vk_extent_3d_t extent
;
231 u32 samples_n
; /* flags */
239 struct vk_img_mem_rqmts_info_t
{
244 struct vk_mem_rqmts_core_t
{
247 /* idxs of bits are idxs in mem types of vk_phydev_mem_props_core_t */
250 struct vk_mem_rqmts_t
{
253 struct vk_mem_rqmts_core_t core
;
255 struct vk_mem_alloc_info_t
{
259 u32 mem_type_idx
; /* in the physical device array of memory types */
261 struct vk_bind_img_mem_info_t
{
268 struct vk_img_subrsrc_range_t
{
272 u32 base_array_layer
;
275 struct vk_img_mem_barrier_t
{
285 struct vk_img_subrsrc_range_t subrsrc_range
;
287 struct vk_cb_alloc_info_t
{
294 struct vk_cb_begin_info_t
{
300 struct vk_submit_info_t
{
305 u32
* wait_dst_stages
;
311 struct vk_img_subrsrc_t
{
316 struct vk_subrsrc_layout_t
{
323 struct vk_img_subrsrc_layers_t
{
326 u32 base_array_layer
;
329 struct vk_acquire_next_img_info_t
{
338 struct vk_img_blit_t
{
339 struct vk_img_subrsrc_layers_t src_subrsrc
;
340 struct vk_offset_3d_t src_offsets
[2];
341 struct vk_img_subrsrc_layers_t dst_subrsrc
;
342 struct vk_offset_3d_t dst_offsets
[2];
344 struct vk_present_info_t
{
354 struct vk_sem_create_info_t
{
359 struct vk_comp_map_t
{
365 struct vk_imgview_create_info_t
{
372 struct vk_comp_map_t comps
;
373 struct vk_img_subrsrc_range_t subrsrc_range
;
375 struct vk_at_desc_t
{
382 u32 stencil_store_op
;
390 struct vk_sp_desc_t
{
394 struct vk_at_ref_t
*input_ats
;
396 struct vk_at_ref_t
*color_ats
;
397 struct vk_at_ref_t
*resolve_ats
;
398 struct vk_at_ref_t
*depth_stencil_ats
;
411 struct vk_rp_create_info_t
{
416 struct vk_at_desc_t
*ats
;
418 struct vk_sp_desc_t
*sps
;
420 struct vk_sp_dep_t
*deps
;
422 struct vk_fb_create_info_t
{
428 void *ats
; /* imgviews!!! */
433 struct vk_shmod_create_info_t
{
437 size_t code_sz
; /* bytes_n */
440 struct vk_pl_sh_stage_create_info_t
{
447 void *specialization_info
; /* later */
449 struct vk_pl_vtx_input_state_create_info_t
{
459 struct vk_pl_input_assembly_state_create_info_t
{
464 u32 prim_restart_ena
;
466 /* XXX: this does define a _transformation_ ! */
467 struct vk_viewport_t
{
475 struct vk_pl_viewport_state_create_info_t
{
480 struct vk_viewport_t
*viewports
;
482 struct vk_rect_2d_t
*scissors
;
484 struct vk_pl_raster_state_create_info_t
{
489 u32 raster_discard_ena
;
494 f32 depth_bias_constant_factor
;
495 f32 depth_bias_clamp
;
496 f32 depth_bias_slope_factor
;
499 struct vk_pl_multisample_state_create_info_t
{
503 u32 raster_samples_n
;
504 u32 sample_shading_ena
;
505 f32 sample_shading_min
;
507 u32 alpha_to_coverage_ena
;
508 u32 alpha_to_one_ena
;
510 struct vk_pl_color_blend_at_state_t
{
513 u32 src_color_blend_factor
;
514 u32 dst_color_blend_factor
;
515 /* normalized integer */
518 u32 src_alpha_blend_factor
;
519 u32 dst_alpha_blend_factor
;
522 /* normalized integer */
523 u32 color_write_mask
;
525 struct vk_pl_color_blend_state_create_info_t
{
533 struct vk_pl_color_blend_at_state_t
*ats
;
536 struct vk_pushconst_range_t
{
541 struct vk_pl_layout_create_info_t
{
547 u32 pushconst_ranges_n
;
548 struct vk_pushconst_range_t
*ranges
;
550 struct vk_gfx_pl_create_info_t
{
555 struct vk_pl_sh_stage_create_info_t
*sh_stages
;
556 struct vk_pl_vtx_input_state_create_info_t
*vtx_input_state
;
557 struct vk_pl_input_assembly_state_create_info_t
*input_assembly_state
;
559 struct vk_pl_viewport_state_create_info_t
*viewport_state
;
560 struct vk_pl_raster_state_create_info_t
*raster_state
;
561 struct vk_pl_multisample_state_create_info_t
*multisample_state
;
563 struct vk_pl_color_blend_state_create_info_t
*color_blend_state
;
571 union vk_clr_color_val_t
{
576 struct vk_clr_depth_stencil_val_t
{
581 union vk_clr_color_val_t color
;
582 struct vk_clr_depth_stencil_val_t depth_stencil
;
584 struct vk_rp_begin_info_t
{
589 struct vk_rect_2d_t render_area
;
591 union vk_clr_val_t
*clr_vals
;