ULRE/inc/hgl/graph/vulkan/VKPhysicalDevice.h

54 lines
1.8 KiB
C
Raw Normal View History

#pragma once
#include<hgl/graph/vulkan/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>
2019-05-18 15:41:49 +08:00
public:
VkFormatProperties GetFormatProperties(const VkFormat format)const
{
VkFormatProperties fp;
vkGetPhysicalDeviceFormatProperties(physical_device,format,&fp);
return fp;
}
};//struct PhysicalDevice
VK_NAMESPACE_END