diff options
Diffstat (limited to 'editor/plugins/baked_light_baker_cmpxchg.cpp')
| -rw-r--r-- | editor/plugins/baked_light_baker_cmpxchg.cpp | 58 |
1 files changed, 25 insertions, 33 deletions
diff --git a/editor/plugins/baked_light_baker_cmpxchg.cpp b/editor/plugins/baked_light_baker_cmpxchg.cpp index 5e9228b7d..f84c001f7 100644 --- a/editor/plugins/baked_light_baker_cmpxchg.cpp +++ b/editor/plugins/baked_light_baker_cmpxchg.cpp @@ -28,85 +28,77 @@ /*************************************************************************/ #include "typedefs.h" - #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) > 40100 -void baked_light_baker_add_64f(double *dst,double value) { - +void baked_light_baker_add_64f(double *dst, double value) { union { int64_t i; double f; } swapy; - - while(true) { - swapy.f=*dst; + while (true) { + swapy.f = *dst; int64_t from = swapy.i; - swapy.f+=value; - int64_t to=swapy.i; - if (__sync_bool_compare_and_swap((int64_t*)dst,from,to)) + swapy.f += value; + int64_t to = swapy.i; + if (__sync_bool_compare_and_swap((int64_t *)dst, from, to)) break; } } -void baked_light_baker_add_64i(int64_t *dst,int64_t value) { - - while(!__sync_bool_compare_and_swap(dst,*dst,(*dst)+value)) {} +void baked_light_baker_add_64i(int64_t *dst, int64_t value) { + while (!__sync_bool_compare_and_swap(dst, *dst, (*dst) + value)) { + } } #elif defined(WINDOWS_ENABLED) #include "windows.h" -void baked_light_baker_add_64f(double *dst,double value) { +void baked_light_baker_add_64f(double *dst, double value) { union { int64_t i; double f; } swapy; - - while(true) { - swapy.f=*dst; + while (true) { + swapy.f = *dst; int64_t from = swapy.i; - swapy.f+=value; - int64_t to=swapy.i; - int64_t result = InterlockedCompareExchange64((int64_t*)dst,to,from); - if (result==from) + swapy.f += value; + int64_t to = swapy.i; + int64_t result = InterlockedCompareExchange64((int64_t *)dst, to, from); + if (result == from) break; } - } -void baked_light_baker_add_64i(int64_t *dst,int64_t value) { +void baked_light_baker_add_64i(int64_t *dst, int64_t value) { - while(true) { + while (true) { int64_t from = *dst; - int64_t to = from+value; - int64_t result = InterlockedCompareExchange64(dst,to,from); - if (result==from) + int64_t to = from + value; + int64_t result = InterlockedCompareExchange64(dst, to, from); + if (result == from) break; } } - #else //in goder (the god of programmers) we trust #warning seems this platform or compiler does not support safe cmpxchg, your baked lighting may be funny -void baked_light_baker_add_64f(double *dst,double value) { - - *dst+=value; +void baked_light_baker_add_64f(double *dst, double value) { + *dst += value; } -void baked_light_baker_add_64i(int64_t *dst,int64_t value) { - - *dst+=value; +void baked_light_baker_add_64i(int64_t *dst, int64_t value) { + *dst += value; } #endif |
