summaryrefslogtreecommitdiffstats
path: root/tools/render-test/shader-input-layout.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-05-25 15:22:39 -0700
committerGitHub <noreply@github.com>2021-05-25 15:22:39 -0700
commit89f67d9c626fa193dba4adafcb54e46b13aa5e98 (patch)
tree769e11debb4194595a99e484d69af7b3704389c3 /tools/render-test/shader-input-layout.cpp
parentba24264275c640e0ac3732f0f5720e1f5816cded (diff)
Rework shader object specialization control interface. (#1857)
Diffstat (limited to 'tools/render-test/shader-input-layout.cpp')
-rw-r--r--tools/render-test/shader-input-layout.cpp57
1 files changed, 25 insertions, 32 deletions
diff --git a/tools/render-test/shader-input-layout.cpp b/tools/render-test/shader-input-layout.cpp
index af15d5f9f..3ab0366a5 100644
--- a/tools/render-test/shader-input-layout.cpp
+++ b/tools/render-test/shader-input-layout.cpp
@@ -346,37 +346,6 @@ 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("=");
@@ -542,7 +511,6 @@ namespace renderer_test
}
val->contentVal = parseValExpr(parser);
- parseObjectAttributes(val, parser);
return val;
}
else if( parser.AdvanceIf("out") )
@@ -551,6 +519,31 @@ namespace renderer_test
val->isOutput = true;
return val;
}
+ else if (parser.AdvanceIf("specialize"))
+ {
+ RefPtr<ShaderInputLayout::SpecializeVal> val =
+ new ShaderInputLayout::SpecializeVal();
+
+ parser.Read(Misc::TokenType::LParent);
+ while (!parser.IsEnd() &&
+ parser.NextToken().Type != Misc::TokenType::RParent)
+ {
+ val->typeArgs.add(parseTypeName(parser));
+ if (!parser.AdvanceIf(","))
+ break;
+ }
+ parser.Read(Misc::TokenType::RParent);
+ val->contentVal = parseValExpr(parser);
+ return val;
+ }
+ else if (parser.AdvanceIf("dynamic"))
+ {
+ RefPtr<ShaderInputLayout::SpecializeVal> val =
+ new ShaderInputLayout::SpecializeVal();
+ val->typeArgs.add("__Dynamic");
+ val->contentVal = parseValExpr(parser);
+ return val;
+ }
else
{
// We assume that any other word is introducing one of the other