diff options
-rw-r--r-- | src/mesa/main/imports.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index e967b147311..22ac26e15e9 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -120,7 +120,7 @@ typedef union { GLfloat f; GLint i; } fi_type; * \name Work-arounds for platforms that lack C99 math functions */ /*@{*/ -#if (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE < 600)) && !defined(_ISOC99_SOURCE) \ +#if (!defined(_XOPEN_SOURCE) || (_XOPEN_SOURCE < 600)) && !defined(_ISOC99_SOURCE) \ && (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L)) \ && (!defined(_MSC_VER) || (_MSC_VER < 1400)) #define acosf(f) ((float) acos(f)) @@ -141,7 +141,12 @@ typedef union { GLfloat f; GLint i; } fi_type; #define sqrtf(f) ((float) sqrt(f)) #define tanf(f) ((float) tan(f)) #define tanhf(f) ((float) tanh(f)) -#define truncf(f) ((float) trunc(f)) +#endif + +#if defined(_MSC_VER) +static INLINE float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); } +static INLINE float exp2f(float x) { return powf(2.0f, x); } +static INLINE float log2f(float x) { return logf(x) * 1.442695041f; } #endif /*@}*/ |