extern VkSurfaceKHR vksurface;
extern VkInstance vkinst;
extern VkPhysicalDevice vkpdev;
extern VkSurfaceKHR vksurface;
extern VkInstance vkinst;
extern VkPhysicalDevice vkpdev;
void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
void vku_end_cmdbuf(VkCommandBuffer buf);
void vku_reset_cmdbuf(VkCommandBuffer buf);
void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
void vku_end_cmdbuf(VkCommandBuffer buf);
void vku_reset_cmdbuf(VkCommandBuffer buf);
void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence);
/* swapchain */
VkSwapchainKHR vku_create_swapchain(VkSurfaceKHR surf, int xsz, int ysz, int n,
VkPresentModeKHR pmode, VkSwapchainKHR prev);
VkImage *vku_get_swapchain_images(VkSwapchainKHR sc, int *count);
void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence);
/* swapchain */
VkSwapchainKHR vku_create_swapchain(VkSurfaceKHR surf, int xsz, int ysz, int n,
VkPresentModeKHR pmode, VkSwapchainKHR prev);
VkImage *vku_get_swapchain_images(VkSwapchainKHR sc, int *count);
int vku_get_next_image(VkSwapchainKHR sc);
void vku_present(VkSwapchainKHR sc, int img_idx);
int vku_get_next_image(VkSwapchainKHR sc);
void vku_present(VkSwapchainKHR sc, int img_idx);
/* buffers */
vku_buffer *vku_create_buffer(int sz, unsigned int usage);
void vku_destroy_buffer(vku_buffer *buf);
/* buffers */
vku_buffer *vku_create_buffer(int sz, unsigned int usage);
void vku_destroy_buffer(vku_buffer *buf);
void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs,
VkBuffer src, int soffs, int size);
/* other */
const char *vku_get_vulkan_error_str(VkResult error);
void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs,
VkBuffer src, int soffs, int size);
/* other */
const char *vku_get_vulkan_error_str(VkResult error);