Refactor graphics #1

This commit is contained in:
nmzik
2026-07-19 00:54:31 +02:00
parent 7905f2d12f
commit cbc11d2eaf
71 changed files with 2051 additions and 3399 deletions
+25
View File
@@ -10,7 +10,9 @@
#define VMA_STATIC_VULKAN_FUNCTIONS 0
#define VMA_DYNAMIC_VULKAN_FUNCTIONS 1
#include <cstdint>
#include <string>
#include <vector>
#include <vulkan/vulkan.hpp>
#include <vulkan/vulkan_hash.hpp>
@@ -27,6 +29,29 @@ std::string VulkanToString(vk::Result value);
std::string VulkanToString(vk::Format value);
std::string VulkanToString(vk::ImageLayout value);
std::string VulkanToString(vk::QueueFlags value);
vk::Format VulkanFormat(uint32_t guest_format);
void RequireVulkanSuccess(vk::Result result, const char* operation);
template <typename T, typename Enumerator>
[[nodiscard]] std::vector<T> EnumerateVulkan(const char* operation, Enumerator&& enumerate) {
for (;;) {
uint32_t count = 0;
RequireVulkanSuccess(enumerate(&count, nullptr), operation);
if (count == 0) {
return {};
}
std::vector<T> values(count);
const auto result = enumerate(&count, values.data());
if (result == vk::Result::eSuccess) {
values.resize(count);
return values;
}
if (result != vk::Result::eIncomplete) {
RequireVulkanSuccess(result, operation);
}
}
}
} // namespace Libs::Graphics