quick backup
[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 VkPipeline *vkgraphics_pipeline;
8 extern VkDescriptorSet *vkdescset;
9 extern VkFramebuffer *vkfbufs;
10 extern VkRenderPass vkrpass;
11 extern VkSwapchainKHR vkswapchain;
12 extern VkImage *vkswapchain_images;
13 extern VkImageView *vkswapchain_views;
14 extern int vknum_swapchain_images;
15 extern VkSurfaceKHR vksurface;
16 extern VkInstance vkinst;
17 extern VkPhysicalDevice vkpdev;
18 extern VkDevice vkdev;
19 extern VkQueue vkq;
20 extern VkCommandPool vkcmdpool;
21 extern VkCommandBuffer vkcmdbuf;        /* primary command buffer */
22 extern int vkqfamily;
23 extern int vknext_swapchain_image;
24
25 struct vku_buffer {
26         VkBuffer buf;
27         VkDeviceMemory mem_pool;
28         int mem_start, mem_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 void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf);
42
43 void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
44 void vku_end_cmdbuf(VkCommandBuffer buf);
45 void vku_reset_cmdbuf(VkCommandBuffer buf);
46 void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence);
47
48 /* swapchain */
49 VkSwapchainKHR vku_create_swapchain(VkSurfaceKHR surf, int xsz, int ysz, int n,
50                 VkPresentModeKHR pmode, VkSwapchainKHR prev);
51 VkImage *vku_get_swapchain_images(VkSwapchainKHR sc, int *count);
52 VkImageView *vku_create_image_views(VkImage *images, int count);
53 int vku_get_next_image(VkSwapchainKHR sc);
54 void vku_present(VkSwapchainKHR sc, int img_idx);
55
56 /* rederpass */
57 bool vku_create_renderpass();
58
59 /* framebuffer */
60 bool vku_create_framebuffers(VkImageView *image_views, int count, int w, int h);
61
62 /* buffers */
63 vku_buffer *vku_create_buffer(int sz, unsigned int usage);
64 void vku_destroy_buffer(vku_buffer *buf);
65 void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs,
66         VkBuffer src, int soffs, int size);
67
68 /* other */
69 const char *vku_get_vulkan_error_str(VkResult error);
70
71 /* pipeline */
72 bool vku_create_graphics_pipeline(VkPipelineLayout *layout);
73
74 /* descriptor set */
75 //bool vku_create_descriptor_set()
76
77 #endif // VKUTIL_H_