clear color works
[demo] / src / vulkan / vkutil.h
index f9cbf94..71943bd 100644 (file)
@@ -2,18 +2,30 @@
 #define VKUTIL_H_
 
 #include <vulkan/vulkan.h>
+#include <vector>
 
-extern VkSwapchainKHR vkswapchain;
-extern VkImage *vkswapchain_images;
-extern VkSurfaceKHR vksurface;
+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;
-extern int vknext_swapchain_image;
+
+/* presentation */
+extern int vknum_swapchain_images;
+extern VkImage *vkswapchain_images;
+extern VkImageView *vkswapchain_views;
+extern int vk_curr_swapchain_image;
+extern VkSemaphore vk_img_avail_sema;
+extern VkSemaphore vk_rend_done_sema;
 
 struct vku_buffer {
        VkBuffer buf;
@@ -29,31 +41,33 @@ bool vku_have_device_extension(const char *name);
 bool vku_create_device();
 void vku_cleanup();
 
+/* semaphores */
+bool vku_create_semaphores();
+
 /* 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_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);
+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);
 
 /* 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);
 
-#endif // VKUTIL_H_
\ No newline at end of file
+
+#endif // VKUTIL_H_