nuclear@3: #ifndef VKU_H_ nuclear@3: #define VKU_H_ nuclear@3: nuclear@4: #ifdef __unix__ nuclear@4: #define VK_USE_PLATFORM_XLIB_KHR nuclear@4: #endif nuclear@4: nuclear@3: #include nuclear@3: nuclear@3: VkInstance vk; nuclear@3: VkDevice vkdev; nuclear@3: VkQueue vkq; nuclear@3: VkCommandPool vkcmdpool; nuclear@4: VkCommandBuffer vkcmdbuf; /* primary command buffer */ nuclear@3: nuclear@4: struct vku_buffer { nuclear@3: VkBuffer buf; nuclear@3: VkDeviceMemory mem_pool; nuclear@3: int mem_start, mem_size; nuclear@3: }; nuclear@3: nuclear@4: int vku_have_extension(const char *name); nuclear@4: int vku_have_device_extension(const char *name); nuclear@4: nuclear@3: int vku_create_dev(void); nuclear@3: void vku_cleanup(void); nuclear@3: nuclear@4: VkCommandBuffer vku_alloc_cmdbuf(VkCommandPool pool, VkCommandBufferLevel level); nuclear@4: void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf); nuclear@3: nuclear@4: void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags); nuclear@4: void vku_end_cmdbuf(VkCommandBuffer buf); nuclear@4: void vku_reset_cmdbuf(VkCommandBuffer buf); nuclear@4: nuclear@4: void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence); nuclear@4: nuclear@5: VkSwapchainKHR vku_create_swapchain(VkSurfaceKHR surf, int xsz, int ysz, int n, nuclear@5: VkPresentModeKHR pmode, VkSwapchainKHR prev); nuclear@5: nuclear@4: struct vku_buffer *vku_create_buffer(int sz, unsigned int usage); nuclear@4: void vku_destroy_buffer(struct vku_buffer *buf); nuclear@4: nuclear@4: void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs, nuclear@4: VkBuffer src, int soffs, int size); nuclear@4: nuclear@4: /* platform-specific */ nuclear@4: #ifdef VK_USE_PLATFORM_XLIB_KHR nuclear@4: #include nuclear@4: int vku_xlib_usable_visual(Display *dpy, VisualID vid); nuclear@5: VkSurfaceKHR vku_xlib_create_surface(Display *dpy, Window win); nuclear@4: #endif nuclear@3: nuclear@3: #endif /* VKU_H_ */