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@7
|
22
|
nuclear@12
|
23 VkViewport vkvport;
|
nuclear@13
|
24 VkRenderPass vkrpass;
|
nuclear@12
|
25
|
nuclear@7
|
26
|
nuclear@4
|
27 struct vku_buffer {
|
nuclear@3
|
28 VkBuffer buf;
|
nuclear@3
|
29 VkDeviceMemory mem_pool;
|
nuclear@3
|
30 int mem_start, mem_size;
|
nuclear@3
|
31 };
|
nuclear@3
|
32
|
nuclear@4
|
33 int vku_have_extension(const char *name);
|
nuclear@4
|
34 int vku_have_device_extension(const char *name);
|
nuclear@4
|
35
|
nuclear@15
|
36 void vku_set_debug_callback(void (*func)(const char*, void*), void *cls);
|
nuclear@15
|
37
|
nuclear@3
|
38 int vku_create_dev(void);
|
nuclear@3
|
39 void vku_cleanup(void);
|
nuclear@3
|
40
|
nuclear@4
|
41 VkCommandBuffer vku_alloc_cmdbuf(VkCommandPool pool, VkCommandBufferLevel level);
|
nuclear@4
|
42 void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf);
|
nuclear@3
|
43
|
nuclear@4
|
44 void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
|
nuclear@4
|
45 void vku_end_cmdbuf(VkCommandBuffer buf);
|
nuclear@4
|
46 void vku_reset_cmdbuf(VkCommandBuffer buf);
|
nuclear@4
|
47
|
nuclear@4
|
48 void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence);
|
nuclear@4
|
49
|
nuclear@5
|
50 VkSwapchainKHR vku_create_swapchain(VkSurfaceKHR surf, int xsz, int ysz, int n,
|
nuclear@14
|
51 VkFormat fmt, VkPresentModeKHR pmode, VkSwapchainKHR prev);
|
nuclear@6
|
52 VkImage *vku_get_swapchain_images(VkSwapchainKHR sc, int *count);
|
nuclear@6
|
53 int vku_get_next_image(VkSwapchainKHR sc);
|
nuclear@6
|
54 void vku_present(VkSwapchainKHR sc, int img_idx);
|
nuclear@5
|
55
|
nuclear@14
|
56 VkImageView vku_create_view(VkImage img, VkFormat fmt);
|
nuclear@14
|
57 void vku_destroy_view(VkImageView view);
|
nuclear@14
|
58
|
nuclear@14
|
59 VkFramebuffer vku_create_framebuffer(VkImageView view, int width, int height, VkRenderPass rpass);
|
nuclear@14
|
60 void vku_destroy_framebuffer(VkFramebuffer fb);
|
nuclear@14
|
61
|
nuclear@4
|
62 struct vku_buffer *vku_create_buffer(int sz, unsigned int usage);
|
nuclear@4
|
63 void vku_destroy_buffer(struct vku_buffer *buf);
|
nuclear@4
|
64
|
nuclear@4
|
65 void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs,
|
nuclear@4
|
66 VkBuffer src, int soffs, int size);
|
nuclear@4
|
67
|
nuclear@13
|
68 VkRenderPass vku_create_renderpass(VkFormat cfmt, VkFormat dsfmt);
|
nuclear@13
|
69 void vku_destroy_renderpass(VkRenderPass rpass);
|
nuclear@15
|
70 void vku_begin_renderpass(VkCommandBuffer cmdbuf, VkRenderPass rpass, VkFramebuffer fb,
|
nuclear@15
|
71 VkSubpassContents cont);
|
nuclear@15
|
72 void vku_end_renderpass(VkCommandBuffer cmdbuf);
|
nuclear@13
|
73
|
nuclear@4
|
74 /* platform-specific */
|
nuclear@4
|
75 #ifdef VK_USE_PLATFORM_XLIB_KHR
|
nuclear@4
|
76 #include <X11/Xlib.h>
|
nuclear@4
|
77 int vku_xlib_usable_visual(Display *dpy, VisualID vid);
|
nuclear@5
|
78 VkSurfaceKHR vku_xlib_create_surface(Display *dpy, Window win);
|
nuclear@4
|
79 #endif
|
nuclear@3
|
80
|
nuclear@3
|
81 #endif /* VKU_H_ */
|