[Mesa-dev] [PATCH v2 19/19] swr: [rasterizer] utility functions for shared libs

Ian Romanick idr at freedesktop.org
Tue May 17 23:11:54 UTC 2016


None of this appears to be used either.

On 05/17/2016 03:36 PM, Tim Rowley wrote:
> ---
>  src/gallium/drivers/swr/rasterizer/core/utils.h    | 65 +++++++++++++++++++++-
>  .../drivers/swr/rasterizer/jitter/jit_api.h        |  1 +
>  2 files changed, 64 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/drivers/swr/rasterizer/core/utils.h b/src/gallium/drivers/swr/rasterizer/core/utils.h
> index bf53c69..a5b004c 100644
> --- a/src/gallium/drivers/swr/rasterizer/core/utils.h
> +++ b/src/gallium/drivers/swr/rasterizer/core/utils.h
> @@ -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;
> -}
> \ No newline at end of file
> +}
> +
> +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);
> +}
> +
> diff --git a/src/gallium/drivers/swr/rasterizer/jitter/jit_api.h b/src/gallium/drivers/swr/rasterizer/jitter/jit_api.h
> index 08261e7..f5c27f0 100644
> --- a/src/gallium/drivers/swr/rasterizer/jitter/jit_api.h
> +++ b/src/gallium/drivers/swr/rasterizer/jitter/jit_api.h
> @@ -29,6 +29,7 @@
>  ******************************************************************************/
>  #pragma once
>  #include "common/os.h"
> +#include "core/utils.h"
>  
>  #include "fetch_jit.h"
>  #include "streamout_jit.h"
> 



More information about the mesa-dev mailing list