#pragma once #include #include #include #include #include "utils.h" #include "surface.h" namespace Engine { class LogicalDevice; class PhysicalDevice { friend class LogicalDevice; public: PhysicalDevice(VkPhysicalDevice raw, const QueueFamilyIndices& indices, const SwapChainSupportDetails& swapChainSupport); void recreateSwapChainSupportDetails(const Surface* surface); static bool checkDeviceExtensionSupport(VkPhysicalDevice device, std::set requiredExtensions); const QueueFamilyIndices indices; SwapChainSupportDetails swapChainSupport; private: VkPhysicalDevice vk; }; }