#include <vulkan/vulkan.h>
#include <vector>
+extern VkPhysicalDevice vk_physical;
+extern VkDevice vk_device;
+extern VkCommandPool vk_pool;
+extern VkQueue vk_queue;
+extern VkSwapchainKHR vk_swapchain;
+extern VkSurfaceKHR vk_surface;
+
extern VkPipeline *vkgparent_pipeline;
extern VkDescriptorSet *vkdescset;
extern VkFramebuffer *vkfbufs;
extern VkRenderPass vkrpass;
extern VkInstance vkinst;
-extern VkPhysicalDevice vkpdev;
-extern VkDevice vkdev;
-extern VkQueue vkq;
-extern VkCommandPool vkcmdpool;
extern VkCommandBuffer vkcmdbuf; /* primary command buffer */
extern int vkqfamily;
/* presentation */
-extern VkSurfaceKHR vksurface;
-extern VkSwapchainKHR vkswapchain;
extern int vknum_swapchain_images;
extern VkImage *vkswapchain_images;
extern VkImageView *vkswapchain_views;
/* command buffers */
VkCommandBuffer vku_alloc_cmdbuf(VkCommandPool pool, VkCommandBufferLevel level);
+bool vku_alloc_cmdbufs(VkCommandPool pool, VkCommandBufferLevel level, unsigned int count, VkCommandBuffer *buf_array);
void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf);
void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
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);
-VkImageView *vku_create_image_views(VkImage *images, int count);
+bool vku_get_surface_format(VkPhysicalDevice gpu, VkSurfaceKHR surface, VkSurfaceFormatKHR *sformat);
+VkColorSpaceKHR vku_get_surface_colorspace(VkPhysicalDevice gpu, VkSurfaceKHR surface);
+
int vku_get_next_image(VkSwapchainKHR sc);
void vku_present(VkSwapchainKHR sc, int img_idx);
-/* rederpass */
-bool vku_create_renderpass();
-
-/* framebuffer */
-bool vku_create_framebuffers(VkImageView *image_views, int count, int w, int h);
-
/* buffers */
vku_buffer *vku_create_buffer(int sz, unsigned int usage);
void vku_destroy_buffer(vku_buffer *buf);
/* other */
const char *vku_get_vulkan_error_str(VkResult error);
-/* pipeline */
-bool vku_create_graphics_pipeline(VkPipelineLayout *layout);
-
-/* descriptor set */
-//bool vku_create_descriptor_set()
#endif // VKUTIL_H_