aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2026-08-31 15:27:08 +0200
committerladevieq <ladevie.quentin@gmail.com>2026-08-31 15:28:48 +0200
commitc7d19cb17877f2ce7d2d684ccbd8fbcd658008e3 (patch)
tree8fe3da22c7dc1ad452b66ad2a9743fce429d3a5f /include
parent662e7221aaa296c4b8fcc27c38dd04a6a8332ab1 (diff)
Rework sample creation, backbuffer acquisition and device_buffer members
Diffstat (limited to 'include')
-rw-r--r--include/vk-command-buffer.hpp1
-rw-r--r--include/vk-device-types.hpp33
-rw-r--r--include/vk-device.hpp15
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;