summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-reflection-api.cpp
diff options
context:
space:
mode:
authorJay Kwak <82421531+jkwak-work@users.noreply.github.com>2024-04-01 22:02:25 -0700
committerGitHub <noreply@github.com>2024-04-01 22:02:25 -0700
commit251f55c5ec4cb2b7432e71d6ba8adc96700d35c2 (patch)
tree6360ae937545943a97f3a380cbcb3c2d8fb950bd /source/slang/slang-reflection-api.cpp
parentdaf63cc983fd5f8f2b24872a9125e0394ed2180e (diff)
Support SM6.6 keyword "WaveSize" (#3871)
Resolves an issue #3385 Shader Model 6.6 added a new keyowrd, "WaveSize". See the following link for more details: https://microsoft.github.io/DirectX-Specs/d3d/HLSL_SM_6_6_WaveSize.html Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-reflection-api.cpp')
-rw-r--r--source/slang/slang-reflection-api.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/source/slang/slang-reflection-api.cpp b/source/slang/slang-reflection-api.cpp
index 9b20e2933..90103d8d9 100644
--- a/source/slang/slang-reflection-api.cpp
+++ b/source/slang/slang-reflection-api.cpp
@@ -2840,6 +2840,28 @@ SLANG_API void spReflectionEntryPoint_getComputeThreadGroupSize(
}
}
+SLANG_API void spReflectionEntryPoint_getComputeWaveSize(
+ SlangReflectionEntryPoint* inEntryPoint,
+ SlangUInt* outWaveSize)
+{
+ auto entryPointLayout = convert(inEntryPoint);
+
+ if (!entryPointLayout) return;
+ if (!outWaveSize) return;
+
+ auto entryPointFunc = entryPointLayout->entryPoint;
+ if (!entryPointFunc) return;
+
+ // First look for the HLSL case, where we have an attribute attached to the entry point function
+ if (auto waveSizeAttribute = entryPointFunc.getDecl()->findModifier<WaveSizeAttribute>())
+ {
+ if (auto cint = entryPointLayout->program->tryFoldIntVal(waveSizeAttribute->numLanes))
+ *outWaveSize = (SlangUInt)cint->getValue();
+ else if (waveSizeAttribute->numLanes)
+ *outWaveSize = 0;
+ }
+}
+
SLANG_API int spReflectionEntryPoint_usesAnySampleRateInput(
SlangReflectionEntryPoint* inEntryPoint)
{