summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-emit-hlsl.cpp2
-rw-r--r--source/slang/slang-lower-to-ir.cpp6
2 files changed, 8 insertions, 0 deletions
diff --git a/source/slang/slang-emit-hlsl.cpp b/source/slang/slang-emit-hlsl.cpp
index 945f00499..c319f2738 100644
--- a/source/slang/slang-emit-hlsl.cpp
+++ b/source/slang/slang-emit-hlsl.cpp
@@ -1041,6 +1041,8 @@ void HLSLSourceEmitter::_emitPrefixTypeAttr(IRAttr* attr)
void HLSLSourceEmitter::emitSimpleFuncParamImpl(IRParam* param)
{
+ emitRateQualifiers(param);
+
if (auto decor = param->findDecoration<IRGeometryInputPrimitiveTypeDecoration>())
{
switch (decor->getOp())
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp
index a185efba9..9fec8f839 100644
--- a/source/slang/slang-lower-to-ir.cpp
+++ b/source/slang/slang-lower-to-ir.cpp
@@ -2489,6 +2489,7 @@ IRLoweringParameterInfo getParameterInfo(
DeclRef<VarDeclBase> const& paramDecl)
{
IRLoweringParameterInfo info;
+
info.type = getType(context->astBuilder, paramDecl);
info.decl = paramDecl;
info.direction = getParameterDirection(paramDecl);
@@ -2698,6 +2699,11 @@ void _lowerFuncDeclBaseTypeInfo(
irParamType = maybeGetConstExprType(builder, irParamType, paramInfo.decl);
}
+ if (paramInfo.decl && paramInfo.decl->hasModifier<HLSLGroupSharedModifier>())
+ {
+ irParamType = builder->getRateQualifiedType(builder->getGroupSharedRate(), irParamType);
+ }
+
paramTypes.add(irParamType);
}