#include"VKInstance.h" #include"VKSurfaceExtensionName.h" #include #include VK_NAMESPACE_BEGIN RenderSurface *CreateRenderSuface(VkInstance,VkPhysicalDevice,Window *); namespace { VkResult CreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo,const VkAllocationCallbacks *pAllocator,VkDebugUtilsMessengerEXT *pDebugMessenger) { auto func=(PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance,"vkCreateDebugUtilsMessengerEXT"); if(func) { return func(instance,pCreateInfo,pAllocator,pDebugMessenger); } else { return VK_ERROR_EXTENSION_NOT_PRESENT; } } void DestroyDebugUtilsMessengerEXT(VkInstance instance,VkDebugUtilsMessengerEXT debugMessenger,const VkAllocationCallbacks *pAllocator) { auto func=(PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance,"vkDestroyDebugUtilsMessengerEXT"); if(func) { func(instance,debugMessenger,pAllocator); } } VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageType,const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,void *pUserData) { std::cerr<<"validation layer: "<pMessage<layerName) return(true); ++lp; } return(false); } RenderSurface *Instance::CreateSurface(Window *win,int pd_index) { if(!win) return(nullptr); VkPhysicalDevice pd=GetDevice(pd_index); if(!pd) return(nullptr); return CreateRenderSuface(inst,pd,win); } VK_NAMESPACE_END