From 7111af423d9e8ca907c0abaa27e0ac46985de196 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 30 Apr 2019 21:05:46 +0200 Subject: [PATCH] [dxbc] Add new emitNewSpecConstant method Convenience method to declare new specialization constants. --- src/dxbc/dxbc_compiler.cpp | 14 ++++++++++++++ src/dxbc/dxbc_compiler.h | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/src/dxbc/dxbc_compiler.cpp b/src/dxbc/dxbc_compiler.cpp index 84a46ab3..2a571e78 100644 --- a/src/dxbc/dxbc_compiler.cpp +++ b/src/dxbc/dxbc_compiler.cpp @@ -5427,6 +5427,20 @@ namespace dxvk { } + uint32_t DxbcCompiler::emitNewSpecConstant( + DxvkSpecConstantId specId, + DxbcScalarType type, + uint32_t value, + const char* name) { + uint32_t id = m_module.specConst32( + getScalarTypeId(type), value); + + m_module.decorateSpecId(id, uint32_t(specId)); + m_module.setDebugName(id, name); + return id; + } + + DxbcRegisterValue DxbcCompiler::getSpecConstant(DxvkSpecConstantId specId) { const uint32_t specIdOffset = uint32_t(specId) - uint32_t(DxvkSpecConstantId::SpecConstantIdMin); diff --git a/src/dxbc/dxbc_compiler.h b/src/dxbc/dxbc_compiler.h index 3714e1d0..20af80eb 100644 --- a/src/dxbc/dxbc_compiler.h +++ b/src/dxbc/dxbc_compiler.h @@ -986,6 +986,12 @@ namespace dxvk { //////////////////////////////////////// // Spec constant declaration and access + uint32_t emitNewSpecConstant( + DxvkSpecConstantId specId, + DxbcScalarType type, + uint32_t value, + const char* name); + DxbcRegisterValue getSpecConstant( DxvkSpecConstantId specId);