• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 The SwiftShader Authors. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //    http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef VK_RENDER_PASS_HPP_
16 #define VK_RENDER_PASS_HPP_
17 
18 #include "VkObject.hpp"
19 
20 namespace vk
21 {
22 
23 class RenderPass : public Object<RenderPass, VkRenderPass>
24 {
25 public:
26 	RenderPass(const VkRenderPassCreateInfo* pCreateInfo, void* mem);
27 	~RenderPass() = delete;
28 	void destroy(const VkAllocationCallbacks* pAllocator);
29 
30 	static size_t ComputeRequiredAllocationSize(const VkRenderPassCreateInfo* pCreateInfo);
31 
32 	void begin();
33 	void nextSubpass();
34 	void end();
35 
getAttachmentCount() const36 	uint32_t getAttachmentCount() const
37 	{
38 		return attachmentCount;
39 	}
40 
getAttachment(uint32_t i) const41 	VkAttachmentDescription getAttachment(uint32_t i) const
42 	{
43 		return attachments[i];
44 	}
45 
getSubpassCount() const46 	uint32_t getSubpassCount() const
47 	{
48 		return subpassCount;
49 	}
50 
getSubpass(uint32_t i) const51 	VkSubpassDescription getSubpass(uint32_t i) const
52 	{
53 		return subpasses[i];
54 	}
55 
getCurrentSubpass() const56 	VkSubpassDescription getCurrentSubpass() const
57 	{
58 		return subpasses[currentSubpass];
59 	}
60 
getDependencyCount() const61 	uint32_t getDependencyCount() const
62 	{
63 		return dependencyCount;
64 	}
65 
getDependency(uint32_t i) const66 	VkSubpassDependency getDependency(uint32_t i) const
67 	{
68 		return dependencies[i];
69 	}
70 
71 private:
72 	uint32_t                 attachmentCount = 0;
73 	VkAttachmentDescription* attachments = nullptr;
74 	uint32_t                 subpassCount = 0;
75 	VkSubpassDescription*    subpasses = nullptr;
76 	uint32_t                 dependencyCount = 0;
77 	VkSubpassDependency*     dependencies = nullptr;
78 	uint32_t                 currentSubpass = 0;
79 };
80 
Cast(VkRenderPass object)81 static inline RenderPass* Cast(VkRenderPass object)
82 {
83 	return reinterpret_cast<RenderPass*>(object);
84 }
85 
86 } // namespace vk
87 
88 #endif // VK_RENDER_PASS_HPP_