From 5cbd61774c6ef2209fa0afc79b1dbbb68514346b Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 6 Dec 2021 09:06:16 -0800 Subject: gfx Mutable Root shader object implementation. (#2042) * gfx Mutable Root shader object implementation. * Fix x86 build. Co-authored-by: Yong He --- tools/gfx/renderer-shared.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'tools/gfx/renderer-shared.cpp') 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(object)) + { + setData(gfx::ShaderOffset(), srcObj->m_data.begin(), (size_t)srcObj->m_data.getCount()); + for (auto& kv : srcObj->m_objects) + { + ComPtr 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 -- cgit v1.2.3