diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-08-19 14:08:57 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-19 14:08:57 -0400 |
| commit | dc6d0417b137c8ecdcb3b99b7624358bba7fefa8 (patch) | |
| tree | 326fe7f93b08431685c6b01052c2eee18168776b /source/slang | |
| parent | c4541e83b4a57d8317932bc4277ee6a2d45bb2f6 (diff) | |
WIP: Compute test running on CPU (#1023)
* * Simplify some of test code around CPPCompiler
* Test using 'callable' with pass-through
* Small cpu doc improvements
* Improvements to Clang output parsing.
* Remove temporary file (base filename) .
* Improve handling of external errors - handle severity.
* On error dumping out to 'actual' file for runCPPCompilerCompile.
* Small fixes.
Set the source language type correctly for pass thru.
* Remove warning for test for clang backend c
* Preliminary work around making render-test compute potentiall work with CPU.
Made ShaderCompiler -> a stateless ShaderCompilerUtil.
Means we don't require a Renderer interface to do shader compilation.
* Refactor such that CPU test can take place in without Window or Renderer.
* Hack to look for prelude in source file directory.
Fix bug returning the SharedLibrary for HostCallable.
* Compute test running on CPU.
* Need the prelude currently in same directly as test.
* Hack to remove warning - that then produces an error on appveyor build.
Disable running render CPU test on non-windows.
* Improve handling of disabling CPU tests on linux.
* Added bit-cast.slang working on CPU.
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/slang-compiler.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp index a88881b9d..75cd61bf9 100644 --- a/source/slang/slang-compiler.cpp +++ b/source/slang/slang-compiler.cpp @@ -561,6 +561,21 @@ namespace Slang return translationUnit; } + static TranslationUnitRequest* _getTranslationUnit( + EndToEndCompileRequest* endToEndReq, + Int entryPointIndex) + { + // If there isn't an end-to-end compile going on, + // there can be no pass-through. + // + if (!endToEndReq) return nullptr; + + auto frontEndReq = endToEndReq->getFrontEndReq(); + auto entryPointReq = frontEndReq->getEntryPointReq(entryPointIndex); + auto translationUnit = entryPointReq->getTranslationUnit(); + return translationUnit; + } + static void _appendEscapedPath(const UnownedStringSlice& path, StringBuilder& outBuilder) { for (auto c : path) @@ -1301,6 +1316,28 @@ SlangResult dissassembleDXILUsingDXC( } else { + // TODO(JS): This is a hack for two reasons + // * That we just inject the source path for C/C++ include paths if we find the file + // * We should access the files through the ISlangFileSystem + + translationUnit = _getTranslationUnit(endToEndReq, entryPointIndex); + + const auto& sourceFiles = translationUnit->getSourceFiles(); + if (sourceFiles.getCount() == 1) + { + const SourceFile* sourceFile = sourceFiles[0]; + const PathInfo& pathInfo = sourceFile->getPathInfo(); + if (pathInfo.type == PathInfo::Type::FoundPath || pathInfo.type == PathInfo::Type::Normal || pathInfo.type == PathInfo::Type::FromString) + { + String canonicalPath; + if (File::exists(pathInfo.foundPath) && SLANG_SUCCEEDED(Path::getCanonical(pathInfo.foundPath, canonicalPath))) + { + String sourceDir = Path::getParentDirectory(canonicalPath); + includePaths.add(sourceDir); + } + } + } + rawSource = emitCPPForEntryPoint( slangRequest, entryPoint, @@ -1547,6 +1584,7 @@ SlangResult dissassembleDXILUsingDXC( sharedLib->m_temporaryFileSet = productFileSet; productFileSet.clear(); + // Output the shared library outSharedLib = sharedLib; } else |
