diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/vk-command-buffer.hpp | 1 | ||||
| -rw-r--r-- | include/vk-device-types.hpp | 33 | ||||
| -rw-r--r-- | include/vk-device.hpp | 15 |
3 files changed, 12 insertions, 37 deletions
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<void> storage_index; handle<void> 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<void> 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<typename T> T* allocate() { u32 alloc_size = sizeof(T); @@ -122,7 +105,7 @@ struct device_buffer { } offset = allocated_size; - T* addr = (T*)(static_cast<uint8_t*>(mapped_ptr) + offset); + T* addr = (T*)(static_cast<uint8_t*>(cpu_ptr) + offset); allocated_size += alloc_size; return addr; } @@ -133,7 +116,7 @@ struct device_buffer { } offset = allocated_size; - void* addr = (void*)(static_cast<uint8_t*>(mapped_ptr) + offset); + void* addr = (void*)(static_cast<uint8_t*>(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<device_texture> create_texture(const texture_desc& desc); - handle<device_sampler> create_sampler(const sampler_desc& desc); + handle<void> create_sampler(const sampler_desc& desc); handle<device_buffer> create_buffer(const buffer_desc& desc); @@ -38,8 +38,6 @@ class vkdevice { void destroy_texture(handle<device_texture> handle); - void destroy_sampler(handle<device_sampler> handle); - void destroy_buffer(handle<device_buffer> handle); void destroy_pipeline(handle<device_pipeline> handle); @@ -55,10 +53,6 @@ class vkdevice { return &textures[handle]; } - [[nodiscard]] inline device_sampler* get_sampler(handle<device_sampler> handle) { - return &samplers[handle]; - } - [[nodiscard]] inline device_buffer* get_buffer(handle<device_buffer> handle) { return &buffers[handle]; } @@ -71,8 +65,8 @@ class vkdevice { return &surfaces[handle]; } - // uint64_t submit(std::span<command_buffer> buffers, handle<device_semaphore> wait_handle, handle<device_semaphore> signal_handle, handle<device_semaphore> fence_handle); - uint32_t acquire_image_index(handle<device_surface> surface_handle); + handle<device_texture> get_swapchain_image(handle<device_surface> surface_handle); + uint64_t submit_before_present(handle<device_surface> 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<device_texture> textures; - freelist<device_sampler> samplers; freelist<device_buffer> buffers; freelist<device_pipeline> pipelines; freelist<device_surface> surfaces; |
