Skip to content

Commit 00e7542

Browse files
authored
Make 'shared' keyword map to 'groupshared' in GLSL mode (shader-slang#6003)
1 parent 114c976 commit 00e7542

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

source/slang/slang-parser.cpp

+21-1
Original file line numberDiff line numberDiff line change
@@ -8335,6 +8335,26 @@ static NodeBase* parseCUDASMVersionModifier(Parser* parser, void* /*userData*/)
83358335
parser->sink->diagnose(token, Diagnostics::invalidCUDASMVersion);
83368336
return nullptr;
83378337
}
8338+
8339+
static NodeBase* parseSharedModifier(Parser* parser, void* /*userData*/)
8340+
{
8341+
Modifier* modifier = nullptr;
8342+
8343+
// While in GLSL compatibility mode, 'shared' = 'groupshared' and not the
8344+
// D3D11 effect syntax.
8345+
if (parser->options.allowGLSLInput)
8346+
{
8347+
modifier = parser->astBuilder->create<HLSLGroupSharedModifier>();
8348+
}
8349+
else
8350+
{
8351+
modifier = parser->astBuilder->create<HLSLEffectSharedModifier>();
8352+
}
8353+
modifier->keywordName = getName(parser, "shared");
8354+
modifier->loc = parser->tokenReader.peekLoc();
8355+
return modifier;
8356+
}
8357+
83388358
static NodeBase* parseVolatileModifier(Parser* parser, void* /*userData*/)
83398359
{
83408360
ModifierListBuilder listBuilder;
@@ -8762,7 +8782,7 @@ static const SyntaxParseInfo g_parseSyntaxEntries[] = {
87628782
_makeParseModifier("sample", HLSLSampleModifier::kReflectClassInfo),
87638783
_makeParseModifier("centroid", HLSLCentroidModifier::kReflectClassInfo),
87648784
_makeParseModifier("precise", PreciseModifier::kReflectClassInfo),
8765-
_makeParseModifier("shared", HLSLEffectSharedModifier::kReflectClassInfo),
8785+
_makeParseModifier("shared", parseSharedModifier),
87668786
_makeParseModifier("groupshared", HLSLGroupSharedModifier::kReflectClassInfo),
87678787
_makeParseModifier("static", HLSLStaticModifier::kReflectClassInfo),
87688788
_makeParseModifier("uniform", HLSLUniformModifier::kReflectClassInfo),

0 commit comments

Comments
 (0)