diff options
| author | Jay Kwak <82421531+jkwak-work@users.noreply.github.com> | 2025-01-07 01:35:47 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-07 01:35:47 -0800 |
| commit | 5621ace93b7665051f7e7c8a2fa68ceaf285ff8d (patch) | |
| tree | 0aec6cedaeb888da9bd1cff617359a2775c63921 /source/compiler-core/slang-json-rpc-connection.cpp | |
| parent | a448b7ecd880c4cbe1c0504af3df4ec708f42d48 (diff) | |
Use disassemble API from SPIRV-Tools (#6001)
* Use disassemble API from SPIRV-Tools
This commit uses C API version of SPIRV disassemble function rather than
calling spirv-dis.exe.
This allows us to use a correct version of SPIRV disassble function that
Slangc.exe is using.
The implementation is mostly copied from external/spirv-tools/tools/dis/dis.cpp, which is a source file for building spirv-dis.exe.
This commit also includes a fix for a bug in RPC communication to `test-server`.
When an RPC connection to `test-server.exe` is reused and the second
test abruptly fails due to a compile error or SPIRV validation error,
the output from the first test run was incorrectly reused as the output
for the second test.
This commit resets the RPC result before waiting for the response so
that even when the RPC connection is erratically disconnected, the
result from the previous run will not be reused incorrectly.
Some of the tests appear to be relying on this type of behavior. By
using an option, `-skip-spirv-validation`, the RPC connection will
continue without an interruption.
Diffstat (limited to 'source/compiler-core/slang-json-rpc-connection.cpp')
| -rw-r--r-- | source/compiler-core/slang-json-rpc-connection.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/source/compiler-core/slang-json-rpc-connection.cpp b/source/compiler-core/slang-json-rpc-connection.cpp index 79ffc9583..fbbd23d75 100644 --- a/source/compiler-core/slang-json-rpc-connection.cpp +++ b/source/compiler-core/slang-json-rpc-connection.cpp @@ -273,6 +273,10 @@ SlangResult JSONRPCConnection::sendCall( SlangResult JSONRPCConnection::waitForResult(Int timeOutInMs) { + // Invalidate m_jsonRoot before waitForResult, because when waitForResult fail, + // we don't want to use the result from the previous read. + m_jsonRoot.reset(); + SLANG_RETURN_ON_FAIL(m_connection->waitForResult(timeOutInMs)); return tryReadMessage(); } |
