From c7d19cb17877f2ce7d2d684ccbd8fbcd658008e3 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Mon, 31 Aug 2026 15:27:08 +0200 Subject: Rework sample creation, backbuffer acquisition and device_buffer members --- include/vk-command-buffer.hpp | 1 + include/vk-device-types.hpp | 33 ++++++++------------------------- include/vk-device.hpp | 15 +++------------ 3 files changed, 12 insertions(+), 37 deletions(-) (limited to 'include') diff --git a/include/vk-command-buffer.hpp b/include/vk-command-buffer.hpp index 96bc7be..b6e30e4 100644 --- a/include/vk-command-buffer.hpp +++ b/include/vk-command-buffer.hpp @@ -46,6 +46,7 @@ struct draw_indexed_params { uint32_t instance_count; }; +// TODO: Single struct with all possible commands and asserts on queue type ? struct command_buffer { void start() const; void stop() const; diff --git a/include/vk-device-types.hpp b/include/vk-device-types.hpp index 25f933f..bffaf16 100644 --- a/include/vk-device-types.hpp +++ b/include/vk-device-types.hpp @@ -30,8 +30,6 @@ struct texture_desc { struct device_texture { void init(const texture_desc& desc); - void release(); - void create_views(); [[nodiscard]] uint32_t get_storage_index() const { @@ -60,7 +58,6 @@ struct device_texture { const char* name = nullptr; - private: handle storage_index; handle sampled_index; @@ -89,21 +86,6 @@ struct sampler_desc { VkBool32 unnomalized_coords = VK_FALSE; }; -struct device_sampler { - void init(const sampler_desc& desc); - - VkSampler vk_sampler = nullptr; - - [[nodiscard]] uint32_t get_sampler_index() const { - return sampler_index.id; - } - - private: - handle sampler_index; - - static idlist<> sampler_indices; -}; - struct buffer_desc { size_t size; @@ -114,6 +96,7 @@ struct buffer_desc { }; struct device_buffer { + // TODO: allocate function must be part of another API template T* allocate() { u32 alloc_size = sizeof(T); @@ -122,7 +105,7 @@ struct device_buffer { } offset = allocated_size; - T* addr = (T*)(static_cast(mapped_ptr) + offset); + T* addr = (T*)(static_cast(cpu_ptr) + offset); allocated_size += alloc_size; return addr; } @@ -133,7 +116,7 @@ struct device_buffer { } offset = allocated_size; - void* addr = (void*)(static_cast(mapped_ptr) + offset); + void* addr = (void*)(static_cast(cpu_ptr) + offset); allocated_size += alloc_size; return addr; } @@ -145,12 +128,14 @@ struct device_buffer { u64 offset = 0U; u64 allocated_size = 0U; + // TODO: END + + VkBuffer vk_buffer; VmaAllocation alloc; - VkDeviceAddress device_address = 0U; - void* mapped_ptr; + VkDeviceAddress gpu_ptr = 0U; + void* cpu_ptr = nullptr; size_t size; - VkBufferUsageFlagBits2 usages; const char* name; }; @@ -214,6 +199,4 @@ struct device_surface { device_semaphore acquire_semaphores[surface_desc::max_image_count]; device_semaphore submit_semaphores[surface_desc::max_image_count]; - - uint32_t acquire_image_index(); }; diff --git a/include/vk-device.hpp b/include/vk-device.hpp index 5be416b..1538542 100644 --- a/include/vk-device.hpp +++ b/include/vk-device.hpp @@ -26,7 +26,7 @@ class vkdevice { handle create_texture(const texture_desc& desc); - handle create_sampler(const sampler_desc& desc); + handle create_sampler(const sampler_desc& desc); handle create_buffer(const buffer_desc& desc); @@ -38,8 +38,6 @@ class vkdevice { void destroy_texture(handle handle); - void destroy_sampler(handle handle); - void destroy_buffer(handle handle); void destroy_pipeline(handle handle); @@ -55,10 +53,6 @@ class vkdevice { return &textures[handle]; } - [[nodiscard]] inline device_sampler* get_sampler(handle handle) { - return &samplers[handle]; - } - [[nodiscard]] inline device_buffer* get_buffer(handle handle) { return &buffers[handle]; } @@ -71,8 +65,8 @@ class vkdevice { return &surfaces[handle]; } - // uint64_t submit(std::span buffers, handle wait_handle, handle signal_handle, handle fence_handle); - uint32_t acquire_image_index(handle surface_handle); + handle get_swapchain_image(handle surface_handle); + uint64_t submit_before_present(handle surface_handle, command_buffer* buffers, uint32_t count); uint64_t submit(command_buffer* buffers, uint32_t count); @@ -88,8 +82,6 @@ class vkdevice { void allocate_command_buffers(command_buffer* buffers, size_t count, QueueType type, const char* name); - void create_swapchain(const surface_desc& desc, device_surface& surface); - // TODO: Wrap in a struct called adapter ? void create_instance(); @@ -101,7 +93,6 @@ class vkdevice { static constexpr size_t max_submitable_command_buffers = 16; freelist textures; - freelist samplers; freelist buffers; freelist pipelines; freelist surfaces; -- cgit v1.3