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;
|
const bool enableValidationLayers = true;
|
||||||
#endif
|
#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"};
|
const char *validationLayers[] = {"VK_LAYER_KHRONOS_validation"};
|
||||||
size_t validationLayerCount =
|
size_t validationLayerCount =
|
||||||
sizeof(validationLayers) / sizeof(validationLayers[0]);
|
sizeof(validationLayers) / sizeof(validationLayers[0]);
|
||||||
|
|
@ -21,6 +34,7 @@ size_t validationLayerCount =
|
||||||
typedef struct Application {
|
typedef struct Application {
|
||||||
GLFWwindow *window;
|
GLFWwindow *window;
|
||||||
VkInstance instance;
|
VkInstance instance;
|
||||||
|
VkDebugUtilsMessengerEXT debugMessenger;
|
||||||
} Application;
|
} Application;
|
||||||
|
|
||||||
bool checkValidationLayerSupport() {
|
bool checkValidationLayerSupport() {
|
||||||
|
|
@ -65,7 +79,7 @@ bool verifyGlfwExtensionSupport(uint32_t extensionCount,
|
||||||
|
|
||||||
void createInstance(Application *app) {
|
void createInstance(Application *app) {
|
||||||
if (enableValidationLayers && !checkValidationLayerSupport()) {
|
if (enableValidationLayers && !checkValidationLayerSupport()) {
|
||||||
fprintf(stderr, "Validation layers requested, but not available!");
|
fprintf(stderr, "Validation layers requested, but not available!\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -123,7 +137,23 @@ void initWindow(Application *app) {
|
||||||
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
|
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
|
||||||
app->window = glfwCreateWindow(800, 600, "Vulkan", NULL, NULL);
|
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) {
|
void mainLoop(Application *app) {
|
||||||
while (!glfwWindowShouldClose(app->window)) {
|
while (!glfwWindowShouldClose(app->window)) {
|
||||||
glfwPollEvents();
|
glfwPollEvents();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue