33class FGE_API PhysicalDevice
38 std::optional<uint32_t> _graphicsFamily;
39 std::optional<uint32_t> _computeFamily;
40 std::optional<uint32_t> _transferFamily;
41 std::optional<uint32_t> _presentFamily;
42 bool _isPresentFamilyDifferent{
false};
46 VkSurfaceCapabilitiesKHR _capabilities;
48 std::vector<VkSurfaceFormatKHR> _formats;
49 std::vector<VkFormatProperties> _formatProperties;
51 std::vector<VkPresentModeKHR> _presentModes;
54 explicit PhysicalDevice(VkPhysicalDevice device = VK_NULL_HANDLE);
55 PhysicalDevice(PhysicalDevice
const& r) =
default;
56 PhysicalDevice(PhysicalDevice&& r)
noexcept;
57 ~PhysicalDevice() =
default;
59 PhysicalDevice& operator=(PhysicalDevice
const& r) =
default;
60 PhysicalDevice& operator=(PhysicalDevice&& r)
noexcept;
62 [[nodiscard]] VkPhysicalDevice getDevice()
const;
97 [[nodiscard]] uint32_t findMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties)
const;
99 [[nodiscard]] uint32_t getMaxImageDimension2D()
const;
100 [[nodiscard]] uint32_t getMinUniformBufferOffsetAlignment()
const;
101 [[nodiscard]] VkDeviceSize getMaxMemoryAllocationSize()
const;
102 [[nodiscard]] uint32_t getMaxMemoryAllocationCount()
const;
103 [[nodiscard]] VkPhysicalDeviceFeatures getFeatures()
const;
104 [[nodiscard]] VkPhysicalDeviceFeatures2 getFeatures2()
const;
105 [[nodiscard]] VkPhysicalDeviceRobustness2FeaturesEXT getRobustness2Features()
const;
108 void updateDeviceExtensionSupport();
110 VkPhysicalDevice g_device;
111 bool g_extensionSupport;