#ifndef GAMINGCORE_VULKAN_UTILITY_HPP #define GAMINGCORE_VULKAN_UTILITY_HPP #include <core/Logger.hpp> #include <vulkan/vulkan.h> namespace Core::Vulkan { const char* getResultString(VkResult r); } #define VK_REPORT(level, format, ...) \ REPORT( \ Core::LogLevel::level, "Vulkan | " format __VA_OPT__(, ) __VA_ARGS__); #define VK_REPORT_ERROR(...) VK_REPORT(ERROR, __VA_ARGS__) #define VK_REPORT_WARNING(...) VK_REPORT(WARNING, __VA_ARGS__) #define VK_CHECK(r, a) \ do { \ VkResult vkResult = (a); \ if(vkResult != VK_SUCCESS) { \ VK_REPORT_ERROR("#", Core::Vulkan::getResultString(vkResult)); \ return r; \ } \ } while(false) #define VK_CHECK_TRUE(a) VK_CHECK(true, a) #define VK_CHECK_VOID(a) VK_CHECK(, a) #endif