some descriptor functions in vkutil - wip
[demo] / src / vulkan / vkutil.h
index 71943bd..1c9ceac 100644 (file)
@@ -10,22 +10,9 @@ 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 VkCommandBuffer vkcmdbuf;       /* primary command buffer */
-extern int vkqfamily;
-
-/* 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;
+extern VkInstance vk_instance;
+extern int vk_qfamily;
+extern VkDescriptorPool vk_dpool;
 
 struct vku_buffer {
        VkBuffer buf;
@@ -33,6 +20,14 @@ struct vku_buffer {
        int mem_start, mem_size;
 };
 
+struct vku_descriptor {
+       VkDescriptorSetLayout layout;
+       VkDescriptorType type;
+       VkFlags stage_flags;
+       int binding_point;
+       int size;
+};
+
 /* extensions */
 bool vku_have_extension(const char *name);
 bool vku_have_device_extension(const char *name);
@@ -41,9 +36,6 @@ 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);
@@ -63,11 +55,20 @@ 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);
+bool vku_update_buffer(vku_buffer *buf, int size, void *data);
+
 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);
 
+/* pipelines */
+vku_descriptor *vku_create_descriptor(VkDescriptorType type, VkFlags stage,
+               int binding_point, int size);
+void vku_destroy_descriptor(vku_descriptor *descriptor);
+
+bool vku_create_descriptor_pool(vku_descriptor **descriptors, int num_desc, VkDescriptorSet set);
+void vku_destroy_descriptor_pool();
 
 #endif // VKUTIL_H_