aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/scene.hpp14
-rw-r--r--include/vk-api.hpp26
-rw-r--r--include/vk-renderer.hpp8
3 files changed, 26 insertions, 22 deletions
diff --git a/include/scene.hpp b/include/scene.hpp
index 2c945d4..0638387 100644
--- a/include/scene.hpp
+++ b/include/scene.hpp
@@ -47,13 +47,13 @@ public:
std::vector<float> uvs;
std::vector<material> materials;
- Buffer scene_buffer;
- Buffer indices_buffer;
- Buffer positions_buffer;
- Buffer normals_buffer;
- Buffer uvs_buffer;
- Buffer bvh_buffer;
- Buffer materials_buffer;
+ buffer scene_buffer;
+ buffer indices_buffer;
+ buffer positions_buffer;
+ buffer normals_buffer;
+ buffer uvs_buffer;
+ buffer bvh_buffer;
+ buffer materials_buffer;
std::vector<packed_bvh_node> packed_nodes;
};
diff --git a/include/vk-api.hpp b/include/vk-api.hpp
index 7953817..1127bd7 100644
--- a/include/vk-api.hpp
+++ b/include/vk-api.hpp
@@ -2,10 +2,11 @@
#define __VK_API_HPP_
#include <vector>
+#include <map>
#include "vk-context.hpp"
-struct Buffer {
+struct buffer {
VmaAllocation alloc;
VmaAllocationInfo alloc_info;
VkBuffer handle;
@@ -31,7 +32,7 @@ struct image {
uint32_t bindless_sampled_index;
};
-struct Swapchain {
+struct swapchain {
size_t image_count;
std::vector<image> images;
VkSwapchainKHR handle;
@@ -88,16 +89,15 @@ struct global_descriptor {
class window;
-// TODO: Make the api manage ressources
class vkapi {
public:
vkapi();
~vkapi();
- Buffer create_buffer(size_t data_size, VkBufferUsageFlags buffer_usage, VmaMemoryUsage mem_usage);
- void copy_buffer(VkCommandBuffer cmd_buf, Buffer src, Buffer dst, size_t size);
- void copy_buffer(VkCommandBuffer cmd_buf, Buffer src, image dst);
- void destroy_buffer(Buffer& buffer);
+ buffer create_buffer(size_t data_size, VkBufferUsageFlags buffer_usage, VmaMemoryUsage mem_usage);
+ void copy_buffer(VkCommandBuffer cmd_buf, buffer src, buffer dst, size_t size);
+ void copy_buffer(VkCommandBuffer cmd_buf, buffer src, image dst);
+ void destroy_buffer(buffer& buffer);
image create_image(VkExtent3D size, VkFormat format, VkImageUsageFlags usages);
@@ -149,8 +149,8 @@ class vkapi {
void destroy_surface(VkSurfaceKHR surface);
- Swapchain create_swapchain(VkSurfaceKHR surface, size_t min_image_count, VkImageUsageFlags usages, VkSwapchainKHR old_swapchain);
- void destroy_swapchain(Swapchain& swapchain);
+ swapchain create_swapchain(VkSurfaceKHR surface, size_t min_image_count, VkImageUsageFlags usages, VkSwapchainKHR old_swapchain);
+ void destroy_swapchain(swapchain& swapchain);
void update_descriptor_images(std::vector<image> &images, VkDescriptorType type);
void update_descriptor_samplers(std::vector<sampler> &samplers);
@@ -166,7 +166,7 @@ class vkapi {
void run_compute_pipeline(VkCommandBuffer command_buffer, Pipeline pipeline, size_t group_count_x, size_t group_count_y, size_t group_count_z);
void draw(VkCommandBuffer command_buffer, Pipeline pipeline, uint32_t vertex_count, uint32_t vertex_offset);
- void draw(VkCommandBuffer command_buffer, Pipeline pipeline, Buffer index_buffer, uint32_t primitive_count, uint32_t indices_offset, uint32_t vertices_offset);
+ void draw(VkCommandBuffer command_buffer, Pipeline pipeline, buffer index_buffer, uint32_t primitive_count, uint32_t indices_offset, uint32_t vertices_offset);
void blit_full(VkCommandBuffer command_buffer, image src_image, image dst_image);
@@ -174,7 +174,7 @@ class vkapi {
VkResult submit(VkCommandBuffer command_buffer, VkSemaphore wait_semaphore, VkSemaphore signal_semaphore, VkFence submission_fence);
- VkResult present(Swapchain& swapchain, uint32_t image_index, VkSemaphore wait_semaphore);
+ VkResult present(swapchain& swapchain, uint32_t image_index, VkSemaphore wait_semaphore);
// private:
vkcontext context;
@@ -185,6 +185,10 @@ class vkapi {
const char* shader_stage_extension(VkShaderStageFlags shader_stage);
+ std::map<VkBuffer, buffer> buffers;
+ std::map<VkImage, image> images;
+ std::map<VkSampler, sampler>samplers;
+
VkCommandPool command_pool;
VkDescriptorPool descriptor_pool;
diff --git a/include/vk-renderer.hpp b/include/vk-renderer.hpp
index dada742..99521a6 100644
--- a/include/vk-renderer.hpp
+++ b/include/vk-renderer.hpp
@@ -56,13 +56,13 @@ class vkrenderer {
Pipeline compute_pipeline;
- Buffer staging_buffer;
+ buffer staging_buffer;
Pipeline tonemapping_pipeline;
- std::vector<Buffer> ui_vertex_buffers;
- std::vector<Buffer> ui_index_buffers;
+ std::vector<buffer> ui_vertex_buffers;
+ std::vector<buffer> ui_index_buffers;
Pipeline ui_pipeline;
VkRenderPass render_pass;
std::vector<VkFramebuffer> framebuffers;
@@ -72,7 +72,7 @@ class vkrenderer {
std::vector<VkSemaphore> acquire_semaphores;
VkSurfaceKHR platform_surface;
- Swapchain swapchain;
+ swapchain swapchain;
const uint32_t min_swapchain_image_count = 3;
const uint32_t virtual_frames_count = 2;