21 friend VKAPI_ATTR VkBool32 VKAPI_CALL CallbackDebug(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity,
22 VkDebugUtilsMessageTypeFlagsEXT message_types,
23 const VkDebugUtilsMessengerCallbackDataEXT* p_callback_data,
void* p_user_data);
28 static VkResult FvkCreateDebugUtilsMessengerEXT(VkInstance instance,
const VkDebugUtilsMessengerCreateInfoEXT* p_create_info,
29 const VkAllocationCallbacks* p_allocator, VkDebugUtilsMessengerEXT* p_debug_messenger);
30 static void FvkDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
31 const VkAllocationCallbacks* p_allocator);
33 static uint32_t FindMemoryTypeIndex(
const VkPhysicalDeviceMemoryProperties* device_memory_properties,
34 const VkMemoryRequirements* memory_requirements, VkMemoryPropertyFlags required_properties);
36 operator const VkInstance&()
const
41 bool GetEnableValidationLayers()
const
43 return enable_validation_layers_;
45 const VkInstance& GetInstance()
const
51 static const std::vector<const char*> validation_layers;
54 bool CheckValidationLayerSupport()
const;
55 std::vector<const char*> GetExtensions()
const;
56 void CreateInstance();
57 void CreateDebugMessenger();
60 static void LogVulkanLayers(
const std::vector<VkLayerProperties>& layer_properties);
65 bool enable_validation_layers_ =
false;
67 VkInstance instance_ = VK_NULL_HANDLE;
68 VkDebugUtilsMessengerEXT debug_messenger_ = VK_NULL_HANDLE;