diff options
Diffstat (limited to 'source/slang/slang-spirv-opt.cpp')
| -rw-r--r-- | source/slang/slang-spirv-opt.cpp | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/source/slang/slang-spirv-opt.cpp b/source/slang/slang-spirv-opt.cpp deleted file mode 100644 index 786358324..000000000 --- a/source/slang/slang-spirv-opt.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "slang-spirv-opt.h" -#include "slang-spirv-val.h" - -namespace Slang -{ - -struct RemoveFileRAII -{ - String fileName; - - RemoveFileRAII(String inFileName) - :fileName(inFileName) - {} - - ~RemoveFileRAII() - { - File::remove(fileName); - } -}; - -SlangResult optimizeSPIRV(const List<uint8_t>& spirv, String& outErr, List<uint8_t>& outSpv) -{ - // Set up our process - CommandLine commandLine; - commandLine.m_executableLocation.setName("spirv-opt"); - commandLine.addArg("--eliminate-dead-functions"); - commandLine.addArg("--eliminate-local-single-block"); - commandLine.addArg("--eliminate-local-single-store"); - commandLine.addArg("--eliminate-dead-code-aggressive"); - - commandLine.addArg("-o"); - String outFileName; - File::generateTemporary(UnownedStringSlice("out_spv"), outFileName); - RemoveFileRAII removeFile(outFileName); - - commandLine.addArg(outFileName); - - RefPtr<Process> p; - - // If we failed to even start the process, then spirv-opt isn't available - SLANG_RETURN_ON_FAIL(Process::create(commandLine, 0, p)); - const auto in = p->getStream(StdStreamType::In); - const auto out = p->getStream(StdStreamType::Out); - const auto err = p->getStream(StdStreamType::ErrorOut); - - List<Byte> outErrData; - SLANG_RETURN_ON_FAIL(StreamUtil::readAndWrite(in, spirv.getArrayView(), out, outSpv, err, outErrData)); - - outSpv.clear(); - File::readAllBytes(outFileName, outSpv); - - SLANG_RETURN_ON_FAIL(p->waitForTermination(3600000)); - - outErr = String( - reinterpret_cast<const char*>(outErrData.begin()), - reinterpret_cast<const char*>(outErrData.end()) - ); - - const auto ret = p->getReturnValue(); - if (ret != 0) - return SLANG_FAIL; - - return debugValidateSPIRV(outSpv); -} - -} |
