Shader/SpirV: Fix missing OpSelectionMerge before branching

This commit is contained in:
Jérôme Leclercq 2021-02-19 14:51:06 +01:00
parent 32569eef5e
commit 36be581d9a
1 changed files with 3 additions and 2 deletions

View File

@ -452,6 +452,9 @@ namespace Nz
m_currentBlock = &previousContentBlock;
Visit(firstCond.statement);
SpirvBlock mergeBlock(m_writer);
m_blocks.back().Append(SpirvOp::OpSelectionMerge, mergeBlock.GetLabelId(), SpirvSelectionControl::None);
std::optional<std::size_t> nextBlock;
for (std::size_t statementIndex = 1; statementIndex < node.condStatements.size(); ++statementIndex)
{
@ -469,8 +472,6 @@ namespace Nz
Visit(statement.statement);
}
SpirvBlock mergeBlock(m_writer);
if (node.elseStatement)
{
SpirvBlock elseBlock(m_writer);