diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2023-01-25 23:06:30 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2023-01-25 23:06:30 +0100 |
| commit | 90a0afd18f080088cac068d92810fb630225d6be (patch) | |
| tree | 341310124fec15c6a02708815377db0cddb6b252 /include | |
| parent | 0a882c4b85423a170455f05a52d18f7fa7c9220b (diff) | |
Working compute api with uniforms
Diffstat (limited to 'include')
| -rw-r--r-- | include/api-test/command-buffer.hpp | 1 | ||||
| -rw-r--r-- | include/api-test/freelist.hpp | 4 | ||||
| -rw-r--r-- | include/api-test/handle.hpp | 4 | ||||
| -rw-r--r-- | include/api-test/vk-bindless.hpp | 21 | ||||
| -rw-r--r-- | include/api-test/vk-device.hpp | 6 | ||||
| -rw-r--r-- | include/api-test/vk-utils.hpp | 5 |
6 files changed, 31 insertions, 10 deletions
diff --git a/include/api-test/command-buffer.hpp b/include/api-test/command-buffer.hpp index 1a0e553..ffeafc4 100644 --- a/include/api-test/command-buffer.hpp +++ b/include/api-test/command-buffer.hpp @@ -24,6 +24,7 @@ struct dispatch_params { handle<device_pipeline> pipeline; vec3u group_size; vec3u local_group_size; + uint32_t uniforms_offset; }; struct command_buffer { diff --git a/include/api-test/freelist.hpp b/include/api-test/freelist.hpp index 9553a15..b231d9a 100644 --- a/include/api-test/freelist.hpp +++ b/include/api-test/freelist.hpp @@ -38,7 +38,7 @@ class freelist { } } - return invalid_handle; + return invalid_id; } auto begin() { @@ -49,7 +49,7 @@ class freelist { return items.end(); } - static constexpr uint32_t invalid_handle = -1; + static constexpr uint32_t invalid_id = -1; private: std::vector<T> items; diff --git a/include/api-test/handle.hpp b/include/api-test/handle.hpp index c14e212..2355191 100644 --- a/include/api-test/handle.hpp +++ b/include/api-test/handle.hpp @@ -4,5 +4,7 @@ template<typename T> struct handle { - const uint32_t id; + uint32_t id = handle::invalid_handle; + + static constexpr uint32_t invalid_handle = -1; }; diff --git a/include/api-test/vk-bindless.hpp b/include/api-test/vk-bindless.hpp index d8fac3c..c292878 100644 --- a/include/api-test/vk-bindless.hpp +++ b/include/api-test/vk-bindless.hpp @@ -4,8 +4,11 @@ #include <vulkan/vulkan_core.h> +#include "handle.hpp" + enum BindlessSetType : uint32_t { GLOBAL, + UNIFORMS, MAX, }; @@ -15,21 +18,27 @@ enum SamplerType : uint32_t { MAX_SAMPLER, }; +struct device_buffer; + struct bindless_model { #ifndef USE_VK_DESCRIPTOR_BUFFERS + [[nodiscard]] const device_buffer& get_uniform_buffer() const; + + static bindless_model create_bindless_model(); + + static void destroy_bindless_model(bindless_model& bindless); + VkPipelineLayout layout; - VkDescriptorSetLayout sets_layout[BindlessSetType::MAX]; VkDescriptorSet sets[BindlessSetType::MAX]; + +private: + VkDescriptorSetLayout sets_layout[BindlessSetType::MAX]; VkDescriptorPool descriptor_pool; + handle<device_buffer> uniform_buffer; static constexpr size_t descriptor_pool_allocable_sets_count = 64U; static constexpr uint32_t set_descriptors_count[BindlessSetType::MAX]{ 1024U }; - static bindless_model create_bindless_model(VkDevice device); - - static void destroy_bindless_model(VkDevice device, bindless_model& bindless); - - private: void create_layout(VkDevice device); void create_descriptor_pool(VkDevice device); void allocate_sets(VkDevice device); diff --git a/include/api-test/vk-device.hpp b/include/api-test/vk-device.hpp index b09ed9e..a30b18c 100644 --- a/include/api-test/vk-device.hpp +++ b/include/api-test/vk-device.hpp @@ -28,7 +28,7 @@ class vkdevice { static void free_device(); - static inline vkdevice* get_device() { + static inline vkdevice* get_render_device() { return render_device; } @@ -68,6 +68,10 @@ class vkdevice { return bindless; } + inline VkDevice get_device() { + return device; + } + void submit(command_buffer* buffers, size_t count); void present(); diff --git a/include/api-test/vk-utils.hpp b/include/api-test/vk-utils.hpp index fb02737..a107d3b 100644 --- a/include/api-test/vk-utils.hpp +++ b/include/api-test/vk-utils.hpp @@ -9,3 +9,8 @@ #else #define VKCHECK(result) (result) #endif + +VKAPI_ATTR VkBool32 VKAPI_CALL debug_callback(VkDebugUtilsMessageSeverityFlagBitsEXT severity, + VkDebugUtilsMessageTypeFlagsEXT type, + const VkDebugUtilsMessengerCallbackDataEXT* data, + void*); |
