// Copyright 2022 Simon Boyé #include #include #include namespace vk { RenderPass::RenderPass() noexcept { } RenderPass::RenderPass(Context& context, const VkRenderPassCreateInfo& create_info) : Wrapper(context) { assert(m_context); if(vkCreateRenderPass( context.device(), &create_info, nullptr, &m_render_pass ) != VK_SUCCESS) throw std::runtime_error("failed to create render pass"); } RenderPass::RenderPass(RenderPass&& other) noexcept { swap(other); } RenderPass::~RenderPass() noexcept { if(!is_null()) destroy(); } RenderPass& RenderPass::operator=(RenderPass&& other) noexcept { swap(other); if(other) other.destroy(); return *this; } void RenderPass::destroy() noexcept { assert(!is_null()); assert(m_context); vkDestroyRenderPass( m_context->device(), m_render_pass, nullptr ); m_render_pass = nullptr; } }