From ba24264275c640e0ac3732f0f5720e1f5816cded Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 25 May 2021 10:24:38 -0700 Subject: Allow overriding specialization args via `IShaderObject`. (#1854) * Allow overriding specialization args via `IShaderObject`. * Fixes. Co-authored-by: T. Foley --- tools/render-test/shader-input-layout.cpp | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'tools/render-test/shader-input-layout.cpp') diff --git a/tools/render-test/shader-input-layout.cpp b/tools/render-test/shader-input-layout.cpp index 9362efb45..af15d5f9f 100644 --- a/tools/render-test/shader-input-layout.cpp +++ b/tools/render-test/shader-input-layout.cpp @@ -346,6 +346,37 @@ namespace renderer_test return SLANG_OK; } + SlangResult parseObjectAttributes(ShaderInputLayout::ObjectVal* val, Misc::TokenReader& parser) + { + if (parser.AdvanceIf(":")) + { + while (!parser.IsEnd() && parser.NextToken().Type == Misc::TokenType::Identifier) + { + if (parser.AdvanceIf("specialization_args")) + { + parser.Read(Misc::TokenType::LParent); + while (!parser.IsEnd() && + parser.NextToken().Type != Misc::TokenType::RParent) + { + val->specializationArgs.add(parseTypeName(parser)); + if (!parser.AdvanceIf(",")) + break; + } + parser.Read(Misc::TokenType::RParent); + } + else + { + throw ShaderInputLayoutFormatException( + StringBuilder() << "Unknown attribute \'" << parser.NextToken().Content << "\' (" + << parser.NextToken().Position.Line << ")"); + + return SLANG_FAIL; + } + } + } + return SLANG_OK; + } + Format parseFormatOption(Misc::TokenReader& parser) { parser.Read("="); @@ -511,6 +542,7 @@ namespace renderer_test } val->contentVal = parseValExpr(parser); + parseObjectAttributes(val, parser); return val; } else if( parser.AdvanceIf("out") ) -- cgit v1.2.3