summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-01-16 21:49:38 -0500
committerTim Foley <tfoleyNV@users.noreply.github.com>2019-01-16 18:49:38 -0800
commit0db6e249293b85338acb77f8858c823422949c3f (patch)
tree5975fa8b4442a5d72ffc4a26236f5e82b84bff1d
parentaedf61784606406c090302efd8b7ac668ac997fc (diff)
Not finding dxil no longer an error. Outputs a warning. (#781)
* * Allow dxc compilation to take place if dxil is not found. * Output a warning that output will not be signed. * Remove .dll from dxil in warning so more applicable cross platform.
-rw-r--r--source/slang/compiler.cpp3
-rw-r--r--source/slang/diagnostic-defs.h1
-rw-r--r--source/slang/dxc-support.cpp11
3 files changed, 13 insertions, 2 deletions
diff --git a/source/slang/compiler.cpp b/source/slang/compiler.cpp
index 895c8d159..a003cf33d 100644
--- a/source/slang/compiler.cpp
+++ b/source/slang/compiler.cpp
@@ -192,8 +192,7 @@ namespace Slang
{
#if SLANG_ENABLE_DXIL_SUPPORT
// Must have dxc
- return (session->getOrLoadSharedLibrary(SharedLibraryType::Dxc, nullptr) &&
- session->getOrLoadSharedLibrary(SharedLibraryType::Dxil, nullptr)) ? SLANG_OK : SLANG_E_NOT_FOUND;
+ return session->getOrLoadSharedLibrary(SharedLibraryType::Dxc, nullptr) ? SLANG_OK : SLANG_E_NOT_FOUND;
#endif
break;
}
diff --git a/source/slang/diagnostic-defs.h b/source/slang/diagnostic-defs.h
index 4a43cf8e4..a7c89321d 100644
--- a/source/slang/diagnostic-defs.h
+++ b/source/slang/diagnostic-defs.h
@@ -447,6 +447,7 @@ DIAGNOSTIC(51092, Error, stageDoesntHaveInputWorld, "'$0' doesn't appear to have
DIAGNOSTIC(52000, Error, multiLevelBreakUnsupported, "control flow appears to require multi-level `break`, which Slang does not yet support");
+DIAGNOSTIC(52001, Warning, dxilNotFound, "dxil shared library not found, so 'dxc' output cannot be signed! Shader code will not be runnable in non-development environments.");
// 99999 - Internal compiler errors, and not-yet-classified diagnostics.
diff --git a/source/slang/dxc-support.cpp b/source/slang/dxc-support.cpp
index 7fe22191b..7d2d6dc0c 100644
--- a/source/slang/dxc-support.cpp
+++ b/source/slang/dxc-support.cpp
@@ -64,6 +64,17 @@ namespace Slang
return SLANG_FAIL;
}
+ {
+ if (!session->getSharedLibrary(SharedLibraryType::Dxil))
+ {
+ // If can't load dxil - dxc will not be able to sign output
+ // Output a suitable warning to the user
+ auto& sink = entryPoint->compileRequest->mSink;
+
+ sink.diagnose(SourceLoc(), Diagnostics::dxilNotFound);
+ }
+ }
+
ComPtr<IDxcCompiler> dxcCompiler;
SLANG_RETURN_ON_FAIL(dxcCreateInstance(
CLSID_DxcCompiler,