moved to .cpp about ChoosePhysicalDevice

This commit is contained in:
hyzboy 2023-05-12 00:32:12 +08:00
parent 9a24aa237d
commit 254264ac5e
No known key found for this signature in database
GPG Key ID: 067EE4525D4FB6D3
2 changed files with 19 additions and 14 deletions

View File

@ -250,16 +250,7 @@ public:
const PreferFormats *spf_depth, const PreferFormats *spf_depth,
const VulkanHardwareRequirement *req); const VulkanHardwareRequirement *req);
virtual bool ChoosePhysicalDevice() virtual bool ChoosePhysicalDevice();
{
physical_device=nullptr;
if(!physical_device)physical_device=instance->GetDevice(VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU); //先找独显
if(!physical_device)physical_device=instance->GetDevice(VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU); //再找集显
if(!physical_device)physical_device=instance->GetDevice(VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU); //最后找虚拟显卡
return physical_device;
}
virtual bool RequirementCheck(); virtual bool RequirementCheck();

View File

@ -9,6 +9,7 @@
#include<hgl/graph/VKDevice.h> #include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKDebugMaker.h> #include<hgl/graph/VKDebugMaker.h>
#include<iomanip>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
VkPipelineCache CreatePipelineCache(VkDevice device,const VkPhysicalDeviceProperties &); VkPipelineCache CreatePipelineCache(VkDevice device,const VkPhysicalDeviceProperties &);
@ -32,9 +33,11 @@ void LogSurfaceFormat(const VkSurfaceFormatKHR *surface_format_list,const uint32
cs=GetVulkanColorSpace(sf->colorSpace); cs=GetVulkanColorSpace(sf->colorSpace);
if(select==i) if(select==i)
std::cout<<" * "<<i<<": "<<vf->name<<", "<<cs->name<<std::endl; std::cout<<" *";
else else
std::cout<<" "<<i<<": "<<vf->name<<", "<<cs->name<<std::endl; std::cout<<" ";
std::cout<<std::setw(3)<<i<<": "<<std::setw(10)<<vf->name<<", "<<cs->name<<std::endl;
++sf; ++sf;
} }
@ -332,6 +335,17 @@ VulkanDeviceCreater::VulkanDeviceCreater( VulkanInstance *vi,
hgl_cpy(require,*req); hgl_cpy(require,*req);
} }
bool VulkanDeviceCreater::ChoosePhysicalDevice()
{
physical_device=nullptr;
if(!physical_device)physical_device=instance->GetDevice(VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU); //先找独显
if(!physical_device)physical_device=instance->GetDevice(VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU); //再找集显
if(!physical_device)physical_device=instance->GetDevice(VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU); //最后找虚拟显卡
return physical_device;
}
bool VulkanDeviceCreater::RequirementCheck() bool VulkanDeviceCreater::RequirementCheck()
{ {
const VkPhysicalDeviceLimits &limits=physical_device->GetLimits(); const VkPhysicalDeviceLimits &limits=physical_device->GetLimits();
@ -389,14 +403,14 @@ GPUDevice *VulkanDeviceCreater::Create()
return(nullptr); return(nullptr);
if(!ChoosePhysicalDevice()) if(!ChoosePhysicalDevice())
return(false); return(nullptr);
#ifdef _DEBUG #ifdef _DEBUG
OutputPhysicalDeviceCaps(physical_device); OutputPhysicalDeviceCaps(physical_device);
#endif//_DEBUG #endif//_DEBUG
if(!RequirementCheck()) if(!RequirementCheck())
return(false); return(nullptr);
surface=CreateVulkanSurface(*instance,window); surface=CreateVulkanSurface(*instance,window);