From 028c6198e4ed9207336aebf7ce46e6e456d08a1c Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Sun, 8 Sep 2019 17:47:23 +0100 Subject: [PATCH] [spirv] Implement opReflect --- src/spirv/spirv_module.cpp | 17 +++++++++++++++++ src/spirv/spirv_module.h | 5 +++++ 2 files changed, 22 insertions(+) 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);