#include "iwa/app/vulkan_application.hpp" #include #include namespace iwa { VulkanApplication::VulkanApplication(const ApplicationCreationArgs& args, ObjectPtr<> owner) : super_t(std::move(owner)) { mInstance = Instance::create(args.instanceArgs); mDevice = mInstance->createDevice(args.deviceArgs); mMainWindow = mInstance->createWindow(args.mainWindowArgs); SwapchainCreationArgs swapchainCreationArgs = args.mainWindowSwapchainArgs; MIJIN_ASSERT(swapchainCreationArgs.window == nullptr, "Main window swapchain args shouldn't contain a window."); swapchainCreationArgs.window = mMainWindow; mMainWindowSwapchain = mDevice->createChild(swapchainCreationArgs); if (!args.assetPath.empty()) { mInstance->getPrimaryFSAdapter().emplaceAdapter>( /* root = */ fs::current_path() / "assets" ); } } int VulkanApplication::execute(int argc, char** argv) // NOLINT { (void) argc; (void) argv; mInstance->getMainTaskLoop().addTask(c_init()); mInstance->getMainTaskLoop().runUntilDone(); return 0; } } // namespace iwa