FCT
载入中...
搜索中...
未找到
PassGroup.cpp
浏览该文件的文档.
1#include "./PassGroup.h"
2namespace FCT {
3 namespace RHI
4 {
6 {
8 {
9 pass,
10 {
12 },
13 {
15 }
16 });
17 }
18
19 void PassGroup::addPass(const PassDesc& desc)
20 {
21 m_passDescs.push_back(desc);
22 desc.pass->index(m_passes.size());
23 m_passes.push_back(desc.pass);
24 }
25
27 {
28 for (const auto& desc : m_passDescs)
29 {
30 computeStage(desc);
31 }
32 }
33
35 {
36 for (auto& pre : passDesc.predecessors)
37 {
38 if (pre.needComputeStage)
39 {
40 if (pre.pass == Pass::begin)
41 {
44
45 pre.neighborAccess = AccessFlag::none; // 开始时没有访问
46 pre.neighborStage = PipelineStage::topOfPipe; // 管线顶部
47 continue;
48 }
49 if (pre.pass == Pass::external)
50 {
51 continue;
52 }
56 }
57 }
58 for (auto post : passDesc.successors)
59 {
60 if (post.pass == Pass::present)
61 {
64 post.neighborAccess = AccessFlag::memoryRead;
65 post.neighborStage = PipelineStage::bottomOfPipe;
66 continue;
67 }
68 if (post.pass == Pass::external)
69 {
70 continue;
71 }
75 }
76 }
77 }
78}
std::vector< PassDesc > m_passDescs
void addPass(Pass *pass)
std::vector< Pass * > m_passes
static constexpr Pass * present
定义 Pass.h:25
static constexpr Pass * external
定义 Pass.h:24
static constexpr Pass * begin
定义 Pass.h:26
uint32_t index() const
定义 Pass.h:71
std::vector< PassNeighbors > successors
std::vector< PassNeighbors > predecessors