/
Zamar_Terrier
/
TigorEngine
Обзор
Документация
Войти
/
Zamar_Terrier
/
TigorEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Core/e_debuger.c
87 строк
3 KB
Zamar_Terrier
Доработка + нововведения
06 июл 2026, 16:26
Верифицирован
06 июл 2026, 16:26
0d4ab95
Код
Авторство
О чём код?
#include "Core/e_window.h" #include "Core/e_debuger.h" #include "Core/e_memory.h" #include <vulkan/vulkan.h> #include <stdio.h> #include <stdlib.h> #include "Data/e_resource_engine.h" extern TEngine engine; uint32_t CreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo, VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerEXT *pMessenger) { PFN_vkCreateDebugUtilsMessengerEXT func1 = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT"); if (func1 != NULL) { return func1(instance, pCreateInfo, pAllocator, pMessenger); } else { return VK_ERROR_EXTENSION_NOT_PRESENT; } } void DestroyDebugUtilsMessengerEXT(void *arg, VkDebugUtilsMessengerEXT debugMessenger, const VkAllocationCallbacks *pAllocator) { VkInstance instance = (VkInstance)arg; PFN_vkDestroyDebugUtilsMessengerEXT func2 = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT"); if (func2 != NULL) { func2(instance, debugMessenger, (VkAllocationCallbacks *)pAllocator); } } void *thread_f(void *text) { char *t = (char *)text; printf("Validation Layer : %s\n", t); } VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT *CallbackData, void *pUserData) { printf("Validation Layer : %s\n", CallbackData->pMessage); /*pthread_t threader; char *text = AllocateMemory(strlen(CallbackData->pMessage), sizeof(char)); strcpy(text, CallbackData->pMessage); pthread_create(&threader, NULL, thread_f, (void *)text); //переводим в отсоединенное состояние pthread_detach(threader);*/ return VK_FALSE; } void populateDebugMessengerCreateInfo(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; } void setupDebugMessenger() { if (!enableValidationLayers) return; VkDebugUtilsMessengerCreateInfoEXT debugInfo = {0}; populateDebugMessengerCreateInfo(&debugInfo); if (CreateDebugUtilsMessengerEXT(engine.window.instance, &debugInfo, NULL, &engine.debugMessenger) != VK_SUCCESS) { printf("failed create debug messnger"); exit(1); } }