backup - missing some
[demo] / src / vulkan / vkutil.h
1 #ifndef VKUTIL_H_
2 #define VKUTIL_H_
3
4 #include <vulkan/vulkan.h>
5 #include <vector>
6
7 extern VkPhysicalDevice vk_physical;
8 extern VkDevice vk_device;
9 extern VkCommandPool vk_pool;
10 extern VkQueue vk_queue;
11 extern VkSwapchainKHR vk_swapchain;
12 extern VkSurfaceKHR vk_surface;
13 extern VkInstance vk_instance;
14 extern int vk_qfamily;
15 extern VkRenderPass vk_renderpass;
16
17 struct vku_buffer {
18         VkBuffer buf;
19         VkDeviceMemory mem_pool;
20         int mem_start, mem_size;
21 };
22
23 struct vku_descriptor {
24         VkDescriptorSetLayout layout;
25         VkDescriptorType type;
26         VkFlags stage_flags;
27         int binding_point;
28         int size;
29 };
30
31 /* extensions */
32 bool vku_have_extension(const char *name);
33 bool vku_have_device_extension(const char *name);
34
35 /* device */
36 bool vku_create_device();
37 void vku_cleanup();
38
39 /* command buffers */
40 VkCommandBuffer vku_alloc_cmdbuf(VkCommandPool pool, VkCommandBufferLevel level);
41 bool vku_alloc_cmdbufs(VkCommandPool pool, VkCommandBufferLevel level, unsigned int count, VkCommandBuffer *buf_array);
42 void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf);
43
44 void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
45 void vku_end_cmdbuf(VkCommandBuffer buf);
46 void vku_reset_cmdbuf(VkCommandBuffer buf);
47 void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence);
48
49 bool vku_get_surface_format(VkPhysicalDevice gpu, VkSurfaceKHR surface, VkSurfaceFormatKHR *sformat);
50 VkColorSpaceKHR vku_get_surface_colorspace(VkPhysicalDevice gpu, VkSurfaceKHR surface);
51
52 int vku_get_next_image(VkSwapchainKHR sc);
53 void vku_present(VkSwapchainKHR sc, int img_idx);
54
55 /* buffers */
56 vku_buffer *vku_create_buffer(int sz, unsigned int usage);
57 void vku_destroy_buffer(vku_buffer *buf);
58 bool vku_update_buffer(vku_buffer *buf, int size, void *data);
59
60 void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs,
61         VkBuffer src, int soffs, int size);
62
63 /* other */
64 const char *vku_get_vulkan_error_str(VkResult error);
65
66 /* pipelines */
67 vku_descriptor *vku_create_descriptor(VkDescriptorType type, VkFlags stage,
68                 int binding_point, int size);
69 void vku_destroy_descriptor(vku_descriptor *descriptor);
70
71 bool vku_create_descriptor_pool(vku_descriptor **descriptors, int num_desc,
72                 VkDescriptorSet set);
73
74 /*
75 void vku_destroy_descriptor_pool();*/
76
77 #endif // VKUTIL_H_