aboutsummaryrefslogtreecommitdiff
path: root/PxShared
diff options
context:
space:
mode:
authorsschirm <[email protected]>2017-02-27 16:40:12 +0100
committersschirm <[email protected]>2017-03-01 18:04:26 +0100
commit7840347c32755e94a807f978f1cbb558717ac8cf (patch)
tree295cd3ca93a45f8fcc43cf3cbf3887c0e0c5526b /PxShared
parentPre-release comments marking end of beta. (diff)
downloadphysx-3.4-7840347c32755e94a807f978f1cbb558717ac8cf.tar.xz
physx-3.4-7840347c32755e94a807f978f1cbb558717ac8cf.zip
PhysX 3.4, APEX 1.4 final release @21757769v3.4.0-rc-2
Diffstat (limited to 'PxShared')
-rw-r--r--PxShared/include/foundation/PxIntrinsics.h2
-rw-r--r--PxShared/include/foundation/PxPreprocessor.h23
-rw-r--r--PxShared/include/foundation/unix/PxUnixIntrinsics.h4
-rw-r--r--PxShared/lib/linux64/libPxCudaContextManager.abin381298 -> 374562 bytes
-rw-r--r--PxShared/lib/linux64/libPxCudaContextManagerCHECKED.abin3464596 -> 2559692 bytes
-rw-r--r--PxShared/lib/linux64/libPxCudaContextManagerDEBUG.abin3235568 -> 2586510 bytes
-rw-r--r--PxShared/lib/linux64/libPxCudaContextManagerPROFILE.abin382506 -> 375666 bytes
-rw-r--r--PxShared/lib/vc11win32/PxCudaContextManagerCHECKED_x86.libbin1344742 -> 1348016 bytes
-rw-r--r--PxShared/lib/vc11win32/PxCudaContextManagerDEBUG_x86.libbin1241036 -> 1244348 bytes
-rw-r--r--PxShared/lib/vc11win32/PxCudaContextManagerPROFILE_x86.libbin1454844 -> 1458124 bytes
-rw-r--r--PxShared/lib/vc11win32/PxCudaContextManager_x86.libbin1453062 -> 1456368 bytes
-rw-r--r--PxShared/lib/vc11win64/PxCudaContextManagerCHECKED_x64.libbin1571650 -> 1574890 bytes
-rw-r--r--PxShared/lib/vc11win64/PxCudaContextManagerDEBUG_x64.libbin1546168 -> 1549454 bytes
-rw-r--r--PxShared/lib/vc11win64/PxCudaContextManagerPROFILE_x64.libbin1741164 -> 1744398 bytes
-rw-r--r--PxShared/lib/vc11win64/PxCudaContextManager_x64.libbin1738952 -> 1742216 bytes
-rw-r--r--PxShared/lib/vc12win32/PxCudaContextManagerCHECKED_x86.libbin1384266 -> 1387554 bytes
-rw-r--r--PxShared/lib/vc12win32/PxCudaContextManagerDEBUG_x86.libbin1261262 -> 1264582 bytes
-rw-r--r--PxShared/lib/vc12win32/PxCudaContextManagerPROFILE_x86.libbin1499176 -> 1502442 bytes
-rw-r--r--PxShared/lib/vc12win32/PxCudaContextManager_x86.libbin1497574 -> 1500862 bytes
-rw-r--r--PxShared/lib/vc12win64/PxCudaContextManagerCHECKED_x64.libbin1602248 -> 1605480 bytes
-rw-r--r--PxShared/lib/vc12win64/PxCudaContextManagerDEBUG_x64.libbin1564554 -> 1567848 bytes
-rw-r--r--PxShared/lib/vc12win64/PxCudaContextManagerPROFILE_x64.libbin1774422 -> 1777666 bytes
-rw-r--r--PxShared/lib/vc12win64/PxCudaContextManager_x64.libbin1772322 -> 1775584 bytes
-rw-r--r--PxShared/lib/vc14win32/PxCudaContextManagerCHECKED_x86.libbin796216 -> 794858 bytes
-rw-r--r--PxShared/lib/vc14win32/PxCudaContextManagerDEBUG_x86.libbin1257922 -> 1257632 bytes
-rw-r--r--PxShared/lib/vc14win32/PxCudaContextManagerPROFILE_x86.libbin828134 -> 826702 bytes
-rw-r--r--PxShared/lib/vc14win32/PxCudaContextManager_x86.libbin826616 -> 825366 bytes
-rw-r--r--PxShared/lib/vc14win64/PxCudaContextManagerCHECKED_x64.libbin890324 -> 895346 bytes
-rw-r--r--PxShared/lib/vc14win64/PxCudaContextManagerDEBUG_x64.libbin1556378 -> 1562412 bytes
-rw-r--r--PxShared/lib/vc14win64/PxCudaContextManagerPROFILE_x64.libbin943698 -> 949124 bytes
-rw-r--r--PxShared/lib/vc14win64/PxCudaContextManager_x64.libbin941548 -> 947004 bytes
-rw-r--r--PxShared/src/NvSimd/include/NvSimdTypes.h8
-rw-r--r--PxShared/src/foundation/include/PsAllocator.h3
-rw-r--r--PxShared/src/foundation/include/PsAoS.h2
-rw-r--r--PxShared/src/foundation/include/PsFPU.h2
-rw-r--r--PxShared/src/foundation/include/PsInlineAoS.h2
-rw-r--r--PxShared/src/foundation/include/PsIntrinsics.h2
-rw-r--r--PxShared/src/foundation/include/PsMathUtils.h5
-rw-r--r--PxShared/src/foundation/include/PsThread.h4
-rw-r--r--PxShared/src/foundation/include/PsVecMath.h13
-rw-r--r--PxShared/src/foundation/include/PsVecMathAoSScalarInline.h8
-rw-r--r--PxShared/src/foundation/include/unix/PsUnixFPU.h3
-rw-r--r--PxShared/src/foundation/include/unix/neon/PsUnixNeonInlineAoS.h5
-rw-r--r--PxShared/src/foundation/include/unix/sse2/PsUnixSse2AoS.h2
-rw-r--r--PxShared/src/foundation/include/unix/sse2/PsUnixSse2InlineAoS.h18
-rw-r--r--PxShared/src/foundation/src/PsAssert.cpp4
-rw-r--r--PxShared/src/foundation/src/unix/PsUnixAtomic.cpp4
-rw-r--r--PxShared/src/foundation/src/unix/PsUnixSList.cpp2
-rw-r--r--PxShared/src/foundation/src/unix/PsUnixThread.cpp4
-rw-r--r--PxShared/src/pvd/include/PxProfileAllocatorWrapper.h2
50 files changed, 93 insertions, 29 deletions
diff --git a/PxShared/include/foundation/PxIntrinsics.h b/PxShared/include/foundation/PxIntrinsics.h
index 3ee02c82..471f934c 100644
--- a/PxShared/include/foundation/PxIntrinsics.h
+++ b/PxShared/include/foundation/PxIntrinsics.h
@@ -38,6 +38,8 @@
#include "foundation/unix/PxUnixIntrinsics.h"
#elif PX_XBOXONE
#include "foundation/XboxOne/PxXboxOneIntrinsics.h"
+#elif PX_NX
+#include "foundation/nx/PxNXIntrinsics.h"
#else
#error "Platform not supported!"
#endif
diff --git a/PxShared/include/foundation/PxPreprocessor.h b/PxShared/include/foundation/PxPreprocessor.h
index 6182de20..446ca762 100644
--- a/PxShared/include/foundation/PxPreprocessor.h
+++ b/PxShared/include/foundation/PxPreprocessor.h
@@ -31,8 +31,8 @@
#define PXFOUNDATION_PXPREPROCESSOR_H
#include <stddef.h>
-#if !(defined(__clang__) && (defined(_WIN32) || defined(_WIN64)))
-#include <ciso646> // detect std::lib, unless clang on windows is used (PxMetaDataGenerator issue)
+#if !defined(PX_GENERATE_META_DATA)
+#include <ciso646>
#endif
/** \addtogroup foundation
@{
@@ -87,6 +87,8 @@ Operating system defines, see http://sourceforge.net/p/predef/wiki/OperatingSyst
#define PX_OSX 1
#elif defined(__ORBIS__)
#define PX_PS4 1
+#elif defined(__NX__)
+#define PX_NX 1
#else
#error "Unknown operating system"
#endif
@@ -111,15 +113,17 @@ Architecture defines, see http://sourceforge.net/p/predef/wiki/Architectures/
/**
SIMD defines
*/
-#if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) || defined (__EMSCRIPTEN__)
+#if !defined(PX_SIMD_DISABLED)
+#if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) || (defined (__EMSCRIPTEN__) && defined(__SSE2__))
#define PX_SSE2 1
#endif
-#if defined(_M_ARM) || defined(__ARM_NEON__)
+#if defined(_M_ARM) || defined(__ARM_NEON__) || defined(__ARM_NEON)
#define PX_NEON 1
#endif
#if defined(_M_PPC) || defined(__CELLOS_LV2__)
#define PX_VMX 1
#endif
+#endif
/**
define anything not defined on this platform to 0
@@ -157,6 +161,9 @@ define anything not defined on this platform to 0
#ifndef PX_PS4
#define PX_PS4 0
#endif
+#ifndef PX_NX
+#define PX_NX 0
+#endif
#ifndef PX_X64
#define PX_X64 0
#endif
@@ -418,7 +425,7 @@ General defines
*/
// static assert
-#if(defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) || (PX_PS4) || (PX_APPLE_FAMILY)
+#if(defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) || (PX_PS4) || (PX_APPLE_FAMILY) || (PX_NX) || (PX_CLANG && PX_ARM)
#define PX_COMPILE_TIME_ASSERT(exp) typedef char PxCompileTimeAssert_Dummy[(exp) ? 1 : -1] __attribute__((unused))
#else
#define PX_COMPILE_TIME_ASSERT(exp) typedef char PxCompileTimeAssert_Dummy[(exp) ? 1 : -1]
@@ -462,13 +469,13 @@ PX_CUDA_CALLABLE PX_INLINE void PX_UNUSED(T const&)
// This assert works on win32/win64, but may need further specialization on other platforms.
// Some GCC compilers need the compiler flag -malign-double to be set.
// Apparently the apple-clang-llvm compiler doesn't support malign-double.
-#if PX_PS4 || PX_APPLE_FAMILY
+#if PX_PS4 || PX_APPLE_FAMILY || (PX_CLANG && !PX_ARM)
struct PxPackValidation
{
char _;
long a;
};
-#elif PX_ANDROID
+#elif PX_ANDROID || (PX_CLANG && PX_ARM)
struct PxPackValidation
{
char _;
@@ -481,7 +488,7 @@ struct PxPackValidation
long long a;
};
#endif
-#if !PX_APPLE_FAMILY
+#if !PX_APPLE_FAMILY && !PX_EMSCRIPTEN
PX_COMPILE_TIME_ASSERT(PX_OFFSET_OF(PxPackValidation, a) == 8);
#endif
diff --git a/PxShared/include/foundation/unix/PxUnixIntrinsics.h b/PxShared/include/foundation/unix/PxUnixIntrinsics.h
index 7b9b9f37..351c83c1 100644
--- a/PxShared/include/foundation/unix/PxUnixIntrinsics.h
+++ b/PxShared/include/foundation/unix/PxUnixIntrinsics.h
@@ -37,8 +37,8 @@
#error "This file should only be included by Unix builds!!"
#endif
-#if PX_LINUX && PX_ARM
- // Linux ARM toolchain can somehow end up including cmath header after math.h, which will undef a bunch of macros and place them in std namespace
+#if PX_LINUX && !defined(__CUDACC__)
+ // Linux and CUDA compilation does not work with std::isfnite, as it is not marked as CUDA callable
#ifndef isfinite
#define isfinite std::isfinite
#endif
diff --git a/PxShared/lib/linux64/libPxCudaContextManager.a b/PxShared/lib/linux64/libPxCudaContextManager.a
index 7a633f59..a197a8e3 100644
--- a/PxShared/lib/linux64/libPxCudaContextManager.a
+++ b/PxShared/lib/linux64/libPxCudaContextManager.a
Binary files differ
diff --git a/PxShared/lib/linux64/libPxCudaContextManagerCHECKED.a b/PxShared/lib/linux64/libPxCudaContextManagerCHECKED.a
index e5734ee6..58552d42 100644
--- a/PxShared/lib/linux64/libPxCudaContextManagerCHECKED.a
+++ b/PxShared/lib/linux64/libPxCudaContextManagerCHECKED.a
Binary files differ
diff --git a/PxShared/lib/linux64/libPxCudaContextManagerDEBUG.a b/PxShared/lib/linux64/libPxCudaContextManagerDEBUG.a
index 74972f59..49568acc 100644
--- a/PxShared/lib/linux64/libPxCudaContextManagerDEBUG.a
+++ b/PxShared/lib/linux64/libPxCudaContextManagerDEBUG.a
Binary files differ
diff --git a/PxShared/lib/linux64/libPxCudaContextManagerPROFILE.a b/PxShared/lib/linux64/libPxCudaContextManagerPROFILE.a
index 135f08d5..a4c3f156 100644
--- a/PxShared/lib/linux64/libPxCudaContextManagerPROFILE.a
+++ b/PxShared/lib/linux64/libPxCudaContextManagerPROFILE.a
Binary files differ
diff --git a/PxShared/lib/vc11win32/PxCudaContextManagerCHECKED_x86.lib b/PxShared/lib/vc11win32/PxCudaContextManagerCHECKED_x86.lib
index 34c7652f..dba03850 100644
--- a/PxShared/lib/vc11win32/PxCudaContextManagerCHECKED_x86.lib
+++ b/PxShared/lib/vc11win32/PxCudaContextManagerCHECKED_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc11win32/PxCudaContextManagerDEBUG_x86.lib b/PxShared/lib/vc11win32/PxCudaContextManagerDEBUG_x86.lib
index d7220d46..a2b9a742 100644
--- a/PxShared/lib/vc11win32/PxCudaContextManagerDEBUG_x86.lib
+++ b/PxShared/lib/vc11win32/PxCudaContextManagerDEBUG_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc11win32/PxCudaContextManagerPROFILE_x86.lib b/PxShared/lib/vc11win32/PxCudaContextManagerPROFILE_x86.lib
index 86eae60a..f630fbf9 100644
--- a/PxShared/lib/vc11win32/PxCudaContextManagerPROFILE_x86.lib
+++ b/PxShared/lib/vc11win32/PxCudaContextManagerPROFILE_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc11win32/PxCudaContextManager_x86.lib b/PxShared/lib/vc11win32/PxCudaContextManager_x86.lib
index 101c8f88..a1db0403 100644
--- a/PxShared/lib/vc11win32/PxCudaContextManager_x86.lib
+++ b/PxShared/lib/vc11win32/PxCudaContextManager_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc11win64/PxCudaContextManagerCHECKED_x64.lib b/PxShared/lib/vc11win64/PxCudaContextManagerCHECKED_x64.lib
index 3569f41d..c977a6cd 100644
--- a/PxShared/lib/vc11win64/PxCudaContextManagerCHECKED_x64.lib
+++ b/PxShared/lib/vc11win64/PxCudaContextManagerCHECKED_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc11win64/PxCudaContextManagerDEBUG_x64.lib b/PxShared/lib/vc11win64/PxCudaContextManagerDEBUG_x64.lib
index c3b1ef02..865003ab 100644
--- a/PxShared/lib/vc11win64/PxCudaContextManagerDEBUG_x64.lib
+++ b/PxShared/lib/vc11win64/PxCudaContextManagerDEBUG_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc11win64/PxCudaContextManagerPROFILE_x64.lib b/PxShared/lib/vc11win64/PxCudaContextManagerPROFILE_x64.lib
index 4fb0b934..62be1484 100644
--- a/PxShared/lib/vc11win64/PxCudaContextManagerPROFILE_x64.lib
+++ b/PxShared/lib/vc11win64/PxCudaContextManagerPROFILE_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc11win64/PxCudaContextManager_x64.lib b/PxShared/lib/vc11win64/PxCudaContextManager_x64.lib
index 62348fb7..04875402 100644
--- a/PxShared/lib/vc11win64/PxCudaContextManager_x64.lib
+++ b/PxShared/lib/vc11win64/PxCudaContextManager_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc12win32/PxCudaContextManagerCHECKED_x86.lib b/PxShared/lib/vc12win32/PxCudaContextManagerCHECKED_x86.lib
index d3e65d94..250c0ea2 100644
--- a/PxShared/lib/vc12win32/PxCudaContextManagerCHECKED_x86.lib
+++ b/PxShared/lib/vc12win32/PxCudaContextManagerCHECKED_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc12win32/PxCudaContextManagerDEBUG_x86.lib b/PxShared/lib/vc12win32/PxCudaContextManagerDEBUG_x86.lib
index e9afb69e..a96f83d7 100644
--- a/PxShared/lib/vc12win32/PxCudaContextManagerDEBUG_x86.lib
+++ b/PxShared/lib/vc12win32/PxCudaContextManagerDEBUG_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc12win32/PxCudaContextManagerPROFILE_x86.lib b/PxShared/lib/vc12win32/PxCudaContextManagerPROFILE_x86.lib
index 4847c9c9..5e4bc08f 100644
--- a/PxShared/lib/vc12win32/PxCudaContextManagerPROFILE_x86.lib
+++ b/PxShared/lib/vc12win32/PxCudaContextManagerPROFILE_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc12win32/PxCudaContextManager_x86.lib b/PxShared/lib/vc12win32/PxCudaContextManager_x86.lib
index 77b7bda0..a40adf5a 100644
--- a/PxShared/lib/vc12win32/PxCudaContextManager_x86.lib
+++ b/PxShared/lib/vc12win32/PxCudaContextManager_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc12win64/PxCudaContextManagerCHECKED_x64.lib b/PxShared/lib/vc12win64/PxCudaContextManagerCHECKED_x64.lib
index 82b6178c..a308b0fc 100644
--- a/PxShared/lib/vc12win64/PxCudaContextManagerCHECKED_x64.lib
+++ b/PxShared/lib/vc12win64/PxCudaContextManagerCHECKED_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc12win64/PxCudaContextManagerDEBUG_x64.lib b/PxShared/lib/vc12win64/PxCudaContextManagerDEBUG_x64.lib
index 52eed710..bc134367 100644
--- a/PxShared/lib/vc12win64/PxCudaContextManagerDEBUG_x64.lib
+++ b/PxShared/lib/vc12win64/PxCudaContextManagerDEBUG_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc12win64/PxCudaContextManagerPROFILE_x64.lib b/PxShared/lib/vc12win64/PxCudaContextManagerPROFILE_x64.lib
index 970fc4ec..eb600118 100644
--- a/PxShared/lib/vc12win64/PxCudaContextManagerPROFILE_x64.lib
+++ b/PxShared/lib/vc12win64/PxCudaContextManagerPROFILE_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc12win64/PxCudaContextManager_x64.lib b/PxShared/lib/vc12win64/PxCudaContextManager_x64.lib
index 6c22774d..2f58019d 100644
--- a/PxShared/lib/vc12win64/PxCudaContextManager_x64.lib
+++ b/PxShared/lib/vc12win64/PxCudaContextManager_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc14win32/PxCudaContextManagerCHECKED_x86.lib b/PxShared/lib/vc14win32/PxCudaContextManagerCHECKED_x86.lib
index da364dd0..61a34e03 100644
--- a/PxShared/lib/vc14win32/PxCudaContextManagerCHECKED_x86.lib
+++ b/PxShared/lib/vc14win32/PxCudaContextManagerCHECKED_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc14win32/PxCudaContextManagerDEBUG_x86.lib b/PxShared/lib/vc14win32/PxCudaContextManagerDEBUG_x86.lib
index 20e27678..f67c364e 100644
--- a/PxShared/lib/vc14win32/PxCudaContextManagerDEBUG_x86.lib
+++ b/PxShared/lib/vc14win32/PxCudaContextManagerDEBUG_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc14win32/PxCudaContextManagerPROFILE_x86.lib b/PxShared/lib/vc14win32/PxCudaContextManagerPROFILE_x86.lib
index 9b44b6ed..24634f45 100644
--- a/PxShared/lib/vc14win32/PxCudaContextManagerPROFILE_x86.lib
+++ b/PxShared/lib/vc14win32/PxCudaContextManagerPROFILE_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc14win32/PxCudaContextManager_x86.lib b/PxShared/lib/vc14win32/PxCudaContextManager_x86.lib
index d10546f6..bdd60eb4 100644
--- a/PxShared/lib/vc14win32/PxCudaContextManager_x86.lib
+++ b/PxShared/lib/vc14win32/PxCudaContextManager_x86.lib
Binary files differ
diff --git a/PxShared/lib/vc14win64/PxCudaContextManagerCHECKED_x64.lib b/PxShared/lib/vc14win64/PxCudaContextManagerCHECKED_x64.lib
index ee98cbda..bad9a558 100644
--- a/PxShared/lib/vc14win64/PxCudaContextManagerCHECKED_x64.lib
+++ b/PxShared/lib/vc14win64/PxCudaContextManagerCHECKED_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc14win64/PxCudaContextManagerDEBUG_x64.lib b/PxShared/lib/vc14win64/PxCudaContextManagerDEBUG_x64.lib
index b77eedd1..53cbfbf6 100644
--- a/PxShared/lib/vc14win64/PxCudaContextManagerDEBUG_x64.lib
+++ b/PxShared/lib/vc14win64/PxCudaContextManagerDEBUG_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc14win64/PxCudaContextManagerPROFILE_x64.lib b/PxShared/lib/vc14win64/PxCudaContextManagerPROFILE_x64.lib
index d7ca06f7..462603f6 100644
--- a/PxShared/lib/vc14win64/PxCudaContextManagerPROFILE_x64.lib
+++ b/PxShared/lib/vc14win64/PxCudaContextManagerPROFILE_x64.lib
Binary files differ
diff --git a/PxShared/lib/vc14win64/PxCudaContextManager_x64.lib b/PxShared/lib/vc14win64/PxCudaContextManager_x64.lib
index 06ec273d..e3bd26c9 100644
--- a/PxShared/lib/vc14win64/PxCudaContextManager_x64.lib
+++ b/PxShared/lib/vc14win64/PxCudaContextManager_x64.lib
Binary files differ
diff --git a/PxShared/src/NvSimd/include/NvSimdTypes.h b/PxShared/src/NvSimd/include/NvSimdTypes.h
index e12afb85..d7b92647 100644
--- a/PxShared/src/NvSimd/include/NvSimdTypes.h
+++ b/PxShared/src/NvSimd/include/NvSimdTypes.h
@@ -78,7 +78,7 @@ void foo(const float* ptr)
#else
#define NV_SIMD_SSE2 0
#endif
-#if defined (_M_ARM) || defined (__ARM_NEON__)
+#if defined (_M_ARM) || defined (__ARM_NEON__) || defined (__ARM_NEON)
#define NV_SIMD_NEON 1
#else
#define NV_SIMD_NEON 0
@@ -99,7 +99,11 @@ void foo(const float* ptr)
// support shift by vector operarations
#define NV_SIMD_SHIFT_BY_VECTOR (NV_SIMD_NEON)
// support inline assembler
-#define NV_SIMD_INLINE_ASSEMBLER !(defined _M_ARM || defined SN_TARGET_PSP2 || defined __arm64__)
+#if defined _M_ARM || defined SN_TARGET_PSP2 || defined __arm64__ || defined __aarch64__
+#define NV_SIMD_INLINE_ASSEMBLER 0
+#else
+#define NV_SIMD_INLINE_ASSEMBLER 1
+#endif
/*! \def NV_SIMD_USE_NAMESPACE
* \brief Set to 1 to define the SIMD library types and functions inside the nvidia::simd namespace.
diff --git a/PxShared/src/foundation/include/PsAllocator.h b/PxShared/src/foundation/include/PsAllocator.h
index 3510ae88..cbf32d38 100644
--- a/PxShared/src/foundation/include/PsAllocator.h
+++ b/PxShared/src/foundation/include/PsAllocator.h
@@ -108,6 +108,9 @@
#elif PX_XBOXONE
#include <malloc.h>
#define PxAlloca(x) alloca(x)
+#elif PX_NX
+#include <malloc.h>
+#define PxAlloca(x) alloca(x)
#endif
#define PxAllocaAligned(x, alignment) ((size_t(PxAlloca(x + alignment)) + (alignment - 1)) & ~size_t(alignment - 1))
diff --git a/PxShared/src/foundation/include/PsAoS.h b/PxShared/src/foundation/include/PsAoS.h
index eed03518..641a40a3 100644
--- a/PxShared/src/foundation/include/PsAoS.h
+++ b/PxShared/src/foundation/include/PsAoS.h
@@ -34,7 +34,7 @@
#if PX_WINDOWS && !PX_NEON
#include "windows/PsWindowsAoS.h"
-#elif(PX_UNIX_FAMILY || PX_PS4)
+#elif(PX_UNIX_FAMILY || PX_PS4 || PX_NX)
#include "unix/PsUnixAoS.h"
#elif PX_XBOXONE
#include "XboxOne/PsXboxOneAoS.h"
diff --git a/PxShared/src/foundation/include/PsFPU.h b/PxShared/src/foundation/include/PsFPU.h
index 4687fe60..fd990a82 100644
--- a/PxShared/src/foundation/include/PsFPU.h
+++ b/PxShared/src/foundation/include/PsFPU.h
@@ -89,7 +89,7 @@ PX_FOUNDATION_API void disableFPExceptions();
#if PX_WINDOWS_FAMILY || PX_XBOXONE
#include "windows/PsWindowsFPU.h"
-#elif PX_LINUX || PX_PS4 || PX_OSX
+#elif (PX_LINUX && PX_SSE2) || PX_PS4 || PX_OSX
#include "unix/PsUnixFPU.h"
#else
PX_INLINE physx::shdfnd::SIMDGuard::SIMDGuard()
diff --git a/PxShared/src/foundation/include/PsInlineAoS.h b/PxShared/src/foundation/include/PsInlineAoS.h
index 27b4470d..6d43607f 100644
--- a/PxShared/src/foundation/include/PsInlineAoS.h
+++ b/PxShared/src/foundation/include/PsInlineAoS.h
@@ -35,7 +35,7 @@
#if PX_WINDOWS
#include "windows/PsWindowsTrigConstants.h"
#include "windows/PsWindowsInlineAoS.h"
-#elif(PX_UNIX_FAMILY || PX_PS4)
+#elif(PX_UNIX_FAMILY || PX_PS4 || PX_NX)
#include "unix/PsUnixTrigConstants.h"
#include "unix/PsUnixInlineAoS.h"
#elif PX_XBOXONE
diff --git a/PxShared/src/foundation/include/PsIntrinsics.h b/PxShared/src/foundation/include/PsIntrinsics.h
index 8cd64dee..1e1b9d1a 100644
--- a/PxShared/src/foundation/include/PsIntrinsics.h
+++ b/PxShared/src/foundation/include/PsIntrinsics.h
@@ -38,6 +38,8 @@
#include "unix/PsUnixIntrinsics.h"
#elif PX_XBOXONE
#include "XboxOne/PsXboxOneIntrinsics.h"
+#elif PX_NX
+#include "nx/PsNXIntrinsics.h"
#else
#error "Platform not supported!"
#endif
diff --git a/PxShared/src/foundation/include/PsMathUtils.h b/PxShared/src/foundation/include/PsMathUtils.h
index 94313f1c..794419be 100644
--- a/PxShared/src/foundation/include/PsMathUtils.h
+++ b/PxShared/src/foundation/include/PsMathUtils.h
@@ -329,6 +329,7 @@ PX_CUDA_CALLABLE PX_FORCE_INLINE bool sameDirection(const PxVec3& d, const PxVec
//! Checks 2 values have different signs
PX_CUDA_CALLABLE PX_FORCE_INLINE IntBool differentSign(PxReal f0, PxReal f1)
{
+#if !PX_EMSCRIPTEN
union
{
PxU32 u;
@@ -337,6 +338,10 @@ PX_CUDA_CALLABLE PX_FORCE_INLINE IntBool differentSign(PxReal f0, PxReal f1)
u1.f = f0;
u2.f = f1;
return IntBool((u1.u ^ u2.u) & PX_SIGN_BITMASK);
+#else
+ // javascript floats are 64-bits...
+ return IntBool( (f0*f1) < 0.0f );
+#endif
}
PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33 star(const PxVec3& v)
diff --git a/PxShared/src/foundation/include/PsThread.h b/PxShared/src/foundation/include/PsThread.h
index b6158f17..8ba553af 100644
--- a/PxShared/src/foundation/include/PsThread.h
+++ b/PxShared/src/foundation/include/PsThread.h
@@ -41,7 +41,7 @@
#if PX_WINDOWS_FAMILY || PX_XBOXONE
#define PxSpinLockPause() __asm pause
-#elif PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY
+#elif PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY || PX_NX
#define PxSpinLockPause() asm("nop")
#else
#error "Platform not supported!"
@@ -173,7 +173,7 @@ class PX_FOUNDATION_API ThreadImpl
Change the affinity mask for this thread. The mask is a platform
specific value.
- On Windows, Linux, PS4 and XboxOne platforms, each set mask bit represents
+ On Windows, Linux, PS4, XboxOne and NX platforms, each set mask bit represents
the index of a logical processor that the OS may schedule thread execution on.
Bits outside the range of valid logical processors may be ignored or cause
the function to return an error.
diff --git a/PxShared/src/foundation/include/PsVecMath.h b/PxShared/src/foundation/include/PsVecMath.h
index 499af335..4e891d8f 100644
--- a/PxShared/src/foundation/include/PsVecMath.h
+++ b/PxShared/src/foundation/include/PsVecMath.h
@@ -47,23 +47,28 @@
// all unknown/experimental cases should better default to NO SIMD.
// enable/disable SIMD
-#if PX_INTEL_FAMILY
+#if !defined(PX_SIMD_DISABLED)
+#if PX_INTEL_FAMILY && (!defined(__EMSCRIPTEN__) || defined(__SSE2__))
#define COMPILE_VECTOR_INTRINSICS 1
#elif PX_ANDROID&& PX_NEON
#define COMPILE_VECTOR_INTRINSICS 1
#elif PX_IOS&& PX_NEON
#define COMPILE_VECTOR_INTRINSICS 1
+#elif PX_NX
+#define COMPILE_VECTOR_INTRINSICS 1
+#else
+#define COMPILE_VECTOR_INTRINSICS 0
+#endif
#else
#define COMPILE_VECTOR_INTRINSICS 0
#endif
-#if defined(COMPILE_VECTOR_INTRINSICS) && PX_INTEL_FAMILY&&(PX_UNIX_FAMILY || PX_PS4)
+#if COMPILE_VECTOR_INTRINSICS && PX_INTEL_FAMILY&&(PX_UNIX_FAMILY || PX_PS4)
// only SSE2 compatible platforms should reach this
#if PX_EMSCRIPTEN
#include <emmintrin.h>
-#else
-#include <xmmintrin.h>
#endif
+#include <xmmintrin.h>
#endif
namespace physx
diff --git a/PxShared/src/foundation/include/PsVecMathAoSScalarInline.h b/PxShared/src/foundation/include/PsVecMathAoSScalarInline.h
index 854190e7..00e179ab 100644
--- a/PxShared/src/foundation/include/PsVecMathAoSScalarInline.h
+++ b/PxShared/src/foundation/include/PsVecMathAoSScalarInline.h
@@ -479,7 +479,7 @@ PX_FORCE_INLINE PxU32 FAllEq(const FloatV a, const FloatV b)
PX_FORCE_INLINE FloatV FRound(const FloatV a)
{
- return floor(a.x + 0.5f);
+ return floorf(a.x + 0.5f);
}
PX_FORCE_INLINE FloatV FSin(const FloatV a)
@@ -816,7 +816,7 @@ PX_FORCE_INLINE PxU32 V3AllEq(const Vec3V a, const Vec3V b)
PX_FORCE_INLINE Vec3V V3Round(const Vec3V a)
{
- return Vec3V(floor(a.x + 0.5f), floor(a.y + 0.5f), floor(a.z + 0.5f));
+ return Vec3V(floorf(a.x + 0.5f), floorf(a.y + 0.5f), floorf(a.z + 0.5f));
}
PX_FORCE_INLINE Vec3V V3Sin(const Vec3V a)
@@ -1271,7 +1271,7 @@ PX_FORCE_INLINE Vec4V V4Clamp(const Vec4V a, const Vec4V minV, const Vec4V maxV)
PX_FORCE_INLINE Vec4V V4Round(const Vec4V a)
{
- return Vec4V(floor(a.x + 0.5f), floor(a.y + 0.5f), floor(a.z + 0.5f), floor(a.w + 0.5f));
+ return Vec4V(floorf(a.x + 0.5f), floorf(a.y + 0.5f), floorf(a.z + 0.5f), floorf(a.w + 0.5f));
}
PX_FORCE_INLINE Vec4V V4Sin(const Vec4V a)
@@ -1479,7 +1479,7 @@ PX_FORCE_INLINE BoolV BOr(const BoolV a, const BoolV b)
PX_FORCE_INLINE PxU32 BAllEq(const BoolV a, const BoolV b)
{
- return (a.ux == b.ux && a.uy == b.uy && a.uz == b.uz && a.uw == b.uw ? TRUE_TO_U32 : FALSE_TO_U32);
+ return (a.ux == b.ux && a.uy == b.uy && a.uz == b.uz && a.uw == b.uw ? 1 : 0);
}
PX_FORCE_INLINE PxU32 BAllEqTTTT(const BoolV a)
diff --git a/PxShared/src/foundation/include/unix/PsUnixFPU.h b/PxShared/src/foundation/include/unix/PsUnixFPU.h
index 2aaabd77..edd55226 100644
--- a/PxShared/src/foundation/include/unix/PsUnixFPU.h
+++ b/PxShared/src/foundation/include/unix/PsUnixFPU.h
@@ -35,6 +35,9 @@
#if PX_LINUX || PX_PS4 || PX_OSX
#if PX_X86 || PX_X64
+#if PX_EMSCRIPTEN
+#include <emmintrin.h>
+#endif
#include <xmmintrin.h>
#elif PX_NEON
#include <arm_neon.h>
diff --git a/PxShared/src/foundation/include/unix/neon/PsUnixNeonInlineAoS.h b/PxShared/src/foundation/include/unix/neon/PsUnixNeonInlineAoS.h
index 00683082..2a0578d1 100644
--- a/PxShared/src/foundation/include/unix/neon/PsUnixNeonInlineAoS.h
+++ b/PxShared/src/foundation/include/unix/neon/PsUnixNeonInlineAoS.h
@@ -42,7 +42,12 @@
// "exact"
#define VRECIPQ recipq_newton<4>
+#if PX_NX
+// StabilizationTests.AveragePoint needs more precision to succeed.
+#define VRECIP recip_newton<5>
+#else
#define VRECIP recip_newton<4>
+#endif
#define VRECIPSQRTQ rsqrtq_newton<4>
#define VRECIPSQRT rsqrt_newton<4>
diff --git a/PxShared/src/foundation/include/unix/sse2/PsUnixSse2AoS.h b/PxShared/src/foundation/include/unix/sse2/PsUnixSse2AoS.h
index 1e118c37..9c76438d 100644
--- a/PxShared/src/foundation/include/unix/sse2/PsUnixSse2AoS.h
+++ b/PxShared/src/foundation/include/unix/sse2/PsUnixSse2AoS.h
@@ -35,7 +35,7 @@
#if !COMPILE_VECTOR_INTRINSICS
#error Vector intrinsics should not be included when using scalar implementation.
#endif
-#ifdef __EMSCRIPTEN__
+#if PX_EMSCRIPTEN
typedef int8_t __int8_t;
typedef int16_t __int16_t;
typedef int32_t __int32_t;
diff --git a/PxShared/src/foundation/include/unix/sse2/PsUnixSse2InlineAoS.h b/PxShared/src/foundation/include/unix/sse2/PsUnixSse2InlineAoS.h
index 6986b4ca..03555381 100644
--- a/PxShared/src/foundation/include/unix/sse2/PsUnixSse2InlineAoS.h
+++ b/PxShared/src/foundation/include/unix/sse2/PsUnixSse2InlineAoS.h
@@ -165,9 +165,15 @@ PX_FORCE_INLINE PxU32 FiniteTestEq(const Vec4V a, const Vec4V b)
_mm_comieq_ss(_mm_shuffle_ps(a1, a1, _MM_SHUFFLE(3, 3, 3, 3)), _mm_shuffle_ps(b1, b1, _MM_SHUFFLE(3, 3, 3, 3))));
}
+#if !PX_EMSCRIPTEN
const PX_ALIGN(16, PxF32 gMaskXYZ[4]) = { physx::PxUnionCast<PxF32>(0xffffffff), physx::PxUnionCast<PxF32>(0xffffffff),
physx::PxUnionCast<PxF32>(0xffffffff), 0 };
}
+#else
+// emscripten doesn't like the PxUnionCast data structure
+// the following is what windows and xbox does -- using these for emscripten
+const PX_ALIGN(16, PxU32 gMaskXYZ[4]) = { 0xffffffff, 0xffffffff, 0xffffffff, 0 }; }
+#endif
namespace _VecMathTests
{
@@ -341,7 +347,11 @@ PX_FORCE_INLINE BoolV BLoad(const bool f)
PX_FORCE_INLINE Vec3V V3LoadA(const PxVec3& f)
{
ASSERT_ISALIGNED16(const_cast<PxVec3*>(&f));
+#if !PX_EMSCRIPTEN
return _mm_and_ps(reinterpret_cast<const Vec3V&>(f), V4LoadA(internalUnitSSE2Simd::gMaskXYZ));
+#else
+ return _mm_and_ps((Vec3V&)f, (VecI32V&)internalUnitSSE2Simd::gMaskXYZ);
+#endif
}
PX_FORCE_INLINE Vec3V V3LoadU(const PxVec3& f)
@@ -358,7 +368,11 @@ PX_FORCE_INLINE Vec3V V3LoadUnsafeA(const PxVec3& f)
PX_FORCE_INLINE Vec3V V3LoadA(const PxF32* const f)
{
ASSERT_ISALIGNED16(const_cast<PxF32*>(f));
+#if !PX_EMSCRIPTEN
return _mm_and_ps(V4LoadA(f), V4LoadA(internalUnitSSE2Simd::gMaskXYZ));
+#else
+ return _mm_and_ps((Vec3V&)*f, (VecI32V&)internalUnitSSE2Simd::gMaskXYZ);
+#endif
}
PX_FORCE_INLINE Vec3V V3LoadU(const PxF32* const i)
@@ -1767,7 +1781,11 @@ PX_FORCE_INLINE Vec4V V4SetZ(const Vec4V v, const FloatV f)
PX_FORCE_INLINE Vec4V V4ClearW(const Vec4V v)
{
+#if !PX_EMSCRIPTEN
return _mm_and_ps(v, V4LoadA(internalUnitSSE2Simd::gMaskXYZ));
+#else
+ return _mm_and_ps(v, (VecI32V&)internalUnitSSE2Simd::gMaskXYZ);
+#endif
}
PX_FORCE_INLINE Vec4V V4PermYXWZ(const Vec4V a)
diff --git a/PxShared/src/foundation/src/PsAssert.cpp b/PxShared/src/foundation/src/PsAssert.cpp
index 41e0c359..30703830 100644
--- a/PxShared/src/foundation/src/PsAssert.cpp
+++ b/PxShared/src/foundation/src/PsAssert.cpp
@@ -34,6 +34,8 @@
#if PX_WINDOWS_FAMILY
#include <crtdbg.h>
+#elif PX_NX
+#include "nx/PsNXAbort.h"
#endif
namespace
@@ -61,6 +63,8 @@ class DefaultAssertHandler : public physx::PxAssertHandler
__debugbreak();
#elif PX_WINDOWS_FAMILY&& PX_CHECKED
__debugbreak();
+#elif PX_NX
+ abort(buffer);
#else
abort();
#endif
diff --git a/PxShared/src/foundation/src/unix/PsUnixAtomic.cpp b/PxShared/src/foundation/src/unix/PsUnixAtomic.cpp
index 55ec8840..d4e933b7 100644
--- a/PxShared/src/foundation/src/unix/PsUnixAtomic.cpp
+++ b/PxShared/src/foundation/src/unix/PsUnixAtomic.cpp
@@ -29,7 +29,11 @@
#include "Ps.h"
#include "PsAtomic.h"
+#if ! PX_EMSCRIPTEN
#define PAUSE() asm("nop")
+#else
+#define PAUSE()
+#endif
namespace physx
{
diff --git a/PxShared/src/foundation/src/unix/PsUnixSList.cpp b/PxShared/src/foundation/src/unix/PsUnixSList.cpp
index 79fc809b..5dd8ac37 100644
--- a/PxShared/src/foundation/src/unix/PsUnixSList.cpp
+++ b/PxShared/src/foundation/src/unix/PsUnixSList.cpp
@@ -33,7 +33,7 @@
#include "PsThread.h"
#include <pthread.h>
-#if PX_IOS
+#if PX_IOS || PX_EMSCRIPTEN
#define USE_MUTEX
#endif
diff --git a/PxShared/src/foundation/src/unix/PsUnixThread.cpp b/PxShared/src/foundation/src/unix/PsUnixThread.cpp
index 8c0afa3b..cb369e0f 100644
--- a/PxShared/src/foundation/src/unix/PsUnixThread.cpp
+++ b/PxShared/src/foundation/src/unix/PsUnixThread.cpp
@@ -53,6 +53,8 @@
#if PX_APPLE_FAMILY
#include <sys/types.h>
#include <sys/sysctl.h>
+#include <TargetConditionals.h>
+#include <pthread.h>
#endif
// fwd
@@ -102,7 +104,7 @@ _ThreadImpl* getThread(ThreadImpl* impl)
static void setTid(_ThreadImpl& threadImpl)
{
// query TID
-#if PX_PS4
+#if PX_PS4 || (defined (TARGET_OS_TV) && TARGET_OS_TV)
// AM: TODO: neither of the below are implemented
#elif PX_APPLE_FAMILY
threadImpl.tid = syscall(SYS_gettid);
diff --git a/PxShared/src/pvd/include/PxProfileAllocatorWrapper.h b/PxShared/src/pvd/include/PxProfileAllocatorWrapper.h
index 5b962dfd..22903ec3 100644
--- a/PxShared/src/pvd/include/PxProfileAllocatorWrapper.h
+++ b/PxShared/src/pvd/include/PxProfileAllocatorWrapper.h
@@ -74,7 +74,7 @@ namespace physx { namespace profile {
{
static const char* getName()
{
-#if PX_LINUX || PX_ANDROID || PX_PS4 || PX_IOS || PX_OSX || PX_EMSCRIPTEN
+#if PX_LINUX || PX_ANDROID || PX_PS4 || PX_IOS || PX_OSX || PX_EMSCRIPTEN || PX_NX
return __PRETTY_FUNCTION__;
#else
return typeid(T).name();