swr: [rasterizer] utility functions for shared libs
Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
6deb9f7f2c
commit
65c2abf6fd
|
@ -867,7 +867,7 @@ struct TemplateArgUnroller
|
|||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Helper used to get an environment variable
|
||||
/// Helpers used to get / set environment variable
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
static INLINE std::string GetEnv(const std::string& variableName)
|
||||
{
|
||||
|
@ -882,4 +882,65 @@ static INLINE std::string GetEnv(const std::string& variableName)
|
|||
#endif
|
||||
|
||||
return output;
|
||||
}
|
||||
}
|
||||
|
||||
static INLINE void SetEnv(const std::string& variableName, const std::string& value)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
SetEnvironmentVariableA(variableName.c_str(), value.c_str());
|
||||
#else
|
||||
setenv(variableName.c_str(), value.c_str(), true);
|
||||
#endif
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Abstraction for dynamically loading modules and getting functions
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
#if defined(_WIN32)
|
||||
typedef HMODULE SWR_MODULE_HANDLE;
|
||||
#else
|
||||
#include <dlfcn.h>
|
||||
typedef void* SWR_MODULE_HANDLE;
|
||||
#endif
|
||||
|
||||
static inline SWR_MODULE_HANDLE SWR_API LoadModule(const char* szModuleName)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
return LoadLibraryA(szModuleName);
|
||||
#else
|
||||
return dlopen(szModuleName, RTLD_LAZY | RTLD_LOCAL);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void SWR_API FreeModuleHandle(SWR_MODULE_HANDLE hModule)
|
||||
{
|
||||
if (hModule)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
FreeLibrary((HMODULE)hModule);
|
||||
#else
|
||||
dlclose(hModule);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static inline void* SWR_API GetProcFromModule(SWR_MODULE_HANDLE hModule, const char* szProcName)
|
||||
{
|
||||
if (hModule && szProcName)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
return GetProcAddress((HMODULE)hModule, szProcName);
|
||||
#else
|
||||
return dlsym(hModule, szProcName);
|
||||
#endif
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static inline void GetProcFromModule(SWR_MODULE_HANDLE hModule, const char* szProcName, T& outFunc)
|
||||
{
|
||||
outFunc = (T)GetProcFromModule(hModule, szProcName);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
******************************************************************************/
|
||||
#pragma once
|
||||
#include "common/os.h"
|
||||
#include "core/utils.h"
|
||||
|
||||
#include "fetch_jit.h"
|
||||
#include "streamout_jit.h"
|
||||
|
|
Loading…
Reference in New Issue