59 lines
1.6 KiB
C++
59 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#define GLFW_INCLUDE_VULKAN
|
|
#include <GLFW/glfw3.h>
|
|
|
|
struct FCreateDebugUtilsMessengerExtParams
|
|
{
|
|
VkInstance Instance;
|
|
const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo;
|
|
const VkAllocationCallbacks* pAllocator;
|
|
VkDebugUtilsMessengerEXT* pDebugMessenger;
|
|
};
|
|
|
|
struct FDestroyDebugUtilsMessengerExtParams
|
|
{
|
|
VkInstance Instance;
|
|
VkDebugUtilsMessengerEXT DebugMessenger;
|
|
const VkAllocationCallbacks* pAllocator;
|
|
};
|
|
|
|
class VulkanDebugManager
|
|
{
|
|
public:
|
|
VulkanDebugManager();
|
|
~VulkanDebugManager();
|
|
|
|
VulkanDebugManager(const VulkanDebugManager&) = delete;
|
|
VulkanDebugManager& operator=(const VulkanDebugManager&) = delete;
|
|
|
|
VulkanDebugManager(VulkanDebugManager&& Other) noexcept;
|
|
VulkanDebugManager& operator=(VulkanDebugManager&& Other) noexcept;
|
|
|
|
void Initialize(VkInstance Instance);
|
|
void Cleanup();
|
|
|
|
bool IsInitialized() const { return DebugMessenger != VK_NULL_HANDLE; }
|
|
|
|
void PopulateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& createInfo);
|
|
|
|
private:
|
|
bool bVerboseLogging = false;
|
|
|
|
VkInstance Instance = VK_NULL_HANDLE;
|
|
|
|
VkDebugUtilsMessengerEXT DebugMessenger = VK_NULL_HANDLE;
|
|
|
|
VkResult CreateDebugUtilsMessengerExt(const FCreateDebugUtilsMessengerExtParams& Params);
|
|
|
|
void DestroyDebugUtilsMessengerExt(const FDestroyDebugUtilsMessengerExtParams& Params);
|
|
|
|
static VKAPI_ATTR VkBool32 VKAPI_CALL DebugCallback(
|
|
VkDebugUtilsMessageSeverityFlagBitsEXT MessageSeverity,
|
|
VkDebugUtilsMessageTypeFlagsEXT MessageType,
|
|
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
|
|
void* pUserData);
|
|
|
|
void SetupDebugMessanger();
|
|
};
|