[Mesa-dev] [PATCH 12/18] swr: [rasterizer common] OSX cleanups

Rowley, Timothy O timothy.o.rowley at intel.com
Tue May 17 16:56:36 UTC 2016


> On May 17, 2016, at 5:56 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> Afaics, things were designed around the premise that one should be
> Windows/MSVC (?) compatible, correct ?
> 
> In many places you're using the native types and hopefully soon you
> can 'flip' the compat. to be used for windows (non-posix) systems.

The primary development of the rasterizer actually happens on Windows/MSVC; while portability was always desired, it sometimes came with a windows flavor.  It’s moving in the direction of using standard C++ language constructs with hopefully minimal platform dependencies.

> 
> On 17 May 2016 at 02:10, Tim Rowley <timothy.o.rowley at intel.com> wrote:
>> ---
>> src/gallium/drivers/swr/rasterizer/common/os.h              | 9 ++++++++-
>> src/gallium/drivers/swr/rasterizer/common/rdtsc_buckets.cpp | 2 +-
>> 2 files changed, 9 insertions(+), 2 deletions(-)
>> 
>> diff --git a/src/gallium/drivers/swr/rasterizer/common/os.h b/src/gallium/drivers/swr/rasterizer/common/os.h
>> index 94bb567..51e6c5a 100644
>> --- a/src/gallium/drivers/swr/rasterizer/common/os.h
>> +++ b/src/gallium/drivers/swr/rasterizer/common/os.h
>> @@ -68,7 +68,7 @@ static inline void AlignedFree(void* p)
>> #define _mm_popcount_sizeT _mm_popcnt_u32
>> #endif
>> 
>> -#elif defined(FORCE_LINUX) || defined(__linux__) || defined(__gnu_linux__)
>> +#elif defined(__APPLE__) || defined(FORCE_LINUX) || defined(__linux__) || defined(__gnu_linux__)
>> 
>> #define SWR_API
>> 
>> @@ -80,6 +80,7 @@ static inline void AlignedFree(void* p)
>> #include <unistd.h>
>> #include <sys/stat.h>
>> #include <stdio.h>
>> +#include <limits.h>
>> 
>> typedef void            VOID;
>> typedef void*           LPVOID;
>> @@ -95,6 +96,8 @@ typedef unsigned int    DWORD;
>> #undef TRUE
>> #define TRUE 1
>> 
>> +#define MAX_PATH PATH_MAX
>> +
>> #define OSALIGN(RWORD, WIDTH) RWORD __attribute__((aligned(WIDTH)))
>> #define THREAD __thread
>> #ifndef INLINE
>> @@ -194,6 +197,10 @@ void AlignedFree(void* p)
>>     free(p);
>> }
>> 
>> +#define _countof(a) (sizeof(a)/sizeof(*(a)))
>> +
> Looks unused ?

This is used by a portion of code not exposed in the open source view.

>> +#define sprintf_s sprintf
>> +#define strcpy_s(dst,size,src) strncpy(dst,src,size)
> As/if you go with my suggestion above, you can reuse the str functions
> in auxiliary/util/u_string.h, which should handle windows nicely.
> Although honestly I hope they fixed their api to be threadsafe, as
> defined by ISO C.

If compilers supported C11, we could just use the _s variants without portability macros.  Unfortunately compilers seem to be lagging on this front.

-Tim



More information about the mesa-dev mailing list