summaryrefslogtreecommitdiffstats
path: root/tools/render-test/slang-support.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-02-20 12:24:00 -0800
committerGitHub <noreply@github.com>2024-02-20 12:24:00 -0800
commit4d20fd329956ac89408b1628a8291fea01bc9a6d (patch)
tree8e62d9c1ec05142fd25d0b31073fdb56d44691b0 /tools/render-test/slang-support.cpp
parent8e9b61e3bac69dbb37a1451b62302e688a017ced (diff)
Refactor compiler option representations. (#3598)
* Refactor compiler option representation. * Fix binary compatibility. * Add a test for specifying compiler options at link time. * Fix binary compatibility. * Fix binary compatibility. * Fix backward compatibility on matrix layout. * Fix. * Fix. * Fix. * Fix gfx. * Fix gfx. * Fix dynamic dispatch. * Polish.
Diffstat (limited to 'tools/render-test/slang-support.cpp')
-rw-r--r--tools/render-test/slang-support.cpp30
1 files changed, 19 insertions, 11 deletions
diff --git a/tools/render-test/slang-support.cpp b/tools/render-test/slang-support.cpp
index c598e4ea5..f585abe5b 100644
--- a/tools/render-test/slang-support.cpp
+++ b/tools/render-test/slang-support.cpp
@@ -71,14 +71,19 @@ void ShaderCompilerUtil::Output::reset()
m_extraRequestForReflection = nullptr;
}
-/* static */ SlangResult ShaderCompilerUtil::_compileProgramImpl(slang::ISession* session, const Options& options, const Input& input, const ShaderCompileRequest& request, Output& out)
+/* static */ SlangResult ShaderCompilerUtil::_compileProgramImpl(slang::IGlobalSession* globalSession, const Options& options, const Input& input, const ShaderCompileRequest& request, Output& out)
{
out.reset();
+ slang::SessionDesc sessionDesc = {};
+ List<slang::PreprocessorMacroDesc> macros;
+ sessionDesc.preprocessorMacroCount = (SlangInt)macros.getCount();
+ sessionDesc.preprocessorMacros = macros.getBuffer();
+
ComPtr<SlangCompileRequest> slangRequest = nullptr;
- session->createCompileRequest(slangRequest.writeRef());
+ globalSession->createCompileRequest(slangRequest.writeRef());
out.m_requestForKernels = slangRequest;
- out.session = session->getGlobalSession();
+ out.session = globalSession;
// Parse all the extra args
{
@@ -104,7 +109,6 @@ void ShaderCompilerUtil::Output::reset()
}
}
}
-
spSetCodeGenTarget(slangRequest, input.target);
spSetTargetProfile(slangRequest, 0, spFindProfile(out.session, input.profile.getBuffer()));
if (options.generateSPIRVDirectly)
@@ -283,11 +287,11 @@ void ShaderCompilerUtil::Output::reset()
return SLANG_OK;
}
-/* static */ SlangResult ShaderCompilerUtil::compileProgram(slang::ISession* session, const Options& options, const Input& input, const ShaderCompileRequest& request, Output& out)
+/* static */ SlangResult ShaderCompilerUtil::compileProgram(slang::IGlobalSession* globalSession, const Options& options, const Input& input, const ShaderCompileRequest& request, Output& out)
{
if( input.passThrough == SLANG_PASS_THROUGH_NONE )
{
- return _compileProgramImpl(session, options, input, request, out);
+ return _compileProgramImpl(globalSession, options, input, request, out);
}
else
{
@@ -317,7 +321,7 @@ void ShaderCompilerUtil::Output::reset()
// TODO: we want to pass along a flag to skip codegen...
- SLANG_RETURN_ON_FAIL(_compileProgramImpl(session, options, slangInput, request, slangOutput));
+ SLANG_RETURN_ON_FAIL(_compileProgramImpl(globalSession, options, slangInput, request, slangOutput));
}
// Now we have what we need to be able to do the downstream compile better.
@@ -326,7 +330,7 @@ void ShaderCompilerUtil::Output::reset()
// to fill in the actual entry points to be used for this compilation,
// so that discovery of entry points via `[shader(...)]` attributes will work.
//
- SLANG_RETURN_ON_FAIL(_compileProgramImpl(session, options, input, request, out));
+ SLANG_RETURN_ON_FAIL(_compileProgramImpl(globalSession, options, input, request, out));
out.m_extraRequestForReflection = slangOutput.getRequestForReflection();
out.desc.slangGlobalScope = slangOutput.desc.slangGlobalScope;
@@ -361,7 +365,11 @@ void ShaderCompilerUtil::Output::reset()
return SLANG_OK;
}
-/* static */SlangResult ShaderCompilerUtil::compileWithLayout(slang::ISession* session, const Options& options, const ShaderCompilerUtil::Input& input, OutputAndLayout& output)
+/* static */SlangResult ShaderCompilerUtil::compileWithLayout(
+ slang::IGlobalSession* globalSession,
+ const Options& options,
+ const ShaderCompilerUtil::Input& input,
+ OutputAndLayout& output)
{
String sourcePath = options.sourcePath;
auto shaderType = options.shaderType;
@@ -373,7 +381,7 @@ void ShaderCompilerUtil::Output::reset()
{
// Add an include of the prelude
ComPtr<ISlangBlob> prelude;
- session->getGlobalSession()->getLanguagePrelude(input.sourceLanguage, prelude.writeRef());
+ globalSession->getLanguagePrelude(input.sourceLanguage, prelude.writeRef());
String preludeString = StringUtil::getString(prelude);
@@ -498,7 +506,7 @@ void ShaderCompilerUtil::Output::reset()
c.idOverride = conformance.idOverride;
compileRequest.typeConformances.add(c);
}
- return ShaderCompilerUtil::compileProgram(session, options, input, compileRequest, output.output);
+ return ShaderCompilerUtil::compileProgram(globalSession, options, input, compileRequest, output.output);
}
} // renderer_test