diff --git a/inc/hgl/graph/vulkan/VKPhysicalDevice.h b/inc/hgl/graph/vulkan/VKPhysicalDevice.h index 4753054c..35395ac0 100644 --- a/inc/hgl/graph/vulkan/VKPhysicalDevice.h +++ b/inc/hgl/graph/vulkan/VKPhysicalDevice.h @@ -1,10 +1,10 @@ -#pragma once +#pragma once #include #include VK_NAMESPACE_BEGIN -struct PhysicalDevice +class PhysicalDevice { VkInstance instance=nullptr; VkPhysicalDevice physical_device=nullptr; @@ -20,6 +20,9 @@ public: PhysicalDevice(VkInstance,VkPhysicalDevice); ~PhysicalDevice()=default; + operator VkPhysicalDevice(){return physical_device;} + operator const VkPhysicalDevice()const{return physical_device;} + const bool CheckMemoryType(uint32_t,VkFlags,uint32_t *)const; VkPhysicalDeviceType GetDeviceType()const{return properties.deviceType;} @@ -35,8 +38,14 @@ public: const char * GetDriverName ()const{return driver_properties.driverName;} const char * GetDriverInfo ()const{return driver_properties.driverInfo;} +public: + + const uint32_t GetConstantSize()const{return properties.limits.maxPushConstantsSize;} + +public: + /** - * ȡ豸ǷԿ + * 获取该设备是否是显卡 */ const bool isGPU()const { @@ -47,9 +56,9 @@ public: 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);} ///<ǷԿ + 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);} ///<是否是虚拟显卡 public: @@ -61,5 +70,5 @@ public: return fp; } -};//struct PhysicalDevice +};//class PhysicalDevice VK_NAMESPACE_END \ No newline at end of file diff --git a/src/RenderDevice/Vulkan/VKDeviceAttribute.cpp b/src/RenderDevice/Vulkan/VKDeviceAttribute.cpp index 2a04635d..cdddfb15 100644 --- a/src/RenderDevice/Vulkan/VKDeviceAttribute.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceAttribute.cpp @@ -11,7 +11,7 @@ DeviceAttribute::DeviceAttribute(VkInstance inst,const PhysicalDevice *pd,VkSurf physical_device=pd; surface=s; - VkPhysicalDevice pdevice=physical_device->physical_device; + VkPhysicalDevice pdevice=*physical_device; vkGetPhysicalDeviceSurfaceCapabilitiesKHR(pdevice,surface,&surface_caps); diff --git a/src/RenderDevice/Vulkan/VKDeviceCreater.cpp b/src/RenderDevice/Vulkan/VKDeviceCreater.cpp index 73601847..457b9084 100644 --- a/src/RenderDevice/Vulkan/VKDeviceCreater.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceCreater.cpp @@ -546,7 +546,7 @@ Device *CreateRenderDevice(VkInstance inst,const PhysicalDevice *physical_device if(attr->graphics_family==ERROR_FAMILY_INDEX) return(nullptr); - attr->device=CreateDevice(inst,physical_device->physical_device,attr->graphics_family); + attr->device=CreateDevice(inst,*physical_device,attr->graphics_family); if(!attr->device) return(nullptr);