summaryrefslogtreecommitdiffstats
path: root/tools/render-test/render-test-main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/render-test/render-test-main.cpp')
-rw-r--r--tools/render-test/render-test-main.cpp38
1 files changed, 20 insertions, 18 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp
index 5c8011889..ab73af5b5 100644
--- a/tools/render-test/render-test-main.cpp
+++ b/tools/render-test/render-test-main.cpp
@@ -340,29 +340,27 @@ struct AssignValsFromLayoutContext
ComPtr<IShaderObject> shaderObject = device->createShaderObject(slangType);
SLANG_RETURN_ON_FAIL(assign(ShaderCursor(shaderObject), srcVal->contentVal));
+ dstCursor.setObject(shaderObject);
+ return SLANG_OK;
+ }
- if (srcVal->specializationArgs.getCount())
+ SlangResult assignValWithSpecializationArg(
+ ShaderCursor const& dstCursor,
+ ShaderInputLayout::SpecializeVal* srcVal)
+ {
+ assign(dstCursor, srcVal->contentVal);
+ List<slang::SpecializationArg> args;
+ for (auto& typeName : srcVal->typeArgs)
{
- List<slang::SpecializationArg> args;
- for (auto srcArg : srcVal->specializationArgs)
+ auto slangType = slangReflection->findTypeByName(typeName.getBuffer());
+ if (!slangType)
{
- auto argType = slangReflection->findTypeByName(srcArg.getBuffer());
- if (argType)
- {
- slang::SpecializationArg arg = slang::SpecializationArg::fromType(argType);
- args.add(arg);
- }
- else
- {
- StdWriters::getError().print(
- "error: could not find shader type '%s'\n", srcArg.getBuffer());
- return SLANG_E_INVALID_ARG;
- }
+ StdWriters::getError().print("error: could not find shader type '%s'\n", typeName.getBuffer());
+ return SLANG_E_INVALID_ARG;
}
- shaderObject->setSpecializationArgs(args.getBuffer(), args.getCount());
+ args.add(slang::SpecializationArg::fromType(slangType));
}
- dstCursor.setObject(shaderObject);
- return SLANG_OK;
+ return dstCursor.setSpecializationArgs(args.getBuffer(), (uint32_t)args.getCount());
}
SlangResult assignArray(ShaderCursor const& dstCursor, ShaderInputLayout::ArrayVal* srcVal)
@@ -399,6 +397,10 @@ struct AssignValsFromLayoutContext
case ShaderInputType::Object:
return assignObject(dstCursor, (ShaderInputLayout::ObjectVal*) srcVal.Ptr());
+ case ShaderInputType::Specialize:
+ return assignValWithSpecializationArg(
+ dstCursor, (ShaderInputLayout::SpecializeVal*)srcVal.Ptr());
+
case ShaderInputType::Aggregate:
return assignAggregate(dstCursor, (ShaderInputLayout::AggVal*) srcVal.Ptr());