From 0a882c4b85423a170455f05a52d18f7fa7c9220b Mon Sep 17 00:00:00 2001 From: Quentin LADEVIE Date: Sun, 22 Jan 2023 17:59:24 +0100 Subject: Api test bindless and command buffers --- include/api-test/vk-bindless.hpp | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 include/api-test/vk-bindless.hpp (limited to 'include/api-test/vk-bindless.hpp') diff --git a/include/api-test/vk-bindless.hpp b/include/api-test/vk-bindless.hpp new file mode 100644 index 0000000..d8fac3c --- /dev/null +++ b/include/api-test/vk-bindless.hpp @@ -0,0 +1,61 @@ +#pragma once + +#include + +#include + +enum BindlessSetType : uint32_t { + GLOBAL, + MAX, +}; + +enum SamplerType : uint32_t { + NEAREST, + LINEAR, + MAX_SAMPLER, +}; + +struct bindless_model { +#ifndef USE_VK_DESCRIPTOR_BUFFERS + VkPipelineLayout layout; + VkDescriptorSetLayout sets_layout[BindlessSetType::MAX]; + VkDescriptorSet sets[BindlessSetType::MAX]; + VkDescriptorPool descriptor_pool; + + 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); + + void destroy_descriptor_pool(VkDevice device); + + void create_immutable_samplers(VkDevice device); + + void destroy_immutable_samplers(VkDevice device); + + VkSampler samplers[SamplerType::MAX_SAMPLER]; +#else + VkPipelineLayout layout; + VkDescriptorSetLayout sets_layout[BindlessSetType::MAX]; + + 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); + + handle storage_image_descriptors; + handle sampled_image_descriptors; +#endif +}; -- cgit v1.3