diff --git a/src/spirv/spirv_module.cpp b/src/spirv/spirv_module.cpp index 78de2826..4cb09727 100644 --- a/src/spirv/spirv_module.cpp +++ b/src/spirv/spirv_module.cpp @@ -1648,6 +1648,25 @@ namespace dxvk { m_code.putWord(operand); return resultId; } + + + uint32_t SpirvModule::opFMix( + uint32_t resultType, + uint32_t x, + uint32_t y, + uint32_t a) { + uint32_t resultId = this->allocateId(); + + m_code.putIns (spv::OpExtInst, 8); + m_code.putWord(resultType); + m_code.putWord(resultId); + m_code.putWord(m_instExtGlsl450); + m_code.putWord(spv::GLSLstd450FMix); + m_code.putWord(x); + m_code.putWord(y); + m_code.putWord(a); + return resultId; + } uint32_t SpirvModule::opIAdd( diff --git a/src/spirv/spirv_module.h b/src/spirv/spirv_module.h index 38f9ed37..47a086ab 100644 --- a/src/spirv/spirv_module.h +++ b/src/spirv/spirv_module.h @@ -608,6 +608,12 @@ namespace dxvk { uint32_t opFAbs( uint32_t resultType, uint32_t operand); + + uint32_t opFMix( + uint32_t resultType, + uint32_t x, + uint32_t y, + uint32_t a); uint32_t opIAdd( uint32_t resultType,