#pragma once #include #include #include #include namespace lt::renderer::vk { class Gpu: public IGpu { public: Gpu(IInstance *instance); [[nodiscard]] auto vk() const -> VkPhysicalDevice { return m_gpu; } [[nodiscard]] auto get_queue_family_properties() const -> std::vector; [[nodiscard]] auto queue_family_supports_presentation( VkSurfaceKHR surface, uint32_t queue_family_idx ) -> bool; [[nodiscard]] auto get_surface_capabilities(VkSurfaceKHR surface) const -> VkSurfaceCapabilitiesKHR; [[nodiscard]] auto get_surface_formats(VkSurfaceKHR surface) const -> std::vector; private: memory::NullOnMove m_gpu = VK_NULL_HANDLE; }; } // namespace lt::renderer::vk