diff --git a/src/spirv/spirv_module.cpp b/src/spirv/spirv_module.cpp index 4cb09727..6cf71f8f 100644 --- a/src/spirv/spirv_module.cpp +++ b/src/spirv/spirv_module.cpp @@ -1667,6 +1667,23 @@ namespace dxvk { m_code.putWord(a); return resultId; } + + + uint32_t SpirvModule::opCross( + uint32_t resultType, + uint32_t x, + uint32_t y) { + 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::GLSLstd450Cross); + m_code.putWord(x); + m_code.putWord(y); + return resultId; + } uint32_t SpirvModule::opIAdd( diff --git a/src/spirv/spirv_module.h b/src/spirv/spirv_module.h index 47a086ab..15d57706 100644 --- a/src/spirv/spirv_module.h +++ b/src/spirv/spirv_module.h @@ -614,6 +614,11 @@ namespace dxvk { uint32_t x, uint32_t y, uint32_t a); + + uint32_t opCross( + uint32_t resultType, + uint32_t x, + uint32_t y); uint32_t opIAdd( uint32_t resultType,