diff options
| author | Yong He <yonghe@outlook.com> | 2024-02-20 12:24:00 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-20 12:24:00 -0800 |
| commit | 4d20fd329956ac89408b1628a8291fea01bc9a6d (patch) | |
| tree | 8e62d9c1ec05142fd25d0b31073fdb56d44691b0 /tools/render-test/slang-support.cpp | |
| parent | 8e9b61e3bac69dbb37a1451b62302e688a017ced (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.cpp | 30 |
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 |
