From 77c7396ee12edf70d341971f583b494dd10df197 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 16 Feb 2024 13:54:36 +0100 Subject: [PATCH] [spirv] Add support for OpRawAccessChainNV --- src/spirv/spirv_module.cpp | 24 ++++++++++++++++++++++++ src/spirv/spirv_module.h | 8 ++++++++ 2 files changed, 32 insertions(+) diff --git a/src/spirv/spirv_module.cpp b/src/spirv/spirv_module.cpp index 09240f29..9c141007 100644 --- a/src/spirv/spirv_module.cpp +++ b/src/spirv/spirv_module.cpp @@ -2697,6 +2697,30 @@ namespace dxvk { } + uint32_t SpirvModule::opRawAccessChain( + uint32_t resultType, + uint32_t base, + uint32_t stride, + uint32_t index, + uint32_t offset, + uint32_t operand) { + uint32_t resultId = this->allocateId(); + + m_code.putIns (spv::OpRawAccessChainNV, operand ? 8 : 7); + m_code.putWord(resultType); + m_code.putWord(resultId); + m_code.putWord(base); + m_code.putWord(stride); + m_code.putWord(index); + m_code.putWord(offset); + + if (operand) + m_code.putWord(operand); + + return resultId; + } + + uint32_t SpirvModule::opReflect( uint32_t resultType, uint32_t incident, diff --git a/src/spirv/spirv_module.h b/src/spirv/spirv_module.h index a878e2e1..2845909d 100644 --- a/src/spirv/spirv_module.h +++ b/src/spirv/spirv_module.h @@ -951,6 +951,14 @@ namespace dxvk { uint32_t resultType, uint32_t operand); + uint32_t opRawAccessChain( + uint32_t resultType, + uint32_t base, + uint32_t stride, + uint32_t index, + uint32_t offset, + uint32_t operand); + uint32_t opReflect( uint32_t resultType, uint32_t incident,