Go to the documentation of this file.
33 #ifndef _AK_TOOLS_COMMON_AKPLATFORMFUNCS_H
34 #define _AK_TOOLS_COMMON_AKPLATFORMFUNCS_H
45 #elif defined (AK_XBOX)
46 #include <AK/Tools/XboxOne/AkPlatformFuncs.h>
48 #elif defined (AK_APPLE)
50 #include <AK/Tools/POSIX/AkPlatformFuncs.h>
52 #elif defined (AK_ANDROID)
55 #elif defined (AK_PS4)
58 #elif defined (AK_PELLEGRINO)
59 #include <AK/Tools/Pellegrino/AkPlatformFuncs.h>
61 #elif defined (AK_EMSCRIPTEN)
62 #include <AK/Tools/Emscripten/AkPlatformFuncs.h>
64 #elif defined (AK_LINUX)
67 #include <AK/Tools/GGP/AkPlatformFuncs.h>
70 #include <AK/Tools/POSIX/AkPlatformFuncs.h>
72 #elif defined (AK_QNX)
73 #include <AK/Tools/QNX/AkPlatformFuncs.h>
74 #include <AK/Tools/POSIX/AkPlatformFuncs.h>
80 #error AkPlatformFuncs.h: Undefined platform
83 #ifndef AkPrefetchZero
84 #define AkPrefetchZero(___Dest, ___Size)
87 #ifndef AkPrefetchZeroAligned
88 #define AkPrefetchZeroAligned(___Dest, ___Size)
91 #ifndef AkZeroMemAligned
92 #define AkZeroMemAligned(___Dest, ___Size) AKPLATFORM::AkMemSet(___Dest, 0, ___Size);
94 #ifndef AkZeroMemLarge
95 #define AkZeroMemLarge(___Dest, ___Size) AKPLATFORM::AkMemSet(___Dest, 0, ___Size);
97 #ifndef AkZeroMemSmall
98 #define AkZeroMemSmall(___Dest, ___Size) AKPLATFORM::AkMemSet(___Dest, 0, ___Size);
103 #if __has_builtin( __builtin_alloca_with_align )
104 #define AkAllocaSIMD( _size_ ) __builtin_alloca_with_align( _size_, 128 )
107 #define AkAllocaSIMD( _size_ ) (void*)( ( ( uintptr_t )AkAlloca( _size_ + 16 ) + 0xF ) & ~0xF )
110 #define AkAllocaSIMD( _size_ ) AkAlloca( _size_ )
114 #ifndef AK_THREAD_INIT_CODE
115 #define AK_THREAD_INIT_CODE(_threadProperties)
126 while( in_uWord ){ ++num; in_uWord &= in_uWord-1; }
140 #if defined _MSC_VER && defined AK_CPU_X86_64
143 unsigned long ret = 0;
144 _BitScanForward64(&ret, in_bits);
147 #elif __clang__ || defined __GNUG__
150 return __builtin_ctzll(in_bits);
155 unsigned long ret = 0;
158 while ((in_bits & 1ULL) == 0)
171 unsigned long ret = 0;
172 _BitScanForward(&ret, in_bits);
176 #elif __clang__ || defined __GNUG__
179 return __builtin_ctzl(in_bits);
184 unsigned long ret = 0;
187 while ((in_bits & 1ULL) == 0)
199 #ifndef AK_PERF_RECORDING_RESET
200 #define AK_PERF_RECORDING_RESET()
202 #ifndef AK_PERF_RECORDING_START
203 #define AK_PERF_RECORDING_START( __StorageName__, __uExecutionCountStart__, __uExecutionCountStop__ )
205 #ifndef AK_PERF_RECORDING_STOP
206 #define AK_PERF_RECORDING_STOP( __StorageName__, __uExecutionCountStart__, __uExecutionCountStop__ )
209 #ifndef AK_INSTRUMENT_BEGIN
210 #define AK_INSTRUMENT_BEGIN( _zone_name_ )
211 #define AK_INSTRUMENT_END( _zone_name_ )
212 #define AK_INSTRUMENT_SCOPE( _zone_name_ )
214 #define AK_INSTRUMENT_BEGIN_C(_colour_, _zone_name_ )
216 #define AK_INSTRUMENT_IDLE_BEGIN( _zone_name_ )
217 #define AK_INSTRUMENT_IDLE_END( _zone_name_ )
218 #define AK_INSTRUMENT_IDLE_SCOPE( _zone_name_ )
220 #define AK_INSTRUMENT_STALL_BEGIN( _zone_name_ )
221 #define AK_INSTRUMENT_STALL_END( _zone_name_ )
222 #define AK_INSTRUMENT_STALL_SCOPE( _zone_name_ )
224 #define AK_INSTRUMENT_THREAD_START( _thread_name_ )
227 #endif // _AK_TOOLS_COMMON_AKPLATFORMFUNCS_H
int nPriority
Thread priority.
AkForceInline AkUInt32 AkBitScanForward64(unsigned long long in_bits)
AkForceInline void AkGetDefaultThreadProperties(AkThreadProperties &out_threadProperties)
Platform Independent Helper.
void AkGetDefaultHighPriorityThreadProperties(AkThreadProperties &out_threadProperties)
AkForceInline AkUInt32 GetNumNonZeroBits(AkUInt32 in_uWord)
AkForceInline AkUInt32 AkBitScanForward(unsigned long in_bits)
Tell us about your project. We're here to help.
Register your project and we'll help you get started with no strings attached!
Get started with Wwise