vulkan/include/check.h
2026-04-11 22:27:12 -05:00

55 lines
1.4 KiB
C

#pragma once
#define SDL_CHECK(f) \
{ \
bool result = (f); \
if (result != true) { \
fprintf(stderr, "SDL: %s %s L%d error: `%s`\n", __FILE__, __func__, __LINE__, SDL_GetError()); \
exit(EXIT_FAILURE); \
} \
}
#define SDL_CHECK_NONNULL(f) \
{ \
void * ptr = (void *)(f); \
if (ptr == nullptr) { \
fprintf(stderr, "SDL: %s %s L%d error: `%s`\n", __FILE__, __func__, __LINE__, SDL_GetError()); \
exit(EXIT_FAILURE); \
} \
}
#define VK_CHECK(f) \
{ \
VkResult result = (f); \
if (result != VK_SUCCESS) { \
fprintf(stderr, "VK: %s %s L%d error: `%s`\n", __FILE__, __func__, __LINE__, string_VkResult(result)); \
exit(EXIT_FAILURE); \
} \
}
#define VK_CHECK_SWAPCHAIN(f) \
{ \
VkResult result = (f); \
if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR) { \
updateSwapchain = true; \
} else if (result != VK_SUCCESS) { \
fprintf(stderr, "VK: %s %s L%d error: `%s`\n", __FILE__, __func__, __LINE__, string_VkResult(result)); \
exit(EXIT_FAILURE); \
} \
}
#define ASSERT(expr, msg) \
{ \
bool result = (expr); \
if (result != true) { \
fprintf(stderr, "%s %s L%d error: `%s`\n", __FILE__, __func__, __LINE__, msg); \
exit(EXIT_FAILURE); \
} \
}
#if defined(_MSC_VER) && !defined(__clang__) // MSVC
#define UNREACHABLE() __assume(false);
#else // GCC, Clang
#define UNREACHABLE() __builtin_unreachable();
#endif