summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2020-09-01 13:47:26 -0700
committerGitHub <noreply@github.com>2020-09-01 13:47:26 -0700
commit5c56479c7b742f94ebf4a97d93826b2a5e4f279d (patch)
treefdd348b67d09b7af5603532d4015036bee588062 /source
parent69025ad82238a7402b18d9c566fac1574faef684 (diff)
Support dynamic existential shader parameters in render-test (#1525)
* Support dynamic existential shader parameters in render-test * Fix linux build error. * Fixes. * Fix code review issues. * Fix gcc error. * More fixes. * More fixes.
Diffstat (limited to 'source')
-rw-r--r--source/core/slang-platform.cpp8
-rw-r--r--source/core/slang-platform.h6
-rw-r--r--source/core/slang-shared-library.cpp4
-rw-r--r--source/core/slang-shared-library.h2
-rw-r--r--source/slang/slang.cpp9
5 files changed, 19 insertions, 10 deletions
diff --git a/source/core/slang-platform.cpp b/source/core/slang-platform.cpp
index d02951e0b..10b9b576b 100644
--- a/source/core/slang-platform.cpp
+++ b/source/core/slang-platform.cpp
@@ -128,10 +128,10 @@ SLANG_COMPILE_TIME_ASSERT(E_OUTOFMEMORY == SLANG_E_OUT_OF_MEMORY);
::FreeLibrary((HMODULE)handle);
}
-/* static */SharedLibrary::FuncPtr SharedLibrary::findFuncByName(Handle handle, char const* name)
+/* static */ void* SharedLibrary::findSymbolAddressByName(Handle handle, char const* name)
{
SLANG_ASSERT(handle);
- return (FuncPtr)GetProcAddress((HMODULE)handle, name);
+ return GetProcAddress((HMODULE)handle, name);
}
/* static */void SharedLibrary::appendPlatformFileName(const UnownedStringSlice& name, StringBuilder& dst)
@@ -173,10 +173,10 @@ SLANG_COMPILE_TIME_ASSERT(E_OUTOFMEMORY == SLANG_E_OUT_OF_MEMORY);
dlclose(handle);
}
-/* static */SharedLibrary::FuncPtr SharedLibrary::findFuncByName(Handle handle, char const* name)
+/* static */void* SharedLibrary::findSymbolAddressByName(Handle handle, char const* name)
{
SLANG_ASSERT(handle);
- return (FuncPtr)dlsym((void*)handle, name);
+ return dlsym((void*)handle, name);
}
/* static */void SharedLibrary::appendPlatformFileName(const UnownedStringSlice& name, StringBuilder& dst)
diff --git a/source/core/slang-platform.h b/source/core/slang-platform.h
index 767e83c1d..804e2b773 100644
--- a/source/core/slang-platform.h
+++ b/source/core/slang-platform.h
@@ -93,10 +93,10 @@ namespace Slang
/// @param The valid handle returned from load
static void unload(Handle handle);
- /// Given a shared library handle and a name, return the associated function
- /// Return nullptr if function is not found
+ /// Given a shared library handle and a name, return the associated object
+ /// Return nullptr if object is not found
/// @param The shared library handle as returned by loadPlatformLibrary
- static FuncPtr findFuncByName(Handle handle, char const* name);
+ static void* findSymbolAddressByName(Handle handle, char const* name);
/// Append to the end of dst, the name, with any platform specific additions
/// The input name should be unadorned with any 'lib' prefix or extension
diff --git a/source/core/slang-shared-library.cpp b/source/core/slang-shared-library.cpp
index b09f345c7..746e14e4c 100644
--- a/source/core/slang-shared-library.cpp
+++ b/source/core/slang-shared-library.cpp
@@ -82,9 +82,9 @@ DefaultSharedLibrary::~DefaultSharedLibrary()
}
}
-SlangFuncPtr DefaultSharedLibrary::findFuncByName(char const* name)
+void* DefaultSharedLibrary::findSymbolAddressByName(char const* name)
{
- return SharedLibrary::findFuncByName(m_sharedLibraryHandle, name);
+ return SharedLibrary::findSymbolAddressByName(m_sharedLibraryHandle, name);
}
}
diff --git a/source/core/slang-shared-library.h b/source/core/slang-shared-library.h
index 0b5c5b2d7..c29f16289 100644
--- a/source/core/slang-shared-library.h
+++ b/source/core/slang-shared-library.h
@@ -52,7 +52,7 @@ class DefaultSharedLibrary : public ISlangSharedLibrary, public RefObject
SLANG_REF_OBJECT_IUNKNOWN_ALL
// ISlangSharedLibrary
- virtual SLANG_NO_THROW SlangFuncPtr SLANG_MCALL findFuncByName(char const* name) SLANG_OVERRIDE;
+ virtual SLANG_NO_THROW void* SLANG_MCALL findSymbolAddressByName(char const* name) SLANG_OVERRIDE;
/// Ctor.
DefaultSharedLibrary(const SharedLibrary::Handle sharedLibraryHandle):
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index c78ca0a4d..889ac8203 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -3652,6 +3652,15 @@ SLANG_API SlangResult spCompileRequest_getModule(
return SLANG_OK;
}
+SLANG_API SlangResult spCompileRequest_getSession(
+ SlangCompileRequest* request,
+ slang::ISession** outSession)
+{
+ auto session = Slang::asInternal(request)->getLinkage();
+ *outSession = Slang::ComPtr<slang::ISession>(session).detach();
+ return SLANG_OK;
+}
+
SLANG_API SlangResult spCompileRequest_getEntryPoint(
SlangCompileRequest* request,
SlangInt entryPointIndex,