aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2023-01-25 23:06:30 +0100
committerladevieq <ladevie.quentin@gmail.com>2023-01-25 23:06:30 +0100
commit90a0afd18f080088cac068d92810fb630225d6be (patch)
tree341310124fec15c6a02708815377db0cddb6b252 /include
parent0a882c4b85423a170455f05a52d18f7fa7c9220b (diff)
Working compute api with uniforms
Diffstat (limited to 'include')
-rw-r--r--include/api-test/command-buffer.hpp1
-rw-r--r--include/api-test/freelist.hpp4
-rw-r--r--include/api-test/handle.hpp4
-rw-r--r--include/api-test/vk-bindless.hpp21
-rw-r--r--include/api-test/vk-device.hpp6
-rw-r--r--include/api-test/vk-utils.hpp5
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*);