diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-01-28 23:54:50 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-01-28 23:54:50 +0100 |
| commit | 34c2b9b450c0f5c695a699ba4ae3f93470057ccb (patch) | |
| tree | c837d808abdd083989314c525545d571812da8d5 /include | |
| parent | e4180902265c36744a770e932bb0a3f204d58b28 (diff) | |
Convert renderer ressources creation to api calls
Diffstat (limited to 'include')
| -rw-r--r-- | include/vk-api.hpp | 37 | ||||
| -rw-r--r-- | include/vk-renderer.hpp | 30 |
2 files changed, 37 insertions, 30 deletions
diff --git a/include/vk-api.hpp b/include/vk-api.hpp index 690b91f..52ebef6 100644 --- a/include/vk-api.hpp +++ b/include/vk-api.hpp @@ -1,6 +1,8 @@ #ifndef __VK_API_HPP_ #define __VK_API_HPP_ +#include <vector> + #include "vk-context.hpp" struct Buffer { @@ -9,16 +11,47 @@ struct Buffer { void* mapped_ptr; }; +struct ComputePipeline { + VkShaderModule shader_module; + VkDescriptorSetLayout descriptor_set_layout; + VkPipelineLayout layout; + VkPipeline vkpipeline; +}; + class vkapi { public: - vkapi() = default; + vkapi(); + ~vkapi(); Buffer create_buffer(size_t data_size, VkBufferUsageFlags buffer_usage, VmaMemoryUsage mem_usage); void destroy_buffer(Buffer& buffer); + VkFence create_fence(); + void destroy_fence(VkFence fence); + std::vector<VkFence> create_fences(size_t fences_count); + void destroy_fences(std::vector<VkFence> fences); + + VkSemaphore create_semaphore(); + void destroy_semaphore(VkSemaphore semaphore); + std::vector<VkSemaphore> create_semaphores(size_t semaphores_count); + void destroy_semaphores(std::vector<VkSemaphore> &semaphores); + + std::vector<VkCommandBuffer> create_command_buffers(size_t command_buffers_count); + void destroy_command_buffers(std::vector<VkCommandBuffer> command_buffers); + + ComputePipeline create_compute_pipeline(const char* shader_path, std::vector<VkDescriptorSetLayoutBinding> bindings); + void destroy_compute_pipeline(ComputePipeline &pipeline); + + std::vector<VkDescriptorSet> create_descriptor_sets(VkDescriptorSetLayout descriptor_sets_layout, size_t descriptor_sets_count); + void destroy_descriptor_sets(std::vector<VkDescriptorSet> descriptor_sets); + + // private: - vkcontext context; + vkcontext context; + + VkCommandPool command_pool; + VkDescriptorPool descriptor_pool; }; diff --git a/include/vk-renderer.hpp b/include/vk-renderer.hpp index 7a2a118..c28049c 100644 --- a/include/vk-renderer.hpp +++ b/include/vk-renderer.hpp @@ -19,41 +19,21 @@ class vkrenderer { void recreate_swapchain(); - struct input_data* mapped_data; + Buffer compute_shader_buffer; private: void create_surface(window& wnd); void create_swapchain(); - void create_pipeline(); - - void create_command_buffers(); - - void create_descriptor_sets(); - - void create_fences(); - - void create_semaphores(); - void destroy_surface(); void destroy_swapchain(); void destroy_swapchain_images(); - void destroy_pipeline(); - - void destroy_command_buffers(); - void destroy_descriptor_sets(); - void destroy_fences(); - - void destroy_semaphores(); - - void destroy_input_buffer(); - void update_descriptors_buffer(); void update_descriptors_image(); @@ -64,18 +44,12 @@ class vkrenderer { uint64_t frame_index = 0; - Buffer compute_shader_buffer; - - VkCommandPool command_pool; std::vector<VkCommandBuffer> command_buffers; VkDescriptorPool descriptor_pool; std::vector<VkDescriptorSet> compute_shader_sets; - VkShaderModule compute_shader_module; - VkDescriptorSetLayout compute_shader_layout; - VkPipelineLayout compute_pipeline_layout; - VkPipeline compute_pipeline; + ComputePipeline compute_pipeline; std::vector<VkFence> submission_fences; std::vector<VkSemaphore> execution_semaphores; |
