diff options
| author | Jay Kwak <82421531+jkwak-work@users.noreply.github.com> | 2024-07-17 17:00:05 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-17 17:00:05 -0700 |
| commit | 32b1e25e359f8daf5254301dca8be308e8e1e2ab (patch) | |
| tree | 2dd2bf7324b771c4a0aa989194a9b1d3b219af18 /source/slang/slang-emit.cpp | |
| parent | 2db15080085856ed9b5f20642dbb354aac59a888 (diff) | |
Use slang-glslang.dll for spirv-validation (#4642)
* Use slang-glslang.dll for spirv-validation
This change replaces the use of "spirv-val.exe" with an API call to
"spvtools::SpirvTools::Validate()".
Closes #4610
Diffstat (limited to 'source/slang/slang-emit.cpp')
| -rw-r--r-- | source/slang/slang-emit.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp index cb8460173..679d8ce88 100644 --- a/source/slang/slang-emit.cpp +++ b/source/slang/slang-emit.cpp @@ -1704,6 +1704,22 @@ SlangResult emitSPIRVForEntryPointsDirectly( PassThroughMode::SpirvOpt, codeGenContext->getSink()); if (compiler) { + if (!codeGenContext->shouldSkipSPIRVValidation()) + { + StringBuilder runSpirvValEnvVar; + PlatformUtil::getEnvironmentVariable(UnownedStringSlice("SLANG_RUN_SPIRV_VALIDATION"), runSpirvValEnvVar); + if (runSpirvValEnvVar.getUnownedSlice() == "1") + { + if (SLANG_FAILED(compiler->validate((uint32_t*)spirv.getBuffer(), int(spirv.getCount()/4)))) + { + codeGenContext->getSink()->diagnoseWithoutSourceView( + SourceLoc{}, + Diagnostics::spirvValidationFailed + ); + } + } + } + ComPtr<IArtifact> optimizedArtifact; DownstreamCompileOptions downstreamOptions; downstreamOptions.sourceArtifacts = makeSlice(artifact.readRef(), 1); |
