vulkan_test2

annotate src/vku.h @ 17:f8bd29f124a8

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Wed, 27 Jun 2018 01:57:55 +0300
parents 196122a2b8c2
children
rev   line source
nuclear@3 1 #ifndef VKU_H_
nuclear@3 2 #define VKU_H_
nuclear@3 3
nuclear@4 4 #ifdef __unix__
nuclear@4 5 #define VK_USE_PLATFORM_XLIB_KHR
nuclear@4 6 #endif
nuclear@4 7
nuclear@3 8 #include <vulkan/vulkan.h>
nuclear@3 9
nuclear@3 10 VkInstance vk;
nuclear@3 11 VkDevice vkdev;
nuclear@3 12 VkQueue vkq;
nuclear@3 13 VkCommandPool vkcmdpool;
nuclear@4 14 VkCommandBuffer vkcmdbuf; /* primary command buffer */
nuclear@3 15
nuclear@14 16 int swapchain_size;
nuclear@7 17 VkImage *swapchain_images;
nuclear@14 18 VkFormat swapchain_image_fmt;
nuclear@14 19 VkImageView *swapchain_views;
nuclear@7 20 int next_swapchain_image;
nuclear@14 21 VkFramebuffer *swapchain_framebuf;
nuclear@17 22 VkSemaphore swapchain_getimg_sem;
nuclear@17 23 VkCommandBuffer *swapchain_cmdbuf;
nuclear@7 24
nuclear@12 25 VkViewport vkvport;
nuclear@13 26 VkRenderPass vkrpass;
nuclear@12 27
nuclear@7 28
nuclear@4 29 struct vku_buffer {
nuclear@3 30 VkBuffer buf;
nuclear@3 31 VkDeviceMemory mem_pool;
nuclear@3 32 int mem_start, mem_size;
nuclear@3 33 };
nuclear@3 34
nuclear@4 35 int vku_have_extension(const char *name);
nuclear@4 36 int vku_have_device_extension(const char *name);
nuclear@4 37
nuclear@15 38 void vku_set_debug_callback(void (*func)(const char*, void*), void *cls);
nuclear@15 39
nuclear@3 40 int vku_create_dev(void);
nuclear@3 41 void vku_cleanup(void);
nuclear@3 42
nuclear@4 43 VkCommandBuffer vku_alloc_cmdbuf(VkCommandPool pool, VkCommandBufferLevel level);
nuclear@4 44 void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf);
nuclear@3 45
nuclear@4 46 void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
nuclear@4 47 void vku_end_cmdbuf(VkCommandBuffer buf);
nuclear@4 48 void vku_reset_cmdbuf(VkCommandBuffer buf);
nuclear@4 49
nuclear@17 50 void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkSemaphore sem_wait,
nuclear@17 51 VkSemaphore sem_done, VkFence done_fence);
nuclear@4 52
nuclear@5 53 VkSwapchainKHR vku_create_swapchain(VkSurfaceKHR surf, int xsz, int ysz, int n,
nuclear@14 54 VkFormat fmt, VkPresentModeKHR pmode, VkSwapchainKHR prev);
nuclear@6 55 VkImage *vku_get_swapchain_images(VkSwapchainKHR sc, int *count);
nuclear@17 56 int vku_get_next_image(VkSwapchainKHR sc, VkSemaphore semdone);
nuclear@17 57 void vku_present(VkSwapchainKHR sc, int img_idx, VkSemaphore sem_wait);
nuclear@5 58
nuclear@14 59 VkImageView vku_create_view(VkImage img, VkFormat fmt);
nuclear@14 60 void vku_destroy_view(VkImageView view);
nuclear@14 61
nuclear@14 62 VkFramebuffer vku_create_framebuffer(VkImageView view, int width, int height, VkRenderPass rpass);
nuclear@14 63 void vku_destroy_framebuffer(VkFramebuffer fb);
nuclear@14 64
nuclear@4 65 struct vku_buffer *vku_create_buffer(int sz, unsigned int usage);
nuclear@4 66 void vku_destroy_buffer(struct vku_buffer *buf);
nuclear@4 67
nuclear@4 68 void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs,
nuclear@4 69 VkBuffer src, int soffs, int size);
nuclear@4 70
nuclear@13 71 VkRenderPass vku_create_renderpass(VkFormat cfmt, VkFormat dsfmt);
nuclear@13 72 void vku_destroy_renderpass(VkRenderPass rpass);
nuclear@15 73 void vku_begin_renderpass(VkCommandBuffer cmdbuf, VkRenderPass rpass, VkFramebuffer fb,
nuclear@15 74 VkSubpassContents cont);
nuclear@15 75 void vku_end_renderpass(VkCommandBuffer cmdbuf);
nuclear@13 76
nuclear@17 77 VkSemaphore vku_create_semaphore(void);
nuclear@17 78 void vku_destroy_semaphore(VkSemaphore s);
nuclear@17 79
nuclear@17 80 VkFence vku_create_fence(void);
nuclear@17 81 void vku_destroy_fence(VkFence f);
nuclear@17 82 void vku_wait_fence(VkFence f);
nuclear@17 83
nuclear@4 84 /* platform-specific */
nuclear@4 85 #ifdef VK_USE_PLATFORM_XLIB_KHR
nuclear@4 86 #include <X11/Xlib.h>
nuclear@4 87 int vku_xlib_usable_visual(Display *dpy, VisualID vid);
nuclear@5 88 VkSurfaceKHR vku_xlib_create_surface(Display *dpy, Window win);
nuclear@4 89 #endif
nuclear@3 90
nuclear@3 91 #endif /* VKU_H_ */