From 8000e0ede34e920cc7f37d69a335d74a472eff42 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 22 Jan 2025 09:40:15 -0800 Subject: Cache and reuse glsl module. (#6152) * Cache and reuse glsl module. * Fix. * Implement record/replay for the new api. * Fix record replay. * Fix test. --- .../replay/parameter-decoder.cpp | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'source/slang-record-replay/replay/parameter-decoder.cpp') 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 @@ -68,6 +68,30 @@ size_t ParameterDecoder::decodePointer( return readByte + dataSize; } +size_t ParameterDecoder::decodeStruct( + const uint8_t* buffer, + int64_t bufferSize, + ValueDecoder& 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, -- cgit v1.2.3