summaryrefslogtreecommitdiff
path: root/source/slang
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-09-23 15:38:25 -0400
committerGitHub <noreply@github.com>2019-09-23 15:38:25 -0400
commit05af41d21d74d24871507e6f8f50574ea08c48a2 (patch)
tree3197b021ed71c40f6035fdfa7d450b4b3b945422 /source/slang
parentede0792fd9b4c7bc5c2653092ba1d492e67ca190 (diff)
Simple test profiling (#1062)
* First pass support for performance profiling * Test across all elements * Fix bug - sourceContents is not used, should use rawSource. * * Add ability to get prelude from API. * Allow specifying source language for render-test * Made it possible to compile a test input file as C++ * Special handling for reflection * Added C++ impl to performance-profile.slang * Remove some clang warnings. * Output profile timings on appveyor and other TC. * Remove passing around of StdWriters (can use global). Small comment improvements.
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/slang-compiler.cpp5
-rw-r--r--source/slang/slang-compiler.h4
-rw-r--r--source/slang/slang.cpp10
3 files changed, 16 insertions, 3 deletions
diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp
index ce22186ee..0860a339c 100644
--- a/source/slang/slang-compiler.cpp
+++ b/source/slang/slang-compiler.cpp
@@ -1221,8 +1221,7 @@ SlangResult dissassembleDXILUsingDXC(
bool useOriginalFile = false;
String compileSourcePath;
- String sourceContents;
-
+
String rawSource;
SourceLanguage rawSourceLanguage = SourceLanguage::Unknown;
@@ -1313,7 +1312,7 @@ SlangResult dissassembleDXILUsingDXC(
{
_appendCodeWithPath(sourceFile->getPathInfo().foundPath.getUnownedSlice(), sourceFile->getContent(), codeBuilder);
}
- sourceContents = codeBuilder.ProduceString();
+ rawSource = codeBuilder.ProduceString();
}
}
else
diff --git a/source/slang/slang-compiler.h b/source/slang/slang-compiler.h
index c43af9506..ad90bb5ee 100644
--- a/source/slang/slang-compiler.h
+++ b/source/slang/slang-compiler.h
@@ -1824,6 +1824,10 @@ namespace Slang
SlangPassThrough inPassThrough,
char const* prelude) override;
+ SLANG_NO_THROW void SLANG_MCALL getDownstreamCompilerPrelude(
+ SlangPassThrough inPassThrough,
+ ISlangBlob** outPrelude) override;
+
SLANG_NO_THROW const char* SLANG_MCALL getBuildTagString() override;
enum class SharedLibraryFuncType
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index d5adae722..5f22f8a23 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -202,6 +202,16 @@ SLANG_NO_THROW void SLANG_MCALL Session::setDownstreamCompilerPrelude(
m_downstreamCompilerPreludes[int(passThrough)] = prelude;
}
+SLANG_NO_THROW void SLANG_MCALL Session::getDownstreamCompilerPrelude(
+ SlangPassThrough inPassThrough,
+ ISlangBlob** outPrelude)
+{
+ PassThroughMode passThrough = PassThroughMode(inPassThrough);
+ SLANG_ASSERT(int(passThrough) > int(PassThroughMode::None) && int(passThrough) < int(PassThroughMode::CountOf));
+
+ *outPrelude = Slang::StringUtil::createStringBlob(m_downstreamCompilerPreludes[int(passThrough)]).detach();
+}
+
SLANG_NO_THROW const char* SLANG_MCALL Session::getBuildTagString()
{
return SLANG_TAG_VERSION;