From 27816b470a958c896d6bb679eb39ca7430ab9120 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 26 May 2018 13:52:33 +0200 Subject: [PATCH] [spirv] Add support for 32-bit specialization constants --- src/spirv/spirv_module.cpp | 13 +++++++++++++ src/spirv/spirv_module.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/src/spirv/spirv_module.cpp b/src/spirv/spirv_module.cpp index 87d211df..c6262f5c 100644 --- a/src/spirv/spirv_module.cpp +++ b/src/spirv/spirv_module.cpp @@ -340,6 +340,19 @@ namespace dxvk { } + uint32_t SpirvModule::specConst32( + uint32_t typeId, + uint32_t value) { + uint32_t resultId = this->allocateId(); + + m_typeConstDefs.putIns (spv::OpSpecConstant, 4); + m_typeConstDefs.putWord (typeId); + m_typeConstDefs.putWord (resultId); + m_typeConstDefs.putWord (value); + return resultId; + } + + void SpirvModule::decorate( uint32_t object, spv::Decoration decoration) { diff --git a/src/spirv/spirv_module.h b/src/spirv/spirv_module.h index febd46ca..47f12f8e 100644 --- a/src/spirv/spirv_module.h +++ b/src/spirv/spirv_module.h @@ -158,6 +158,10 @@ namespace dxvk { uint32_t specConstBool( bool v); + uint32_t specConst32( + uint32_t typeId, + uint32_t value); + void decorate( uint32_t object, spv::Decoration decoration);