Shader/SpirV: Fix missing OpSelectionMerge before branching
This commit is contained in:
parent
32569eef5e
commit
36be581d9a
|
|
@ -452,6 +452,9 @@ namespace Nz
|
||||||
m_currentBlock = &previousContentBlock;
|
m_currentBlock = &previousContentBlock;
|
||||||
Visit(firstCond.statement);
|
Visit(firstCond.statement);
|
||||||
|
|
||||||
|
SpirvBlock mergeBlock(m_writer);
|
||||||
|
m_blocks.back().Append(SpirvOp::OpSelectionMerge, mergeBlock.GetLabelId(), SpirvSelectionControl::None);
|
||||||
|
|
||||||
std::optional<std::size_t> nextBlock;
|
std::optional<std::size_t> nextBlock;
|
||||||
for (std::size_t statementIndex = 1; statementIndex < node.condStatements.size(); ++statementIndex)
|
for (std::size_t statementIndex = 1; statementIndex < node.condStatements.size(); ++statementIndex)
|
||||||
{
|
{
|
||||||
|
|
@ -469,8 +472,6 @@ namespace Nz
|
||||||
Visit(statement.statement);
|
Visit(statement.statement);
|
||||||
}
|
}
|
||||||
|
|
||||||
SpirvBlock mergeBlock(m_writer);
|
|
||||||
|
|
||||||
if (node.elseStatement)
|
if (node.elseStatement)
|
||||||
{
|
{
|
||||||
SpirvBlock elseBlock(m_writer);
|
SpirvBlock elseBlock(m_writer);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue