/** ****************************************************************************** * Xenia : Xbox 360 Emulator Research Project * ****************************************************************************** * Copyright 2016 Ben Vanik. All rights reserved. * * Released under the BSD license - see LICENSE in the root for more details. * ****************************************************************************** */ #ifndef XENIA_UI_VULKAN_VULKAN_PROVIDER_H_ #define XENIA_UI_VULKAN_VULKAN_PROVIDER_H_ #include #include "xenia/ui/graphics_provider.h" namespace xe { namespace ui { namespace vulkan { class VulkanDevice; class VulkanInstance; class VulkanProvider : public GraphicsProvider { public: ~VulkanProvider() override; static std::unique_ptr Create(Window* main_window); VulkanInstance* instance() const { return instance_.get(); } VulkanDevice* device() const { return device_.get(); } std::unique_ptr CreateContext( Window* target_window) override; std::unique_ptr CreateOffscreenContext() override; protected: explicit VulkanProvider(Window* main_window); bool Initialize(); std::unique_ptr instance_; std::unique_ptr device_; }; } // namespace vulkan } // namespace ui } // namespace xe #endif // XENIA_UI_VULKAN_VULKAN_PROVIDER_H_