diff options
Diffstat (limited to 'tools/gfx-unit-test/precompiled-module-2.cpp')
| -rw-r--r-- | tools/gfx-unit-test/precompiled-module-2.cpp | 65 |
1 files changed, 53 insertions, 12 deletions
diff --git a/tools/gfx-unit-test/precompiled-module-2.cpp b/tools/gfx-unit-test/precompiled-module-2.cpp index ca9f8b565..792f328b0 100644 --- a/tools/gfx-unit-test/precompiled-module-2.cpp +++ b/tools/gfx-unit-test/precompiled-module-2.cpp @@ -17,7 +17,7 @@ static Slang::Result precompileProgram( gfx::IDevice* device, ISlangMutableFileSystem* fileSys, const char* shaderModuleName, - bool precompileToTarget) + PrecompilationMode precompilationMode) { Slang::ComPtr<slang::ISession> slangSession; SLANG_RETURN_ON_FAIL(device->getSlangSession(slangSession.writeRef())); @@ -37,7 +37,8 @@ static Slang::Result precompileProgram( if (!module) return SLANG_FAIL; - if (precompileToTarget) + if (precompilationMode == PrecompilationMode::InternalLink || + precompilationMode == PrecompilationMode::ExternalLink) { SlangCompileTarget target; switch (device->getDeviceInfo().deviceType) @@ -82,7 +83,7 @@ static Slang::Result precompileProgram( void precompiledModule2TestImplCommon( IDevice* device, UnitTestContext* context, - bool precompileToTarget) + PrecompilationMode precompilationMode) { Slang::ComPtr<ITransientResourceHeap> transientHeap; ITransientResourceHeap::Desc transientHeapDesc = {}; @@ -100,7 +101,7 @@ void precompiledModule2TestImplCommon( device, memoryFileSystem.get(), "precompiled-module-imported", - precompileToTarget)); + precompilationMode)); // Next, load the precompiled slang program. Slang::ComPtr<slang::ISession> slangSession; @@ -121,6 +122,17 @@ void precompiledModule2TestImplCommon( } sessionDesc.targets = &targetDesc; sessionDesc.fileSystem = memoryFileSystem.get(); + + Slang::List<slang::CompilerOptionEntry> options; + slang::CompilerOptionEntry skipDownstreamLinkingOption; + skipDownstreamLinkingOption.name = slang::CompilerOptionName::SkipDownstreamLinking; + skipDownstreamLinkingOption.value.kind = slang::CompilerOptionValueKind::Int; + skipDownstreamLinkingOption.value.intValue0 = + precompilationMode == PrecompilationMode::ExternalLink; + options.add(skipDownstreamLinkingOption); + + sessionDesc.compilerOptionEntries = options.getBuffer(); + sessionDesc.compilerOptionEntryCount = options.getCount(); auto globalSession = slangSession->getGlobalSession(); globalSession->createSession(sessionDesc, slangSession.writeRef()); @@ -147,7 +159,8 @@ void precompiledModule2TestImplCommon( shaderProgram, "precompiled-module", "computeMain", - slangReflection)); + slangReflection, + precompilationMode)); ComputePipelineStateDesc pipelineDesc = {}; pipelineDesc.program = shaderProgram.get(); @@ -208,12 +221,17 @@ void precompiledModule2TestImplCommon( void precompiledModule2TestImpl(IDevice* device, UnitTestContext* context) { - precompiledModule2TestImplCommon(device, context, false); + precompiledModule2TestImplCommon(device, context, PrecompilationMode::SlangIR); +} + +void precompiledTargetModule2InternalLinkTestImpl(IDevice* device, UnitTestContext* context) +{ + precompiledModule2TestImplCommon(device, context, PrecompilationMode::InternalLink); } -void precompiledTargetModule2TestImpl(IDevice* device, UnitTestContext* context) +void precompiledTargetModule2ExternalLinkTestImpl(IDevice* device, UnitTestContext* context) { - precompiledModule2TestImplCommon(device, context, true); + precompiledModule2TestImplCommon(device, context, PrecompilationMode::ExternalLink); } SLANG_UNIT_TEST(precompiledModule2D3D12) @@ -221,19 +239,42 @@ SLANG_UNIT_TEST(precompiledModule2D3D12) runTestImpl(precompiledModule2TestImpl, unitTestContext, Slang::RenderApiFlag::D3D12); } -SLANG_UNIT_TEST(precompiledTargetModule2D3D12) +SLANG_UNIT_TEST(precompiledTargetModuleInternalLink2D3D12) { - runTestImpl(precompiledTargetModule2TestImpl, unitTestContext, Slang::RenderApiFlag::D3D12); + runTestImpl( + precompiledTargetModule2InternalLinkTestImpl, + unitTestContext, + Slang::RenderApiFlag::D3D12); } +/* +// Unavailable on D3D12/DXIL currently +SLANG_UNIT_TEST(precompiledTargetModuleExternalLink2D3D12) +{ + runTestImpl(precompiledTargetModule2ExternalLinkTestImpl, unitTestContext, +Slang::RenderApiFlag::D3D12); +} +*/ + SLANG_UNIT_TEST(precompiledModule2Vulkan) { runTestImpl(precompiledModule2TestImpl, unitTestContext, Slang::RenderApiFlag::Vulkan); } -SLANG_UNIT_TEST(precompiledTargetModule2Vulkan) +SLANG_UNIT_TEST(precompiledTargetModule2InternalLinkVulkan) +{ + runTestImpl( + precompiledTargetModule2InternalLinkTestImpl, + unitTestContext, + Slang::RenderApiFlag::Vulkan); +} + +SLANG_UNIT_TEST(precompiledTargetModule2ExternalLinkVulkan) { - runTestImpl(precompiledTargetModule2TestImpl, unitTestContext, Slang::RenderApiFlag::Vulkan); + runTestImpl( + precompiledTargetModule2ExternalLinkTestImpl, + unitTestContext, + Slang::RenderApiFlag::Vulkan); } } // namespace gfx_test |
