diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2018-11-28 17:56:32 -0500 |
|---|---|---|
| committer | Tim Foley <tfoleyNV@users.noreply.github.com> | 2018-11-28 14:56:32 -0800 |
| commit | 7f0ccc5580faa43c2554d9d016c27ebe069362c5 (patch) | |
| tree | cd958b3cb2e162c18c08583935982f0416f5a07b | |
| parent | e21d5ad650130631e17662ce8f22d15315ab597a (diff) | |
* Renamed spSessionHasCompileTargetSupport to spSessionCheckCompileTargetSupport. (#728)
* Improved return codes from spSessionCheckCompileTargetSupport
| -rw-r--r-- | slang.h | 7 | ||||
| -rw-r--r-- | source/slang/compiler.cpp | 37 | ||||
| -rw-r--r-- | source/slang/compiler.h | 2 | ||||
| -rw-r--r-- | source/slang/slang.cpp | 4 | ||||
| -rw-r--r-- | tools/slang-test/main.cpp | 2 |
5 files changed, 28 insertions, 24 deletions
@@ -849,8 +849,11 @@ extern "C" @brief Returns SLANG_OK if a the compilation target is supported for this session @param session Session @param target The compilation target to test - @return SLANG_OK if the target is available */ - SLANG_API SlangResult spSessionHasCompileTargetSupport( + @return SLANG_OK if the target is available + SLANG_E_NOT_IMPLEMENTED if not implemented in this build + SLANG_E_NOT_FOUND if other resources (such as shared libraries) required to make target work could not be found + SLANG_FAIL other kinds of failures */ + SLANG_API SlangResult spSessionCheckCompileTargetSupport( SlangSession* session, SlangCompileTarget target); diff --git a/source/slang/compiler.cpp b/source/slang/compiler.cpp index 1e514812a..37e9827f8 100644 --- a/source/slang/compiler.cpp +++ b/source/slang/compiler.cpp @@ -181,31 +181,33 @@ namespace Slang } - bool hasCodeGenTarget(Session* session, CodeGenTarget target) + SlangResult checkCompileTargetSupport(Session* session, CodeGenTarget target) { switch (target) { - case CodeGenTarget::Unknown: return false; - case CodeGenTarget::None: return true; + case CodeGenTarget::None: + { + return SLANG_OK; + } case CodeGenTarget::GLSL: case CodeGenTarget::GLSL_Vulkan: case CodeGenTarget::GLSL_Vulkan_OneDesc: { // Can always output GLSL - return true; + return SLANG_OK; } case CodeGenTarget::HLSL: { // Can always output HLSL - return true; + return SLANG_OK; } case CodeGenTarget::SPIRVAssembly: case CodeGenTarget::SPIRV: { #if SLANG_ENABLE_GLSLANG_SUPPORT - return session->getOrLoadSharedLibrary(Slang::SharedLibraryType::Glslang, nullptr) != nullptr; + return session->getOrLoadSharedLibrary(Slang::SharedLibraryType::Glslang, nullptr) ? SLANG_OK : SLANG_E_NOT_FOUND; #else - return false; + return SLANG_E_NOT_IMPLEMENTED; #endif } case CodeGenTarget::DXBytecode: @@ -213,9 +215,9 @@ namespace Slang { #if SLANG_ENABLE_DXBC_SUPPORT // Must have fxc - return session->getOrLoadSharedLibrary(SharedLibraryType::Fxc, nullptr) != nullptr; + return session->getOrLoadSharedLibrary(SharedLibraryType::Fxc, nullptr) ? SLANG_OK : SLANG_E_NOT_FOUND; #else - return false; + return SLANG_E_NOT_IMPLEMENTED; #endif } @@ -224,19 +226,18 @@ namespace Slang { #if SLANG_ENABLE_DXIL_SUPPORT // Must have dxc - return session->getOrLoadSharedLibrary(SharedLibraryType::Dxc, nullptr) && - session->getOrLoadSharedLibrary(SharedLibraryType::Dxil, nullptr); + return (session->getOrLoadSharedLibrary(SharedLibraryType::Dxc, nullptr) && + session->getOrLoadSharedLibrary(SharedLibraryType::Dxil, nullptr)) ? SLANG_OK : SLANG_E_NOT_FOUND; #else - return false; + return SLANG_E_NOT_IMPLEMENTED; #endif } - - default: - { - SLANG_ASSERT(!"Unhandled target"); - return false; - } + + default: break; } + + SLANG_ASSERT(!"Unhandled target"); + return SLANG_FAIL; } // diff --git a/source/slang/compiler.h b/source/slang/compiler.h index 0eaf6e8e9..7be5b332d 100644 --- a/source/slang/compiler.h +++ b/source/slang/compiler.h @@ -500,7 +500,7 @@ namespace Slang CodeGenTarget target); /* Returns true if a codeGen target is available. */ - bool hasCodeGenTarget(Session* session, CodeGenTarget target); + SlangResult checkCompileTargetSupport(Session* session, CodeGenTarget target); struct TypeCheckingCache; // diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp index ef71430fc..8fe08884e 100644 --- a/source/slang/slang.cpp +++ b/source/slang/slang.cpp @@ -1147,12 +1147,12 @@ SLANG_API ISlangSharedLibraryLoader* spSessionGetSharedLibraryLoader( return (s->sharedLibraryLoader == Slang::DefaultSharedLibraryLoader::getSingleton()) ? nullptr : s->sharedLibraryLoader.get(); } -SLANG_API SlangResult spSessionHasCompileTargetSupport( +SLANG_API SlangResult spSessionCheckCompileTargetSupport( SlangSession* session, SlangCompileTarget target) { auto s = SESSION(session); - return Slang::hasCodeGenTarget(s, Slang::CodeGenTarget(target)) ? SLANG_OK : SLANG_FAIL; + return Slang::checkCompileTargetSupport(s, Slang::CodeGenTarget(target)); } SLANG_API SlangCompileRequest* spCreateCompileRequest( diff --git a/tools/slang-test/main.cpp b/tools/slang-test/main.cpp index 9ce92f5bb..f710d63f2 100644 --- a/tools/slang-test/main.cpp +++ b/tools/slang-test/main.cpp @@ -944,7 +944,7 @@ TestResult runCrossCompilerTest(TestContext* context, TestInput& input) SlangCompileTarget target = _getCompileTarget(args[targetIndex + 1].getUnownedSlice()); // Check the session supports it. If not we ignore it - if (SLANG_FAILED(spSessionHasCompileTargetSupport(context->getSession(), target))) + if (SLANG_FAILED(spSessionCheckCompileTargetSupport(context->getSession(), target))) { return TestResult::Ignored; } |
