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

Rowley, Timothy O timothy.o.rowley at intel.com
Tue May 17 23:53:43 UTC 2016


These utility functions are used by code not in the open source view of the swr rasterizer.

> On May 17, 2016, at 6:11 PM, Ian Romanick <idr at freedesktop.org> wrote:
> 
> 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