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 VkRenderPass vk_renderpass;
struct vku_buffer {
VkBuffer buf;
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);
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);
/* 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_