#pragma once #include"VK.h" VK_NAMESPACE_BEGIN struct PhysicalDevice { VkInstance instance=nullptr; VkPhysicalDevice physical_device=nullptr; VkPhysicalDeviceFeatures features; VkPhysicalDeviceProperties properties; VkPhysicalDeviceMemoryProperties memory_properties; List layer_properties; List extension_properties; public: PhysicalDevice(VkInstance,VkPhysicalDevice); ~PhysicalDevice()=default; const bool CheckMemoryType(uint32_t,VkFlags,uint32_t *)const; VkPhysicalDeviceType GetDeviceType()const{return properties.deviceType;} const char *GetDeviceName()const{return properties.deviceName;} /** * 获取该设备是否是显卡 */ const bool isGPU()const { if(properties.deviceType==VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)return(true); if(properties.deviceType==VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU)return(true); if(properties.deviceType==VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU)return(true); return(false); } const bool isDiscreteGPU ()const{return(properties.deviceType==VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU);} ///<是否是独立显卡 const bool isIntegratedGPU ()const{return(properties.deviceType==VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU);} ///<是否是集成显卡 const bool isVirtualGPU ()const{return(properties.deviceType==VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU);} ///<是否是虚拟显卡 };//struct PhysicalDevice VK_NAMESPACE_END