summaryrefslogtreecommitdiffstats
path: root/source/slang-wasm/slang-wasm.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-11-11 19:29:18 -0800
committerGitHub <noreply@github.com>2024-11-12 11:29:18 +0800
commitea04ad12110df6b958c117f5d92f45813316cd70 (patch)
treefb5c90178425d3fcbd0c92e6d89d0b5835090756 /source/slang-wasm/slang-wasm.cpp
parent3b7d0e01cce61a809757a3fd4c1b9f922a883c8b (diff)
Add wasm binding to get reflection json. (#5536)
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
Diffstat (limited to 'source/slang-wasm/slang-wasm.cpp')
-rw-r--r--source/slang-wasm/slang-wasm.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/slang-wasm/slang-wasm.cpp b/source/slang-wasm/slang-wasm.cpp
index bdc2e5e6e..c6c008483 100644
--- a/source/slang-wasm/slang-wasm.cpp
+++ b/source/slang-wasm/slang-wasm.cpp
@@ -415,6 +415,19 @@ unsigned int ProgramLayout::getParameterCount()
return interface()->getParameterCount();
}
+emscripten::val ProgramLayout::toJsonObject()
+{
+ Slang::ComPtr<ISlangBlob> blob;
+ if (SLANG_FAILED(interface()->toJson(blob.writeRef())))
+ return {};
+ auto jsonString = std::string(
+ (char*)blob->getBufferPointer(),
+ (char*)blob->getBufferPointer() + blob->getBufferSize());
+ emscripten::val parsedObject =
+ emscripten::val::global("JSON").call<emscripten::val>("parse", jsonString);
+ return parsedObject;
+}
+
VariableLayoutReflection* ProgramLayout::getParameterByIndex(unsigned int index)
{
return (slang::wgsl::VariableLayoutReflection*)(interface()->getParameterByIndex(index));