NarcEngine 0.1.1
C++ Vulkan game engine
 
Loading...
Searching...
No Matches
EngineDebugLogger.h
1#pragma once
2
3#include <vulkan/vulkan.h>
4
5#include "Window.h"
6
7namespace narc_engine {
8 class EngineDebugLogger
9 {
10 public:
11 EngineDebugLogger(const EngineInstance* instance);
12 ~EngineDebugLogger();
13
14 static void linkToDevice(VkDeviceCreateInfo& createInfo);
15 static void linkToInstance(VkInstanceCreateInfo& createInfo, VkDebugUtilsMessengerCreateInfoEXT& debugCreateInfo);
16 static std::vector<const char*> getRequiredExtensions();
17 static void checkValidationLayerSupport();
18
19 private:
20 VkDebugUtilsMessengerEXT m_debugMessenger;
21
22 const EngineInstance* m_instance = nullptr;
23
24
25 static void populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& createInfo);
26 static VkBool32 debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
27 VkDebugUtilsMessageTypeFlagsEXT messageType,
28 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
29 void* pUserData);
30 };
31
32 inline void destroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT debugMessenger, const VkAllocationCallbacks* pAllocator)
33 {
34 auto func = (PFN_vkDestroyDebugUtilsMessengerEXT) vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT");
35
36 if (func != nullptr)
37 {
38 func(instance, debugMessenger, pAllocator);
39 }
40 }
41
42 inline VkResult createDebugUtilsMessengerEXT(VkInstance instance, const
43 VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const
44 VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT*
45 pDebugMessenger)
46 {
47 auto func = (PFN_vkCreateDebugUtilsMessengerEXT) vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT");
48
49 if (func != nullptr)
50 {
51 return func(instance, pCreateInfo, pAllocator, pDebugMessenger);
52 }
53
54 return VK_ERROR_EXTENSION_NOT_PRESENT;
55 }
56}
Definition EngineInstance.h:14