summaryrefslogtreecommitdiff
path: root/source/slang-record-replay/replay/parameter-decoder.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-01-22 09:40:15 -0800
committerGitHub <noreply@github.com>2025-01-22 09:40:15 -0800
commit8000e0ede34e920cc7f37d69a335d74a472eff42 (patch)
treeccf7b3c7fb97d3d5df3afd38fde9e3221e3349de /source/slang-record-replay/replay/parameter-decoder.cpp
parent04353fb7602b7eb6a8b86193510ebe0c670b7724 (diff)
Cache and reuse glsl module. (#6152)
* Cache and reuse glsl module. * Fix. * Implement record/replay for the new api. * Fix record replay. * Fix test.
Diffstat (limited to 'source/slang-record-replay/replay/parameter-decoder.cpp')
-rw-r--r--source/slang-record-replay/replay/parameter-decoder.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/source/slang-record-replay/replay/parameter-decoder.cpp b/source/slang-record-replay/replay/parameter-decoder.cpp
index 824b69de8..afe4f716d 100644
--- a/source/slang-record-replay/replay/parameter-decoder.cpp
+++ b/source/slang-record-replay/replay/parameter-decoder.cpp
@@ -71,6 +71,30 @@ size_t ParameterDecoder::decodePointer(
size_t ParameterDecoder::decodeStruct(
const uint8_t* buffer,
int64_t bufferSize,
+ ValueDecoder<SlangGlobalSessionDesc>& sessionDesc)
+{
+ SLANG_RECORD_ASSERT((buffer != nullptr) && (bufferSize > 0));
+
+ if (bufferSize < (int64_t)sizeof(uint64_t))
+ {
+ return 0;
+ }
+
+ size_t readByte = 0;
+ SlangGlobalSessionDesc& desc = sessionDesc.getValue();
+ readByte = decodeUint32(buffer, bufferSize, desc.structureSize);
+ readByte += decodeUint32(buffer + readByte, bufferSize - readByte, desc.apiVersion);
+ readByte += decodeUint32(buffer + readByte, bufferSize - readByte, desc.languageVersion);
+ uint32_t val = 0;
+ readByte += decodeUint32(buffer + readByte, bufferSize - readByte, val);
+ desc.enableGLSL = (val != 0);
+
+ return readByte;
+}
+
+size_t ParameterDecoder::decodeStruct(
+ const uint8_t* buffer,
+ int64_t bufferSize,
ValueDecoder<slang::SessionDesc>& sessionDesc)
{
SLANG_RECORD_ASSERT((buffer != nullptr) && (bufferSize > 0));