4 #include <vulkan/vulkan.h>
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;
14 extern VkPipeline *vkgparent_pipeline;
15 extern VkDescriptorSet *vkdescset;
16 extern VkFramebuffer *vkfbufs;
17 extern VkRenderPass vkrpass;
18 extern VkInstance vkinst;
19 extern VkCommandBuffer vkcmdbuf; /* primary command buffer */
23 extern int vknum_swapchain_images;
24 extern VkImage *vkswapchain_images;
25 extern VkImageView *vkswapchain_views;
26 extern int vk_curr_swapchain_image;
27 extern VkSemaphore vk_img_avail_sema;
28 extern VkSemaphore vk_rend_done_sema;
32 VkDeviceMemory mem_pool;
33 int mem_start, mem_size;
37 bool vku_have_extension(const char *name);
38 bool vku_have_device_extension(const char *name);
41 bool vku_create_device();
45 bool vku_create_semaphores();
48 VkCommandBuffer vku_alloc_cmdbuf(VkCommandPool pool, VkCommandBufferLevel level);
49 bool vku_alloc_cmdbufs(VkCommandPool pool, VkCommandBufferLevel level, unsigned int count, VkCommandBuffer *buf_array);
50 void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf);
52 void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
53 void vku_end_cmdbuf(VkCommandBuffer buf);
54 void vku_reset_cmdbuf(VkCommandBuffer buf);
55 void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence);
57 bool vku_get_surface_format(VkPhysicalDevice gpu, VkSurfaceKHR surface, VkSurfaceFormatKHR *sformat);
58 VkColorSpaceKHR vku_get_surface_colorspace(VkPhysicalDevice gpu, VkSurfaceKHR surface);
60 int vku_get_next_image(VkSwapchainKHR sc);
61 void vku_present(VkSwapchainKHR sc, int img_idx);
64 vku_buffer *vku_create_buffer(int sz, unsigned int usage);
65 void vku_destroy_buffer(vku_buffer *buf);
66 void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs,
67 VkBuffer src, int soffs, int size);
70 const char *vku_get_vulkan_error_str(VkResult error);