X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fvulkan%2Fvkutil.h;h=775fd2735d1775ef4bc68f90b6d2d41ed46e7631;hb=dbce2a319517c09fcf1a9be60ae46a0ff20c423e;hp=396209f1a291f4f77ad399a803fbc6877477a1ac;hpb=8fb0cca684e078cd2537070c53ad970ebbc2e9a7;p=demo diff --git a/src/vulkan/vkutil.h b/src/vulkan/vkutil.h index 396209f..775fd27 100644 --- a/src/vulkan/vkutil.h +++ b/src/vulkan/vkutil.h @@ -10,22 +10,10 @@ extern VkCommandPool vk_pool; 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 VkDescriptorPool vk_dpool; +extern VkRenderPass vk_renderpass; struct vku_buffer { VkBuffer buf; @@ -33,6 +21,45 @@ struct vku_buffer { int mem_start, mem_size; }; +struct vku_descriptor { + VkDescriptorSetLayout layout; + VkDescriptorType type; + VkFlags stage_flags; + int binding_point; + int size; +}; + +struct vku_pipeline { +}; + +struct vku_pipeline_info { + /* shader stages */ + VkShaderModule vs; + VkShaderModule fs; + + /* states info */ + + VkPipelineShaderStageCreateInfo inf_shader_stage; + + VkPipelineVertexInputStateCreateInfo inf_vertex_input; + + VkPipelineInputAssemblyStateCreateInfo inf_input_asm; + + VkPipelineTessellationStateCreateInfo inf_tessel; + + VkPipelineViewportStateCreateInfo inf_viewport; + VkPipelineRasterizationStateCreateInfo inf_raster; + VkPipelineMultisampleStateCreateInfo inf_multisample; + VkPipelineDepthStencilStateCreateInfo inf_depth_stencil; + VkPipelineColorBlendStateCreateInfo inf_colorblend; + + VkPipelineDynamicStateCreateInfo inf_dynamic_state; + + VkPipelineLayout layout; + VkRenderPass renderpass; + uint32_t subpass; +}; + /* extensions */ bool vku_have_extension(const char *name); bool vku_have_device_extension(const char *name); @@ -41,11 +68,9 @@ 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); void vku_free_cmdbuf(VkCommandPool pool, VkCommandBuffer buf); void vku_begin_cmdbuf(VkCommandBuffer buf, unsigned int flags); @@ -53,33 +78,30 @@ void vku_end_cmdbuf(VkCommandBuffer buf); void vku_reset_cmdbuf(VkCommandBuffer buf); void vku_submit_cmdbuf(VkQueue q, VkCommandBuffer buf, VkFence done_fence); -/* swapchain */ -VkSwapchainKHR vku_create_swapchain(VkSurfaceKHR surf, int xsz, int ysz, int n, - VkPresentModeKHR pmode, VkSwapchainKHR prev); -VkImage *vku_get_swapchain_images(VkSwapchainKHR sc, int *count); -VkImageView *vku_create_image_views(VkImage *images, int count); +bool vku_get_surface_format(VkPhysicalDevice gpu, VkSurfaceKHR surface, VkSurfaceFormatKHR *sformat); +VkColorSpaceKHR vku_get_surface_colorspace(VkPhysicalDevice gpu, VkSurfaceKHR surface); + int vku_get_next_image(VkSwapchainKHR sc); void vku_present(VkSwapchainKHR sc, int img_idx); -/* rederpass */ -bool vku_create_renderpass(); - -/* framebuffer */ -bool vku_create_framebuffers(VkImageView *image_views, int count, int w, int h); - /* 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); -/* pipeline */ -bool vku_create_graphics_pipeline(VkPipelineLayout *layout); +/* pipelines */ +vku_descriptor *vku_create_descriptor(VkDescriptorType type, VkFlags stage, + int binding_point, int size); +void vku_destroy_descriptor(vku_descriptor *descriptor); -/* descriptor set */ -//bool vku_create_descriptor_set() +bool vku_create_descriptor_pool(vku_descriptor **descriptors, int num_desc, + VkDescriptorSet set); +void vku_destroy_descriptor_pool(); #endif // VKUTIL_H_