Added some callback info
This commit is contained in:
parent
46dc696668
commit
b8d5db9aa2
1 changed files with 32 additions and 2 deletions
34
src/main.c
34
src/main.c
|
|
@ -14,6 +14,19 @@ const bool enableValidationLayers = false;
|
|||
const bool enableValidationLayers = true;
|
||||
#endif
|
||||
|
||||
static VKAPI_ATTR VkBool32 VKAPI_CALL
|
||||
debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
||||
VkDebugUtilsMessageTypeFlagsEXT messageType,
|
||||
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,
|
||||
void *pUserData) {
|
||||
// TODO: Put all messages into a log file
|
||||
if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
|
||||
fprintf(stderr, "validation layer: %s\n", pCallbackData->pMessage);
|
||||
}
|
||||
|
||||
return VK_FALSE;
|
||||
}
|
||||
|
||||
const char *validationLayers[] = {"VK_LAYER_KHRONOS_validation"};
|
||||
size_t validationLayerCount =
|
||||
sizeof(validationLayers) / sizeof(validationLayers[0]);
|
||||
|
|
@ -21,6 +34,7 @@ size_t validationLayerCount =
|
|||
typedef struct Application {
|
||||
GLFWwindow *window;
|
||||
VkInstance instance;
|
||||
VkDebugUtilsMessengerEXT debugMessenger;
|
||||
} Application;
|
||||
|
||||
bool checkValidationLayerSupport() {
|
||||
|
|
@ -65,7 +79,7 @@ bool verifyGlfwExtensionSupport(uint32_t extensionCount,
|
|||
|
||||
void createInstance(Application *app) {
|
||||
if (enableValidationLayers && !checkValidationLayerSupport()) {
|
||||
fprintf(stderr, "Validation layers requested, but not available!");
|
||||
fprintf(stderr, "Validation layers requested, but not available!\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
|
@ -123,7 +137,23 @@ void initWindow(Application *app) {
|
|||
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
|
||||
app->window = glfwCreateWindow(800, 600, "Vulkan", NULL, NULL);
|
||||
}
|
||||
void initVulkan(Application *app) { createInstance(app); }
|
||||
void setupDebugMessenger(Application *app) {
|
||||
VkDebugUtilsMessengerCreateInfoEXT createInfo = {};
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
|
||||
createInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT |
|
||||
VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT |
|
||||
VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
|
||||
createInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
|
||||
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
|
||||
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
|
||||
createInfo.pfnUserCallback = debugCallback;
|
||||
createInfo.pUserData = NULL; // Optional
|
||||
}
|
||||
|
||||
void initVulkan(Application *app) {
|
||||
setupDebugMessenger(app);
|
||||
createInstance(app);
|
||||
}
|
||||
void mainLoop(Application *app) {
|
||||
while (!glfwWindowShouldClose(app->window)) {
|
||||
glfwPollEvents();
|
||||
|
|
|
|||
Loading…
Reference in a new issue