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);