4 #include <vulkan/vulkan.h>
7 extern VkPhysicalDevice vk_physical;
8 extern VkDevice vk_device;
9 extern VkCommandPool vk_pool;
10 extern VkQueue vk_queue;
11 extern VkSwapchainKHR vk_swapchain;
12 extern VkSurfaceKHR vk_surface;
13 extern VkInstance vk_instance;
14 extern int vk_qfamily;
15 extern VkDescriptorPool vk_dpool;
16 extern VkRenderPass vk_renderpass;
20 VkDeviceMemory mem_pool;
21 int mem_start, mem_size;
24 struct vku_descriptor {
25 VkDescriptorSetLayout layout;
26 VkDescriptorType type;
35 struct vku_pipeline_info {
42 VkPipelineShaderStageCreateInfo inf_shader_stage;
44 VkPipelineVertexInputStateCreateInfo inf_vertex_input;
46 VkPipelineInputAssemblyStateCreateInfo inf_input_asm;
48 VkPipelineTessellationStateCreateInfo inf_tessel;
50 VkPipelineViewportStateCreateInfo inf_viewport;
51 VkPipelineRasterizationStateCreateInfo inf_raster;
52 VkPipelineMultisampleStateCreateInfo inf_multisample;
53 VkPipelineDepthStencilStateCreateInfo inf_depth_stencil;
54 VkPipelineColorBlendStateCreateInfo inf_colorblend;
56 VkPipelineDynamicStateCreateInfo inf_dynamic_state;
58 VkPipelineLayout layout;
59 VkRenderPass renderpass;
64 bool vku_have_extension(const char *name);
65 bool vku_have_device_extension(const char *name);
68 bool vku_create_device();
72 VkCommandBuffer vku_alloc_cmdbuf(VkCommandPool pool, VkCommandBufferLevel level);
73 bool vku_alloc_cmdbufs(VkCommandPool pool, VkCommandBufferLevel level, unsigned int count, VkCommandBuffer *buf_array);
74 void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf);
76 void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags);
77 void vku_end_cmdbuf(VkCommandBuffer buf);
78 void vku_reset_cmdbuf(VkCommandBuffer buf);
79 void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence);
81 bool vku_get_surface_format(VkPhysicalDevice gpu, VkSurfaceKHR surface, VkSurfaceFormatKHR *sformat);
82 VkColorSpaceKHR vku_get_surface_colorspace(VkPhysicalDevice gpu, VkSurfaceKHR surface);
84 int vku_get_next_image(VkSwapchainKHR sc);
85 void vku_present(VkSwapchainKHR sc, int img_idx);
88 vku_buffer *vku_create_buffer(int sz, unsigned int usage);
89 void vku_destroy_buffer(vku_buffer *buf);
90 bool vku_update_buffer(vku_buffer *buf, int size, void *data);
92 void vku_cmd_copybuf(VkCommandBuffer cmdbuf, VkBuffer dest, int doffs,
93 VkBuffer src, int soffs, int size);
96 const char *vku_get_vulkan_error_str(VkResult error);
99 vku_descriptor *vku_create_descriptor(VkDescriptorType type, VkFlags stage,
100 int binding_point, int size);
101 void vku_destroy_descriptor(vku_descriptor *descriptor);
103 bool vku_create_descriptor_pool(vku_descriptor **descriptors, int num_desc,
104 VkDescriptorSet set);
105 void vku_destroy_descriptor_pool();