summaryrefslogtreecommitdiffstats
path: root/tools/render-test/render-test-main.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2021-02-17 18:42:23 -0800
committerGitHub <noreply@github.com>2021-02-17 18:42:23 -0800
commitb1e376fa1e7dd0ff59991bdf1d3d859d3b63a74a (patch)
tree94245294fd9e569ed5a231afff44bd5e06203078 /tools/render-test/render-test-main.cpp
parentbdb0c0bb4c22b7956e1d8062c5bdde1caab44255 (diff)
Streamline shader object creation (#1717)
This change kind of rolls together two different simplifications: 1. The `createShaderObject()` shouldn't really need to take an `IShaderObjectLayout` because it could just take the `slang::TypeLayoutReflection` instead and create the shader-object layout behind the scenes. 2. For that matter, it needn't take a `slang::TypeLayoutReflection` either, becaues it could just take a `slang::TypeReflection` and query the layout of that type behind the scenes. The combination of these two changes means: * `IShaderObjectLayout` is gone from the public API, as is `createShaderObjectLayout()` * `createShaderObject()` directly takes a `slang::TypeReflection` and allocates a shader object of that type The result is simpler and more streamlined application code. Note that under the hood the implementation still has shader-object layouts, using the `ShaderObjectLayoutBase` class. A few locations had to change to use `RefPtr`s instead of `ComPtr`s now that the class is no longer a public COM-lite API type. The hope is that this change makes it easier to allocate/cache layouts for things like specialized types "under the hood," as is needed to implement parameter setting for static specialization.
Diffstat (limited to 'tools/render-test/render-test-main.cpp')
-rw-r--r--tools/render-test/render-test-main.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp
index e57e3917e..8f62d8a50 100644
--- a/tools/render-test/render-test-main.cpp
+++ b/tools/render-test/render-test-main.cpp
@@ -397,14 +397,13 @@ SlangResult _assignVarsFromLayout(
case ShaderInputType::Object:
{
auto typeName = entry.objectDesc.typeName;
- slang::TypeLayoutReflection* slangTypeLayout = nullptr;
+ slang::TypeReflection* slangType = nullptr;
if(typeName.getLength() != 0)
{
// If the input line specified the name of the type
// to allocate, then we use it directly.
//
- auto slangType = slangReflection->findTypeByName(typeName.getBuffer());
- slangTypeLayout = slangReflection->getTypeLayout(slangType);
+ slangType = slangReflection->findTypeByName(typeName.getBuffer());
}
else
{
@@ -412,7 +411,7 @@ SlangResult _assignVarsFromLayout(
// then we will infer the type from the type of the
// value pointed to by `entryCursor`.
//
- slangTypeLayout = entryCursor.getTypeLayout();
+ auto slangTypeLayout = entryCursor.getTypeLayout();
switch(slangTypeLayout->getKind())
{
default:
@@ -428,11 +427,11 @@ SlangResult _assignVarsFromLayout(
slangTypeLayout = slangTypeLayout->getElementTypeLayout();
break;
}
+ slangType = slangTypeLayout->getType();
}
- ComPtr<IShaderObjectLayout> shaderObjectLayout = renderer->createShaderObjectLayout(slangTypeLayout);
ComPtr<IShaderObject> shaderObject =
- renderer->createShaderObject(shaderObjectLayout);
+ renderer->createShaderObject(slangType);
entryCursor.setObject(shaderObject);
}