diff options
| author | Yong He <yonghe@outlook.com> | 2021-12-06 09:06:16 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-06 09:06:16 -0800 |
| commit | 5cbd61774c6ef2209fa0afc79b1dbbb68514346b (patch) | |
| tree | 5d1eaaa4f8ed16b5b3fe005b3dfd2488ad462b87 /tools/gfx/renderer-shared.cpp | |
| parent | da6be80f18014a3972eedf05099cd0066e9eae04 (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.cpp | 28 |
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 |
