43 lines
1.6 KiB
C
43 lines
1.6 KiB
C
|
#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<VkLayerProperties> layer_properties;
|
|||
|
List<VkExtensionProperties> 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;}
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>
|
|||
|
*/
|
|||
|
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);} ///<<3C>Ƿ<EFBFBD><C7B7>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>Կ<EFBFBD>
|
|||
|
const bool isIntegratedGPU ()const{return(properties.deviceType==VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU);} ///<<3C>Ƿ<EFBFBD><C7B7>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD>Կ<EFBFBD>
|
|||
|
const bool isVirtualGPU ()const{return(properties.deviceType==VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU);} ///<<3C>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>
|
|||
|
};//struct PhysicalDevice
|
|||
|
VK_NAMESPACE_END
|