diff --git a/src/spirv/spirv_module.cpp b/src/spirv/spirv_module.cpp index f89729c5..e2579806 100644 --- a/src/spirv/spirv_module.cpp +++ b/src/spirv/spirv_module.cpp @@ -2585,6 +2585,23 @@ namespace dxvk { } + uint32_t SpirvModule::opReflect( + uint32_t resultType, + uint32_t incident, + uint32_t normal) { + uint32_t resultId = this->allocateId(); + + m_code.putIns (spv::OpExtInst, 7); + m_code.putWord(resultType); + m_code.putWord(resultId); + m_code.putWord(m_instExtGlsl450); + m_code.putWord(spv::GLSLstd450Reflect); + m_code.putWord(incident); + m_code.putWord(normal); + return resultId; + } + + uint32_t SpirvModule::opLength( uint32_t resultType, uint32_t operand) { diff --git a/src/spirv/spirv_module.h b/src/spirv/spirv_module.h index 81028087..7cdc5998 100644 --- a/src/spirv/spirv_module.h +++ b/src/spirv/spirv_module.h @@ -903,6 +903,11 @@ namespace dxvk { uint32_t resultType, uint32_t operand); + uint32_t opReflect( + uint32_t resultType, + uint32_t incident, + uint32_t normal); + uint32_t opLength( uint32_t resultType, uint32_t operand);