1     module vk
2     
3     def acquire_next_image_khr "vkAcquireNextImageKHR"
4         (device : VkDevice
5          swapchain : VkSwapchain
6          timeout : u64
7          semaphore : VkSemaphore
8          fence : VkFence
9          image_index : mut ptr u32) : Result
10    
11    def allocate_command_buffers "vkAllocateCommandBuffers"
12        (device : VkDevice
13         allocate_info : ptr CommandBufferAllocateInfo
14         command_buffers : mut ptr VkCommandBuffer) : Result
15    
16    def allocate_descriptor_sets "vkAllocateDescriptorSets"
17        (device : VkDevice
18         allocate_info : ptr DescriptorSetAllocateInfo
19         descriptor_sets : mut ptr VkDescriptorSet) : Result
20    
21    def allocate_memory "vkAllocateMemory"
22        (device : VkDevice
23         allocate_info : ptr MemoryAllocateInfo
24         allocator : Allocator
25         memory : mut ptr VkMemory) : Result
26    
27    def begin_command_buffer "vkBeginCommandBuffer"
28        (command_buffer : VkCommandBuffer
29         begin_info : ptr CommandBufferBeginInfo) : Result
30    
31    def bind_buffer_memory "vkBindBufferMemory"
32        (device : VkDevice
33         buffer : VkBuffer
34         memory : VkMemory
35         memory_offset : u64) : Result
36    
37    def bind_image_memory "vkBindImageMemory"
38        (device : VkDevice
39         image : VkImage
40         memory : VkMemory
41         memory_offset : u64) : Result
42    
43    def cmd_begin_render_pass "vkCmdBeginRenderPass"
44        (command_buffer : VkCommandBuffer
45         render_pass_begin : ptr RenderPassBeginInfo
46         contents : SubpassContents)
47    
48    def cmd_bind_descriptor_sets "vkCmdBindDescriptorSets"
49        (command_buffer : VkCommandBuffer
50         pipeline_bind_point : PipelineBindPoint
51         layout : VkPipelineLayout
52         first_set : u32
53         descriptor_set_count : u32
54         descriptor_sets : ptr VkDescriptorSet
55         dynamic_offset_count : u32
56         dynamic_offsets : ptr u32)
57    
58    def cmd_bind_index_buffer "vkCmdBindIndexBuffer"
59        (command_buffer : VkCommandBuffer
60         buffer : VkBuffer
61         offset : u64
62         index_type : IndexType)
63    
64    def cmd_bind_pipeline "vkCmdBindPipeline"
65        (command_buffer : VkCommandBuffer
66         pipeline_bind_point : PipelineBindPoint
67         pipeline : VkPipeline)
68    
69    def cmd_bind_vertex_buffers "vkCmdBindVertexBuffers"
70        (command_buffer : VkCommandBuffer
71         first_binding : u32
72         binding_count : u32
73         buffers : ptr VkBuffer
74         offsets : ptr u64)
75    
76    def cmd_blit_image "vkCmdBlitImage"
77        (command_buffer : VkCommandBuffer
78         src_image : VkImage
79         src_image_layout : ImageLayout
80         dst_image : VkImage
81         dst_image_layout : ImageLayout
82         region_count : u32
83         regions : ptr ImageBlit
84         filter : VkFilter)
85    
86    def cmd_clear_attachments "vkCmdClearAttachments"
87        (command_buffer : VkCommandBuffer
88         attachment_count : u32
89         attachments : ptr ClearAttachment
90         rect_count : u32
91         rects : ptr ClearRect)
92    
93    def cmd_clear_color_image "vkCmdClearColorImage"
94        (command_buffer : VkCommandBuffer
95         image : VkImage
96         image_layout : ImageLayout
97         color : ptr ClearColorValue
98         range_count : u32
99         ranges : ptr ImageSubresourceRange)
100   
101   def cmd_copy_buffer "vkCmdCopyBuffer"
102       (command_buffer : VkCommandBuffer
103        src_buffer : VkBuffer
104        dst_buffer : VkBuffer
105        region_count : u32
106        regions : ptr BufferCopy)
107   
108   def cmd_copy_buffer_to_image "vkCmdCopyBufferToImage"
109       (command_buffer : VkCommandBuffer
110        src_buffer : VkBuffer
111        dst_image : VkImage
112        dst_image_layout : ImageLayout
113        region_count : u32
114        regions : ptr BufferImageCopy)
115   
116   def cmd_copy_image "vkCmdCopyImage"
117       (command_buffer : VkCommandBuffer
118        src_image : VkImage
119        src_image_layout : ImageLayout
120        dst_image : VkImage
121        dst_image_layout : ImageLayout
122        region_count : u32
123        regions : ptr ImageCopy)
124   
125   def cmd_dispatch "vkCmdDispatch"
126       (command_buffer : VkCommandBuffer
127        group_count_x : u32
128        group_count_y : u32
129        group_count_z : u32)
130   
131   def cmd_dispatch_indirect "vkCmdDispatchIndirect"
132       (command_buffer : VkCommandBuffer
133        buffer : VkBuffer
134        offset : u64)
135   
136   def cmd_draw "vkCmdDraw"
137       (command_buffer : VkCommandBuffer
138        vertex_count : u32
139        instance_count : u32
140        first_vertex : u32
141        first_instance : u32)
142   
143   def cmd_draw_indexed "vkCmdDrawIndexed"
144       (command_buffer : VkCommandBuffer
145        index_count : u32
146        instance_count : u32
147        first_index : u32
148        vertex_offset : i32
149        first_instance : u32)
150   
151   def cmd_execute_commands "vkCmdExecuteCommands"
152       (command_buffer : VkCommandBuffer
153        command_buffer_count : u32
154        command_buffers : ptr VkCommandBuffer)
155   
156   def cmd_end_render_pass "vkCmdEndRenderPass" (command_buffer : VkCommandBuffer)
157   
158   def cmd_fill_buffer "vkCmdFillBuffer"
159       (command_buffer : VkCommandBuffer
160        dst_buffer : VkBuffer
161        dst_offset : usize
162        size : usize
163        data : u32)
164   
165   def cmd_pipeline_barrier "vkCmdPipelineBarrier"
166       (command_buffer : VkCommandBuffer
167        src_stage_mask : PipelineStageFlags
168        dst_stage_mask : PipelineStageFlags
169        dependency_flags : DependencyFlags
170        memory_barrier_count : u32
171        memory_barriers : ptr MemoryBarrier
172        buffer_memory_barrier_count : u32
173        buffer_memory_barriers : ptr BufferMemoryBarrier
174        image_memory_barrier_count : u32
175        image_memory_barriers : ptr ImageMemoryBarrier)
176   
177   def cmd_push_constants "vkCmdPushConstants"
178       (command_buffer : VkCommandBuffer
179        layout : VkPipelineLayout
180        stage_flags : ShaderStageFlags
181        offset : u32
182        size : u32
183        values : Ptr)
184   
185   def cmd_reset_query_pool "vkCmdResetQueryPool"
186       (command_buffer : VkCommandBuffer
187        query_pool : VkQueryPool
188        first_query : u32
189        query_count : u32)
190   
191   def cmd_resolve_image "vkCmdResolveImage"
192       (command_buffer : VkCommandBuffer
193        src_image : VkImage
194        src_image_layout : ImageLayout
195        dst_image : VkImage
196        dst_image_layout : ImageLayout
197        region_count : u32
198        regions : ptr ImageResolve)
199   
200   def cmd_set_scissor "vkCmdSetScissor"
201       (command_buffer : VkCommandBuffer
202        first_scissor : u32
203        scissor_count : u32
204        scissors : ptr Rect2D)
205   
206   def cmd_set_viewport "vkCmdSetViewport"
207       (command_buffer : VkCommandBuffer
208        first_viewport : u32
209        viewport_count : u32
210        viewports : ptr Viewport)
211   
212   def create_buffer "vkCreateBuffer"
213       (device : VkDevice
214        create_info : ptr BufferCreateInfo
215        allocator : Allocator
216        buffer : mut ptr VkBuffer) : Result
217   
218   def create_command_pool "vkCreateCommandPool"
219       (device : VkDevice
220        create_info : ptr CommandPoolCreateInfo
221        allocator : Allocator
222        command_pool : mut ptr VkCommandPool) : Result
223   
224   def create_compute_pipelines "vkCreateComputePipelines"
225       (device : VkDevice
226        pipeline_cache : VkPipelineCache
227        create_info_count : u32
228        create_infos : ptr ComputePipelineCreateInfo
229        allocator : Allocator
230        pipelines : mut ptr VkPipeline) : Result
231   
232   def create_descriptor_pool "vkCreateDescriptorPool"
233       (device : VkDevice
234        create_info : ptr DescriptorPoolCreateInfo
235        allocator : Allocator
236        descriptor_pool : mut ptr VkDescriptorPool) : Result
237   
238   def create_descriptor_set_layout "vkCreateDescriptorSetLayout"
239       (device : VkDevice
240        create_info : ptr DescriptorSetLayoutCreateInfo
241        allocator : Allocator
242        set_layout : mut ptr VkDescriptorSetLayout) : Result
243   
244   def create_device "vkCreateDevice"
245       (physical_device : VkPhysicalDevice
246        create_info : ptr DeviceCreateInfo
247        allocator : Allocator
248        device : mut ptr VkDevice) : Result
249   
250   def create_fence "vkCreateFence"
251       (device : VkDevice
252        create_info : ptr FenceCreateInfo
253        allocator : Allocator
254        fence : mut ptr VkFence) : Result
255   
256   def create_framebuffer "vkCreateFramebuffer"
257       (device : VkDevice
258        create_info : ptr FramebufferCreateInfo
259        allocator : Allocator
260        framebuffer : mut ptr VkFramebuffer) : Result
261   
262   def create_graphics_pipelines "vkCreateGraphicsPipelines"
263       (device : VkDevice
264        pipeline_cache : VkPipelineCache
265        create_info_count : u32
266        create_infos : ptr GraphicsPipelineCreateInfo
267        allocator : Allocator
268        pipelines : mut ptr VkPipeline) : Result
269   
270   def create_image "vkCreateImage"
271       (device : VkDevice
272        create_info : ptr ImageCreateInfo
273        allocator : Allocator
274        image : mut ptr VkImage) : Result
275   
276   def create_image_view "vkCreateImageView"
277       (device : VkDevice
278        create_info : ptr ImageViewCreateInfo
279        allocator : Allocator
280        view : mut ptr VkImageView) : Result
281   
282   def create_instance "vkCreateInstance"
283       (create_info : ptr InstanceCreateInfo
284        allocator : Allocator
285        instance : mut ptr VkInstance) : Result
286   
287   def create_pipeline_layout "vkCreatePipelineLayout"
288       (device : VkDevice
289        create_info : ptr PipelineLayoutCreateInfo
290        allocator : Allocator
291        pipeline_layout : mut ptr VkPipelineLayout) : Result
292   
293   def create_query_pool "vkCreateQueryPool"
294       (device : VkDevice
295        create_info : ptr QueryPoolCreateInfo
296        allocator : Allocator
297        query_pool : mut ptr VkQueryPool) : Result
298   
299   def create_render_pass "vkCreateRenderPass"
300       (device : VkDevice
301        create_info : ptr RenderPassCreateInfo
302        allocator : Allocator
303        render_pass : mut ptr VkRenderPass) : Result
304   
305   def create_sampler "vkCreateSampler"
306       (device : VkDevice
307        create_info : ptr SamplerCreateInfo
308        allocator : Allocator
309        sampler : mut ptr VkSampler) : Result
310   
311   def create_semaphore "vkCreateSemaphore"
312       (device : VkDevice
313        create_info : ptr SemaphoreCreateInfo
314        allocator : Allocator
315        semaphore : mut ptr VkSemaphore) : Result
316   
317   def create_shader_module "vkCreateShaderModule"
318       (device : VkDevice
319        create_info : ptr ShaderModuleCreateInfo
320        allocator : Allocator
321        shader_module : mut ptr VkShaderModule) : Result
322   
323   def create_swapchain_khr "vkCreateSwapchainKHR"
324       (device : VkDevice
325        create_info : ptr SwapchainCreateInfoKhr
326        allocator : Allocator
327        swapchain : mut ptr VkSwapchain) : Result
328   
329   def destroy_buffer "vkDestroyBuffer"
330       (device : VkDevice
331        buffer : VkBuffer
332        allocator : Allocator)
333   
334   def destroy_command_pool "vkDestroyCommandPool"
335       (device : VkDevice
336        command_pool : VkCommandPool
337        allocator : Allocator)
338   
339   def destroy_descriptor_pool "vkDestroyDescriptorPool"
340       (device : VkDevice
341        descriptor_pool : VkDescriptorPool
342        allocator : Allocator)
343   
344   def destroy_descriptor_set_layout "vkDestroyDescriptorSetLayout"
345       (device : VkDevice
346        descriptor_set_layout : VkDescriptorSetLayout
347        allocator : Allocator)
348   
349   def destroy_device "vkDestroyDevice"
350       (device : VkDevice
351        allocator : Allocator)
352   
353   def destroy_fence "vkDestroyFence"
354       (device : VkDevice
355        fence : VkFence
356        allocator : Allocator)
357   
358   def destroy_framebuffer "vkDestroyFramebuffer"
359       (device : VkDevice
360        framebuffer : VkFramebuffer
361        allocator : Allocator)
362   
363   def destroy_image "vkDestroyImage"
364       (device : VkDevice
365        image : VkImage
366        allocator : Allocator)
367   
368   def destroy_image_view "vkDestroyImageView"
369       (device : VkDevice
370        image_view : VkImageView
371        allocator : Allocator)
372   
373   def destroy_instance "vkDestroyInstance"
374       (instance : VkInstance
375        allocator : Allocator)
376   
377   def destroy_pipeline "vkDestroyPipeline"
378       (device : VkDevice
379        pipeline : VkPipeline
380        allocator : Allocator)
381   
382   def destroy_pipeline_layout "vkDestroyPipelineLayout"
383       (device : VkDevice
384        pipeline_layout : VkPipelineLayout
385        allocator : Allocator)
386   
387   def destroy_render_pass "vkDestroyRenderPass"
388       (device : VkDevice
389        render_pass : VkRenderPass
390        allocator : Allocator)
391   
392   def destroy_sampler "vkDestroySampler"
393       (device : VkDevice
394        sampler : VkSampler
395        allocator : Allocator)
396   
397   def destroy_semaphore "vkDestroySemaphore"
398       (device : VkDevice
399        semaphore : VkSemaphore
400        allocator : Allocator)
401   
402   def destroy_shader_module "vkDestroyShaderModule"
403       (device : VkDevice
404        shader_module : VkShaderModule
405        allocator : Allocator)
406   
407   def destroy_surface_khr "vkDestroySurfaceKHR"
408       (instance : VkInstance
409        surface : VkSurface
410        allocator : Allocator)
411   
412   def destroy_swapchain_khr "vkDestroySwapchainKHR"
413       (device : VkDevice
414        swapchain : VkSwapchain
415        allocator : Allocator)
416   
417   def device_wait_idle "vkDeviceWaitIdle" (device : VkDevice) : Result
418   
419   def end_command_buffer "vkEndCommandBuffer" (command_buffer : VkCommandBuffer) : Result
420   
421   def enumerate_device_extension_properties "vkEnumerateDeviceExtensionProperties"
422       (physical_device : VkPhysicalDevice
423        layer_name : ptr CChar
424        property_count : mut ptr u32
425        properties : mut ptr ExtensionProperties) : Result
426   
427   def enumerate_instance_extension_properties "vkEnumerateInstanceExtensionProperties"
428       (layer_name : CString
429        property_count : mut ptr u32
430        properties : mut ptr ExtensionProperties) : Result
431   
432   def enumerate_instance_layer_properties "vkEnumerateInstanceLayerProperties"
433       (property_count : mut ptr u32
434        properties : mut ptr LayerProperties) : Result
435   
436   def enumerate_physical_devices "vkEnumeratePhysicalDevices"
437       (instance : VkInstance
438        physical_device_count : mut ptr u32
439        physical_devices : mut ptr VkPhysicalDevice) : Result
440   
441   def free_command_buffers "vkFreeCommandBuffers"
442       (device : VkDevice
443        command_pool : VkCommandPool
444        command_buffer_count : u32
445        command_buffers : ptr VkCommandBuffer)
446   
447   def free_descriptor_sets "vkFreeDescriptorSets"
448       (device : VkDevice
449        descriptor_pool : VkDescriptorPool
450        descriptor_set_count : u32
451        descriptor_sets : ptr VkDescriptorSet) : Result
452   
453   def free_memory "vkFreeMemory"
454       (device : VkDevice
455        memory : VkMemory
456        allocator : Allocator)
457   
458   def get_buffer_memory_requirements "vkGetBufferMemoryRequirements"
459       (device : VkDevice
460        buffer : VkBuffer
461        memory_requirements : mut ptr MemoryRequirements)
462   
463   def get_device_queue "vkGetDeviceQueue"
464       (device : VkDevice
465        queue_family_index : u32
466        queue_index : u32
467        queue : mut ptr VkQueue)
468   
469   def get_image_memory_requirements "vkGetImageMemoryRequirements"
470       (device : VkDevice
471        image : VkImage
472        memory_requirements : mut ptr MemoryRequirements)
473   
474   def get_instance_proc_addr "vkGetInstanceProcAddr"
475       (instance : VkInstance
476        name : CString) : Ptr
477   
478   def get_physical_device_features "vkGetPhysicalDeviceFeatures"
479       (physical_device : VkPhysicalDevice
480        features : mut ptr PhysicalDeviceFeatures)
481   
482   def get_physical_device_format_properties "vkGetPhysicalDeviceFormatProperties"
483       (physical_device : VkPhysicalDevice
484        format : VkFormat
485        format_properties : mut ptr FormatProperties)
486   
487   def get_physical_device_memory_properties "vkGetPhysicalDeviceMemoryProperties"
488       (physical_device : VkPhysicalDevice
489        memory_properties : mut ptr PhysicalDeviceMemoryProperties)
490   
491   def get_physical_device_properties "vkGetPhysicalDeviceProperties"
492       (physical_device : VkPhysicalDevice
493        properties : mut ptr PhysicalDeviceProperties)
494   
495   def get_physical_device_queue_family_properties "vkGetPhysicalDeviceQueueFamilyProperties"
496       (physical_device : VkPhysicalDevice
497        queue_family_property_count : mut ptr u32
498        queue_family_properties : mut ptr QueueFamilyProperties)
499   
500   def get_physical_device_surface_capabilities_khr "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
501       (physical_device : VkPhysicalDevice
502        surface : VkSurface
503        surface_capabilities : mut ptr SurfaceCapabilitiesKhr) : Result
504   
505   def get_physical_device_surface_formats_khr "vkGetPhysicalDeviceSurfaceFormatsKHR"
506       (physical_device : VkPhysicalDevice
507        surface : VkSurface
508        surface_format_count : mut ptr u32
509        surface_formats : mut ptr SurfaceFormatKhr) : Result
510   
511   def get_physical_device_surface_present_modes_khr "vkGetPhysicalDeviceSurfacePresentModesKHR"
512       (physical_device : VkPhysicalDevice
513        surface : VkSurface
514        present_mode_count : mut ptr u32
515        present_modes : ptr PresentModeKhr) : Result
516   
517   def get_physical_device_surface_support_khr "vkGetPhysicalDeviceSurfaceSupportKHR"
518       (physical_device : VkPhysicalDevice
519        queue_family_index : u32
520        surface : VkSurface
521        supported : mut ptr u32) : Result
522   
523   def get_query_pool_results "vkGetQueryPoolResults"
524       (device : VkDevice
525        query_pool : VkQueryPool
526        first_query : u32
527        query_count : u32
528        data_size : usize
529        data : Ptr
530        stride : u64
531        flags : QueryResultFlags) : Result
532   
533   def get_swapchain_images_khr "vkGetSwapchainImagesKHR"
534       (device : VkDevice
535        swapchain : VkSwapchain
536        swapchain_image_count : mut ptr u32
537        swapchain_images : mut ptr VkImage) : Result
538   
539   def map_memory "vkMapMemory"
540       (device : VkDevice
541        memory : VkMemory
542        offset : u64
543        size : u64
544        flags : MemoryMapFlags
545        data : mut ptr MutPtr) : Result
546   
547   def queue_present_khr "vkQueuePresentKHR"
548       (queue : VkQueue
549        present_info : ptr PresentInfoKhr) : Result
550   
551   def queue_submit "vkQueueSubmit"
552       (queue : VkQueue
553        submit_count : u32
554        submits : ptr SubmitInfo
555        fence : VkFence) : Result
556   
557   def queue_wait_idle "vkQueueWaitIdle" (queue : VkQueue) : Result
558   
559   def reset_command_buffer "vkResetCommandBuffer"
560       (command_buffer : VkCommandBuffer
561        flags : u32) : Result
562   
563   def reset_fences "vkResetFences"
564       (device : VkDevice
565        fence_count : u32
566        fences : ptr VkFence) : Result
567   
568   def unmap_memory "vkUnmapMemory" (device : VkDevice
569                                     memory : VkMemory)
570   
571   def update_descriptor_sets "vkUpdateDescriptorSets"
572       (device : VkDevice
573        descriptor_write_count : u32
574        descriptor_writes : ptr WriteDescriptorSet
575        descriptor_copy_count : u32
576        descriptor_copies : ptr CopyDescriptorSet)
577   
578   def wait_for_fences "vkWaitForFences"
579       (device : VkDevice
580        fence_count : u32
581        fences : ptr VkFence
582        wait_all : u32
583        timeout : u64) : Result
584