34 lines
835 B
C++
34 lines
835 B
C++
#include <renderer/vk/context/surface.hpp>
|
|
#include <surface/components.hpp>
|
|
|
|
namespace lt::renderer::vk {
|
|
|
|
Surface::Surface(const ecs::Entity &surface_entity)
|
|
{
|
|
const auto &component = surface_entity.get<surface::SurfaceComponent>();
|
|
|
|
auto create_info = VkXlibSurfaceCreateInfoKHR {
|
|
.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
|
|
.dpy = component.get_native_data().display,
|
|
.window = component.get_native_data().window,
|
|
};
|
|
|
|
auto *instance = Instance::get();
|
|
vkc(vk_create_xlib_surface_khr(instance, &create_info, nullptr, &m_surface));
|
|
|
|
const auto &[width, height] = component.get_resolution();
|
|
m_framebuffer_size = {
|
|
.width = width,
|
|
.height = height,
|
|
};
|
|
}
|
|
|
|
Surface::~Surface()
|
|
{
|
|
if (Instance::get())
|
|
{
|
|
vk_destroy_surface_khr(Instance::get(), m_surface, nullptr);
|
|
}
|
|
}
|
|
|
|
} // namespace lt::renderer::vk
|