VulkanUtility.hpp 1.2 KB

12345678910111213141516171819202122232425262728
  1. #ifndef GAMINGCORE_VULKAN_UTILITY_HPP
  2. #define GAMINGCORE_VULKAN_UTILITY_HPP
  3. #include <core/Logger.hpp>
  4. #include <vulkan/vulkan.h>
  5. namespace Core::Vulkan {
  6. const char* getResultString(VkResult r);
  7. }
  8. #define VK_REPORT(level, format, ...) \
  9. REPORT( \
  10. Core::LogLevel::level, "Vulkan | " format __VA_OPT__(, ) __VA_ARGS__);
  11. #define VK_REPORT_ERROR(...) VK_REPORT(ERROR, __VA_ARGS__)
  12. #define VK_REPORT_WARNING(...) VK_REPORT(WARNING, __VA_ARGS__)
  13. #define VK_CHECK(r, a) \
  14. do { \
  15. VkResult vkResult = (a); \
  16. if(vkResult != VK_SUCCESS) { \
  17. VK_REPORT_ERROR("#", Core::Vulkan::getResultString(vkResult)); \
  18. return r; \
  19. } \
  20. } while(false)
  21. #define VK_CHECK_TRUE(a) VK_CHECK(true, a)
  22. #define VK_CHECK_VOID(a) VK_CHECK(, a)
  23. #endif