18 friend class Graphics;
21 friend VKAPI_ATTR VkBool32 VKAPI_CALL CallbackDebug(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
22 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
23 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
26 Instance(
const ApplicationSpecification& specification,
const Window& window);
29 static VkResult FvkCreateDebugUtilsMessengerEXT(VkInstance instance,
30 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
31 const VkAllocationCallbacks* pAllocator,
32 VkDebugUtilsMessengerEXT* pDebugMessenger);
33 static void FvkDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
34 const VkAllocationCallbacks* pAllocator);
36 static uint32_t FindMemoryTypeIndex(
const VkPhysicalDeviceMemoryProperties* deviceMemoryProperties,
37 const VkMemoryRequirements* memoryRequirements,
38 VkMemoryPropertyFlags requiredProperties);
40 operator const VkInstance&()
const
45 bool GetEnableValidationLayers()
const
47 return m_EnableValidationLayers;
49 const VkInstance& GetInstance()
const
55 static const std::vector<const char*> ValidationLayers;
58 bool CheckValidationLayerSupport()
const;
59 std::vector<const char*> GetExtensions()
const;
60 void CreateInstance();
61 void CreateDebugMessenger();
64 static void LogVulkanLayers(
const std::vector<VkLayerProperties>& layerProperties);
67 const ApplicationSpecification& m_Specification;
68 const Window& m_Window;
69 bool m_EnableValidationLayers =
false;
71 VkInstance m_Instance = VK_NULL_HANDLE;
72 VkDebugUtilsMessengerEXT m_DebugMessenger = VK_NULL_HANDLE;