summaryrefslogtreecommitdiffstats
path: root/tools/gfx/renderer-shared.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-12-06 09:06:16 -0800
committerGitHub <noreply@github.com>2021-12-06 09:06:16 -0800
commit5cbd61774c6ef2209fa0afc79b1dbbb68514346b (patch)
tree5d1eaaa4f8ed16b5b3fe005b3dfd2488ad462b87 /tools/gfx/renderer-shared.cpp
parentda6be80f18014a3972eedf05099cd0066e9eae04 (diff)
gfx Mutable Root shader object implementation. (#2042)
* gfx Mutable Root shader object implementation. * Fix x86 build. Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tools/gfx/renderer-shared.cpp')
-rw-r--r--tools/gfx/renderer-shared.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/tools/gfx/renderer-shared.cpp b/tools/gfx/renderer-shared.cpp
index 5b2dc949b..c212f21eb 100644
--- a/tools/gfx/renderer-shared.cpp
+++ b/tools/gfx/renderer-shared.cpp
@@ -799,4 +799,32 @@ IDebugCallback* _getNullDebugCallback()
return &result;
}
+Result ShaderObjectBase::copyFrom(IShaderObject* object, ITransientResourceHeap* transientHeap)
+{
+ if (auto srcObj = dynamic_cast<MutableRootShaderObject*>(object))
+ {
+ setData(gfx::ShaderOffset(), srcObj->m_data.begin(), (size_t)srcObj->m_data.getCount());
+ for (auto& kv : srcObj->m_objects)
+ {
+ ComPtr<IShaderObject> subObject;
+ SLANG_RETURN_ON_FAIL(kv.Value->getCurrentVersion(transientHeap, subObject.writeRef()));
+ setObject(kv.Key, subObject);
+ }
+ for (auto& kv : srcObj->m_resources)
+ {
+ setResource(kv.Key, kv.Value.Ptr());
+ }
+ for (auto& kv : srcObj->m_samplers)
+ {
+ setSampler(kv.Key, kv.Value.Ptr());
+ }
+ for (auto& kv : srcObj->m_specializationArgs)
+ {
+ setSpecializationArgs(kv.Key, kv.Value.begin(), (uint32_t)kv.Value.getCount());
+ }
+ return SLANG_OK;
+ }
+ return SLANG_FAIL;
+}
+
} // namespace gfx