summaryrefslogtreecommitdiff
path: root/source/core/slang-shared-library.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/core/slang-shared-library.cpp')
-rw-r--r--source/core/slang-shared-library.cpp78
1 files changed, 13 insertions, 65 deletions
diff --git a/source/core/slang-shared-library.cpp b/source/core/slang-shared-library.cpp
index 2b18ad6aa..b09f345c7 100644
--- a/source/core/slang-shared-library.cpp
+++ b/source/core/slang-shared-library.cpp
@@ -15,31 +15,8 @@ static const Guid IID_ISlangSharedLibraryLoader = SLANG_UUID_ISlangSharedLibrary
/* !!!!!!!!!!!!!!!!!!!!!!!!!! DefaultSharedLibraryLoader !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
-/* static */const char* DefaultSharedLibraryLoader::s_libraryNames[int(SharedLibraryType::CountOf)] =
-{
- nullptr, // SharedLibraryType::Unknown
- "dxcompiler", // SharedLibraryType::Dxc
- "d3dcompiler_47", // SharedLibraryType::Fxc
- "slang-glslang", // SharedLibraryType::Glslang
- "dxil", // SharedLibraryType::Dxil
- "nvrtc64_102_0", // SharedLibraryType::NVRTC
-};
-
/* static */DefaultSharedLibraryLoader DefaultSharedLibraryLoader::s_singleton;
-/* static */SharedLibraryType DefaultSharedLibraryLoader::getSharedLibraryTypeFromName(const UnownedStringSlice& name)
-{
- // Start from 1 to skip Unknown
- for (int i = 1; i < SLANG_COUNT_OF(s_libraryNames); ++i)
- {
- if (name == s_libraryNames[i])
- {
- return SharedLibraryType(i);
- }
- }
- return SharedLibraryType::Unknown;
-}
-
ISlangUnknown* DefaultSharedLibraryLoader::getInterface(const Guid& guid)
{
return (guid == IID_ISlangUnknown || guid == IID_ISlangSharedLibraryLoader) ? static_cast<ISlangSharedLibraryLoader*>(this) : nullptr;
@@ -65,6 +42,19 @@ SlangResult DefaultSharedLibraryLoader::loadPlatformSharedLibrary(const char* pa
return SLANG_OK;
}
+/* static */SlangResult DefaultSharedLibraryLoader::load(ISlangSharedLibraryLoader* loader, const String& path, const String& name, ISlangSharedLibrary** outLibrary)
+{
+ if (path.getLength())
+ {
+ String combinedPath = Path::combine(path, name);
+ return loader->loadSharedLibrary(combinedPath.getBuffer(), outLibrary);
+ }
+ else
+ {
+ return loader->loadSharedLibrary(name.getBuffer(), outLibrary);
+ }
+}
+
/* !!!!!!!!!!!!!!!!!!!!!!!!!! DefaultSharedLibrary !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
TemporarySharedLibrary::~TemporarySharedLibrary()
@@ -97,46 +87,4 @@ SlangFuncPtr DefaultSharedLibrary::findFuncByName(char const* name)
return SharedLibrary::findFuncByName(m_sharedLibraryHandle, name);
}
-/* !!!!!!!!!!!!!!!!!!!!!!!!!! ConfigurableSharedLibraryLoader !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
-
-ISlangUnknown* ConfigurableSharedLibraryLoader::getInterface(const Guid& guid)
-{
- return (guid == IID_ISlangUnknown || guid == IID_ISlangSharedLibraryLoader) ? static_cast<ISlangSharedLibraryLoader*>(this) : nullptr;
-}
-
-SlangResult ConfigurableSharedLibraryLoader::loadSharedLibrary(const char* path, ISlangSharedLibrary** sharedLibraryOut)
-{
- Entry* entry = m_entryMap.TryGetValue(String(path));
- if (entry)
- {
- SharedLibrary::Handle handle;
- SLANG_RETURN_ON_FAIL(entry->func(path, entry->entryString, handle));
- SLANG_ASSERT(handle);
-
- ComPtr<ISlangSharedLibrary> sharedLib(new DefaultSharedLibrary(handle));
- *sharedLibraryOut = sharedLib.detach();
- return SLANG_OK;
- }
-
- return DefaultSharedLibraryLoader::getSingleton()->loadSharedLibrary(path, sharedLibraryOut);
-}
-
-/* static */Result ConfigurableSharedLibraryLoader::replace(const char* pathIn, const String& entryString, SharedLibrary::Handle& handleOut)
-{
- SLANG_UNUSED(pathIn);
- // The replacement is the *whole* string
- return SharedLibrary::loadWithPlatformPath(entryString.begin(), handleOut);
-}
-
-/* static */Result ConfigurableSharedLibraryLoader::changePath(const char* pathIn, const String& entryString, SharedLibrary::Handle& handleOut )
-{
- // Okay we need to reconstruct the name and insert the path
- StringBuilder builder;
- SharedLibrary::appendPlatformFileName(UnownedStringSlice(pathIn), builder);
- String path = Path::combine(entryString, builder);
-
- return SharedLibrary::loadWithPlatformPath(path.begin(), handleOut);
-}
-
-
}