4 #include <vulkan/vulkan.h>
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;
20 extern VkCommandPool vkcmdpool;
21 extern VkCommandBuffer vkcmdbuf; /* primary command buffer */
23 extern int vknext_swapchain_image;
27 VkDeviceMemory mem_pool;
28 int mem_start, mem_size;
32 bool vku_have_extension(const char *name);
33 bool vku_have_device_extension(const char *name);
36 bool vku_create_device();
40 VkCommandBuffer vku_alloc_cmdbuf(VkCommandPool pool, VkCommandBufferLevel level);
41 void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf);
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);
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);
57 bool vku_create_renderpass();
60 bool vku_create_framebuffers(VkImageView *image_views, int count, int w, int h);
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);
69 const char *vku_get_vulkan_error_str(VkResult error);
72 bool vku_create_graphics_pipeline(VkPipelineLayout *layout);
75 //bool vku_create_descriptor_set()