diff options
| -rw-r--r-- | source/slang/slang-ir-glsl-legalize.cpp | 3 | ||||
| -rw-r--r-- | source/slang/slang-parser.cpp | 1 | ||||
| -rw-r--r-- | tests/spirv/multi-entrypoint-no-rename.slang | 12 |
3 files changed, 15 insertions, 1 deletions
diff --git a/source/slang/slang-ir-glsl-legalize.cpp b/source/slang/slang-ir-glsl-legalize.cpp index 04fb54924..3ca441f96 100644 --- a/source/slang/slang-ir-glsl-legalize.cpp +++ b/source/slang/slang-ir-glsl-legalize.cpp @@ -3722,7 +3722,8 @@ void legalizeEntryPointForGLSL( // Rename the entrypoint to "main" to conform to GLSL standard, // if the compile options require us to do it. - if (!shouldUseOriginalEntryPointName(codeGenContext)) + if (!shouldUseOriginalEntryPointName(codeGenContext) && + codeGenContext->getEntryPointCount() == 1) { entryPointDecor->setName(builder.getStringValue(UnownedStringSlice("main"))); } diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index 4a9d0a576..0d7281e3f 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -2352,6 +2352,7 @@ static Expr* tryParseGenericApp(Parser* parser, Expr* base) case TokenType::OpEql: case TokenType::OpNeq: case TokenType::OpGreater: + case TokenType::OpRsh: case TokenType::EndOfFile: { return parseGenericApp(parser, base); diff --git a/tests/spirv/multi-entrypoint-no-rename.slang b/tests/spirv/multi-entrypoint-no-rename.slang new file mode 100644 index 000000000..e419f1f41 --- /dev/null +++ b/tests/spirv/multi-entrypoint-no-rename.slang @@ -0,0 +1,12 @@ +//TEST:SIMPLE(filecheck=CHECK): -entry missShader -entry missShader2 -target spirv +//TEST:SIMPLE(filecheck=CHECK): -target spirv + +// CHECK: OpEntryPoint MissKHR %missShader "missShader" +// CHECK: OpEntryPoint MissKHR %missShader2 "missShader2" + +struct RayPayload{}; +[shader("miss")] +void missShader(inout RayPayload payload) { } + +[shader("miss")] +void missShader2(inout RayPayload payload) { }
\ No newline at end of file |
