aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2021-01-28 23:54:50 +0100
committerladevieq <ladevie.quentin@gmail.com>2021-01-28 23:54:50 +0100
commit34c2b9b450c0f5c695a699ba4ae3f93470057ccb (patch)
treec837d808abdd083989314c525545d571812da8d5 /include
parente4180902265c36744a770e932bb0a3f204d58b28 (diff)
Convert renderer ressources creation to api calls
Diffstat (limited to 'include')
-rw-r--r--include/vk-api.hpp37
-rw-r--r--include/vk-renderer.hpp30
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;