41 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <memory/scope.hpp>
 | 
						|
#include <renderer/backend/vk/context/context.hpp>
 | 
						|
#include <renderer/backend/vk/context/device.hpp>
 | 
						|
#include <renderer/backend/vk/context/gpu.hpp>
 | 
						|
#include <renderer/backend/vk/context/instance.hpp>
 | 
						|
#include <renderer/backend/vk/context/surface.hpp>
 | 
						|
#include <renderer/backend/vk/context/swapchain.hpp>
 | 
						|
 | 
						|
namespace lt::renderer::vk {
 | 
						|
 | 
						|
Context::Context(const ecs::Entity &surface_entity)
 | 
						|
    : m_instance(Instance::get())
 | 
						|
    , m_surface(memory::create_scope<Surface>(m_instance, surface_entity))
 | 
						|
    , m_gpu(memory::create_scope<Gpu>(m_instance))
 | 
						|
    , m_device(memory::create_scope<Device>(m_gpu.get(), m_surface.get()))
 | 
						|
    , m_swapchain(memory::create_scope<Swapchain>(m_surface.get(), m_gpu.get(), m_device.get()))
 | 
						|
{
 | 
						|
	ensure(
 | 
						|
	    static_cast<Instance *>(m_instance)->vk(),
 | 
						|
	    "Failed to create vulkan context: null instance"
 | 
						|
	);
 | 
						|
 | 
						|
	ensure(
 | 
						|
	    static_cast<Surface *>(m_surface.get())->vk(),
 | 
						|
	    "Failed to create vulkan context: null surface"
 | 
						|
	);
 | 
						|
 | 
						|
	ensure(static_cast<Gpu *>(m_gpu.get())->vk(), "Failed to create vulkan context: null gpu");
 | 
						|
 | 
						|
	ensure(
 | 
						|
	    static_cast<Device *>(m_device.get())->vk(),
 | 
						|
	    "Failed to create vulkan context: null device"
 | 
						|
	);
 | 
						|
 | 
						|
	ensure(
 | 
						|
	    static_cast<Swapchain *>(m_swapchain.get())->vk(),
 | 
						|
	    "Failed to create vulkan context: null swapchain"
 | 
						|
	);
 | 
						|
}
 | 
						|
 | 
						|
} // namespace lt::renderer::vk
 |