1 /* 2 * Copyright © 2017 Collabora Ltd. 3 * 4 * This file is part of vkmark. 5 * 6 * vkmark is free software: you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation, either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * vkmark is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with vkmark. If not, see <http://www.gnu.org/licenses/>. 18 * 19 * Authors: 20 * Alexandros Frantzis <alexandros.frantzis@collabora.com> 21 */ 22 23 #pragma once 24 25 #include <vulkan/vulkan.hpp> 26 27 #include "managed_resource.h" 28 29 class VulkanState; 30 31 namespace vkutil 32 { 33 34 class RenderPassBuilder 35 { 36 public: 37 RenderPassBuilder(VulkanState& vulkan); 38 39 RenderPassBuilder& set_color_format(vk::Format format); 40 RenderPassBuilder& set_depth_format(vk::Format format); 41 42 RenderPassBuilder& set_color_load_op(vk::AttachmentLoadOp load_op); 43 44 ManagedResource<vk::RenderPass> build(); 45 46 private: 47 VulkanState& vulkan; 48 vk::Format color_format; 49 vk::Format depth_format; 50 vk::AttachmentLoadOp color_load_op; 51 }; 52 53 } 54