diff --git a/src/graphics/shader/recompiler/backend/spirv/SpirvBuilder.cpp b/src/graphics/shader/recompiler/backend/spirv/SpirvBuilder.cpp index 10efe2ca..33051f9a 100644 --- a/src/graphics/shader/recompiler/backend/spirv/SpirvBuilder.cpp +++ b/src/graphics/shader/recompiler/backend/spirv/SpirvBuilder.cpp @@ -171,10 +171,12 @@ void Builder::AddFunction(std::span words) { } DeferredPhi Builder::AddDeferredPhi(uint32_t type, uint32_t result, size_t incoming_count) { - std::vector words {spv::OpPhi, type, result}; - words.resize(words.size() + incoming_count * 2u); const DeferredPhi phi {m_functions.size()}; - AddFunction(words); + const auto word_count = static_cast(3u + incoming_count * 2u); + m_functions.push_back((word_count << spv::WordCountShift) | spv::OpPhi); + m_functions.push_back(type); + m_functions.push_back(result); + m_functions.resize(m_functions.size() + incoming_count * 2u); m_unpatched_phi_incomings += incoming_count; return phi; }