Update PhysX with Windows on ARM support
This commit is contained in:
2
Source/ThirdParty/PhysX/PxPhysics.h
vendored
2
Source/ThirdParty/PhysX/PxPhysics.h
vendored
@@ -22,7 +22,7 @@
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2024 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2008-2023 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
2
Source/ThirdParty/PhysX/PxPhysicsAPI.h
vendored
2
Source/ThirdParty/PhysX/PxPhysicsAPI.h
vendored
@@ -22,7 +22,7 @@
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2024 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2008-2023 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2024 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2008-2023 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2024 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2008-2023 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
@@ -275,7 +275,9 @@ class PxParticleAttachmentBuffer : public PxUserAllocated
|
||||
PxU32 mNumDeviceAttachments;
|
||||
PxU32 mNumDeviceFilters;
|
||||
|
||||
#if PX_SUPPORT_GPU_PHYSX
|
||||
PxCudaContextManager* mCudaContextManager;
|
||||
#endif
|
||||
|
||||
PxParticleSystem& mParticleSystem;
|
||||
|
||||
|
||||
2
Source/ThirdParty/PhysX/foundation/PxAoS.h
vendored
2
Source/ThirdParty/PhysX/foundation/PxAoS.h
vendored
@@ -33,6 +33,8 @@
|
||||
|
||||
#if PX_WINDOWS && !PX_NEON
|
||||
#include "windows/PxWindowsAoS.h"
|
||||
#elif PX_WINDOWS_FAMILY && PX_NEON
|
||||
#include "windows/neon/PxWindowsNeonAoS.h"
|
||||
#elif(PX_UNIX_FAMILY || PX_PS4 || PX_PS5 || PX_SWITCH)
|
||||
#include "unix/PxUnixAoS.h"
|
||||
#else
|
||||
|
||||
@@ -31,9 +31,13 @@
|
||||
|
||||
#include "foundation/PxPreprocessor.h"
|
||||
|
||||
#if PX_WINDOWS
|
||||
#if PX_WINDOWS_FAMILY
|
||||
#include "windows/PxWindowsTrigConstants.h"
|
||||
#if PX_NEON
|
||||
#include "windows/neon/PxWindowsNeonInlineAoS.h"
|
||||
#else
|
||||
#include "windows/PxWindowsInlineAoS.h"
|
||||
#endif
|
||||
#elif (PX_UNIX_FAMILY || PX_PS4 || PX_PS5 || PX_SWITCH)
|
||||
#include "unix/PxUnixTrigConstants.h"
|
||||
#include "unix/PxUnixInlineAoS.h"
|
||||
|
||||
@@ -143,7 +143,7 @@ SIMD defines
|
||||
#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__) || defined(__ARM_NEON)
|
||||
#if defined(_M_ARM) || defined(__ARM_NEON__) || defined(__ARM_NEON) || defined(_M_ARM64)
|
||||
#define PX_NEON 1
|
||||
#endif
|
||||
#if defined(_M_PPC) || defined(__CELLOS_LV2__)
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
#define COMPILE_VECTOR_INTRINSICS 1
|
||||
#elif PX_SWITCH
|
||||
#define COMPILE_VECTOR_INTRINSICS 1
|
||||
#elif PX_ARM_FAMILY && PX_NEON
|
||||
#define COMPILE_VECTOR_INTRINSICS 1
|
||||
#else
|
||||
#define COMPILE_VECTOR_INTRINSICS 0
|
||||
#endif
|
||||
|
||||
@@ -58,6 +58,7 @@ Return the index of the highest set bit. Undefined for zero arg.
|
||||
*/
|
||||
PX_INLINE uint32_t PxHighestSetBitUnsafe(uint32_t v)
|
||||
{
|
||||
|
||||
return uint32_t(31 - __builtin_clz(v));
|
||||
}
|
||||
|
||||
|
||||
136
Source/ThirdParty/PhysX/foundation/windows/neon/PxWindowsNeonAoS.h
vendored
Normal file
136
Source/ThirdParty/PhysX/foundation/windows/neon/PxWindowsNeonAoS.h
vendored
Normal file
@@ -0,0 +1,136 @@
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2023 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
#ifndef PXFOUNDATION_PXWINDOWSNEONAOS_H
|
||||
#define PXFOUNDATION_PXWINDOWSNEONAOS_H
|
||||
|
||||
// no includes here! this file should be included from PxcVecMath.h only!!!
|
||||
|
||||
#if !COMPILE_VECTOR_INTRINSICS
|
||||
#error Vector intrinsics should not be included when using scalar implementation.
|
||||
#endif
|
||||
|
||||
// only ARM NEON compatible platforms should reach this
|
||||
#include <arm_neon.h>
|
||||
|
||||
namespace physx
|
||||
{
|
||||
namespace aos
|
||||
{
|
||||
|
||||
typedef float32x2_t FloatV;
|
||||
typedef float32x4_t Vec3V;
|
||||
typedef float32x4_t Vec4V;
|
||||
typedef uint32x4_t BoolV;
|
||||
typedef float32x4_t QuatV;
|
||||
|
||||
typedef uint32x4_t VecU32V;
|
||||
typedef int32x4_t VecI32V;
|
||||
typedef uint16x8_t VecU16V;
|
||||
typedef int16x8_t VecI16V;
|
||||
typedef uint8x16_t VecU8V;
|
||||
|
||||
#define FloatVArg FloatV &
|
||||
#define Vec3VArg Vec3V &
|
||||
#define Vec4VArg Vec4V &
|
||||
#define BoolVArg BoolV &
|
||||
#define VecU32VArg VecU32V &
|
||||
#define VecI32VArg VecI32V &
|
||||
#define VecU16VArg VecU16V &
|
||||
#define VecI16VArg VecI16V &
|
||||
#define VecU8VArg VecU8V &
|
||||
#define QuatVArg QuatV &
|
||||
|
||||
// KS - TODO - make an actual VecCrossV type for NEON
|
||||
#define VecCrossV Vec3V
|
||||
|
||||
typedef VecI32V VecShiftV;
|
||||
#define VecShiftVArg VecShiftV &
|
||||
|
||||
PX_ALIGN_PREFIX(16)
|
||||
struct Mat33V
|
||||
{
|
||||
Mat33V()
|
||||
{
|
||||
}
|
||||
Mat33V(const Vec3V& c0, const Vec3V& c1, const Vec3V& c2) : col0(c0), col1(c1), col2(c2)
|
||||
{
|
||||
}
|
||||
Vec3V PX_ALIGN(16, col0);
|
||||
Vec3V PX_ALIGN(16, col1);
|
||||
Vec3V PX_ALIGN(16, col2);
|
||||
} PX_ALIGN_SUFFIX(16);
|
||||
|
||||
PX_ALIGN_PREFIX(16)
|
||||
struct Mat34V
|
||||
{
|
||||
Mat34V()
|
||||
{
|
||||
}
|
||||
Mat34V(const Vec3V& c0, const Vec3V& c1, const Vec3V& c2, const Vec3V& c3) : col0(c0), col1(c1), col2(c2), col3(c3)
|
||||
{
|
||||
}
|
||||
Vec3V PX_ALIGN(16, col0);
|
||||
Vec3V PX_ALIGN(16, col1);
|
||||
Vec3V PX_ALIGN(16, col2);
|
||||
Vec3V PX_ALIGN(16, col3);
|
||||
} PX_ALIGN_SUFFIX(16);
|
||||
|
||||
PX_ALIGN_PREFIX(16)
|
||||
struct Mat43V
|
||||
{
|
||||
Mat43V()
|
||||
{
|
||||
}
|
||||
Mat43V(const Vec4V& c0, const Vec4V& c1, const Vec4V& c2) : col0(c0), col1(c1), col2(c2)
|
||||
{
|
||||
}
|
||||
Vec4V PX_ALIGN(16, col0);
|
||||
Vec4V PX_ALIGN(16, col1);
|
||||
Vec4V PX_ALIGN(16, col2);
|
||||
} PX_ALIGN_SUFFIX(16);
|
||||
|
||||
PX_ALIGN_PREFIX(16)
|
||||
struct Mat44V
|
||||
{
|
||||
Mat44V()
|
||||
{
|
||||
}
|
||||
Mat44V(const Vec4V& c0, const Vec4V& c1, const Vec4V& c2, const Vec4V& c3) : col0(c0), col1(c1), col2(c2), col3(c3)
|
||||
{
|
||||
}
|
||||
Vec4V PX_ALIGN(16, col0);
|
||||
Vec4V PX_ALIGN(16, col1);
|
||||
Vec4V PX_ALIGN(16, col2);
|
||||
Vec4V PX_ALIGN(16, col3);
|
||||
} PX_ALIGN_SUFFIX(16);
|
||||
|
||||
} // namespace aos
|
||||
} // namespace physx
|
||||
|
||||
#endif // PXFOUNDATION_PXWINDOWSNEONAOS_H
|
||||
3656
Source/ThirdParty/PhysX/foundation/windows/neon/PxWindowsNeonInlineAoS.h
vendored
Normal file
3656
Source/ThirdParty/PhysX/foundation/windows/neon/PxWindowsNeonInlineAoS.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@@ -31,6 +31,11 @@
|
||||
|
||||
#include "foundation/PxVec3.h"
|
||||
|
||||
#if PX_VC
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable : 4324) // structure was padded due to alignment specifier
|
||||
#endif
|
||||
|
||||
#if !PX_DOXYGEN
|
||||
namespace physx
|
||||
{
|
||||
@@ -97,4 +102,8 @@ namespace physx
|
||||
} // namespace physx
|
||||
#endif
|
||||
|
||||
#if PX_VC
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -92,6 +92,14 @@ namespace Flax.Deps.Dependencies
|
||||
var cmakeParams = presetXml["preset"]["CMakeParams"];
|
||||
switch (targetPlatform)
|
||||
{
|
||||
case TargetPlatform.Windows:
|
||||
if (architecture == TargetArchitecture.ARM64)
|
||||
{
|
||||
// Windows ARM64 doesn't have GPU support, so avoid copying those DLLs around
|
||||
ConfigureCmakeSwitch(cmakeSwitches, "PX_COPY_EXTERNAL_DLL", "OFF");
|
||||
ConfigureCmakeSwitch(cmakeParams, "PX_COPY_EXTERNAL_DLL", "OFF");
|
||||
}
|
||||
break;
|
||||
case TargetPlatform.Android:
|
||||
ConfigureCmakeSwitch(cmakeParams, "CMAKE_INSTALL_PREFIX", $"install/android-{Configuration.AndroidPlatformApi}/PhysX");
|
||||
ConfigureCmakeSwitch(cmakeParams, "ANDROID_NATIVE_API_LEVEL", $"android-{Configuration.AndroidPlatformApi}");
|
||||
@@ -241,6 +249,12 @@ namespace Flax.Deps.Dependencies
|
||||
envVars.Add("PM_ANDROIDNDK_PATH", AndroidNdk.Instance.RootPath);
|
||||
}
|
||||
|
||||
// Update packman for old PhysX version (https://github.com/NVIDIA-Omniverse/PhysX/issues/229)
|
||||
if (BuildPlatform == TargetPlatform.Windows)
|
||||
Utilities.Run(Path.Combine(projectGenDir, "buildtools", "packman", "packman.cmd"), "update -y");
|
||||
else
|
||||
Utilities.Run(Path.Combine(projectGenDir, "buildtools", "packman", "packman"), "update -y");
|
||||
|
||||
// Print the PhysX version
|
||||
Log.Info("Building PhysX version " + File.ReadAllText(Path.Combine(root, "physx", "version.txt")) + " to " + binariesSubDir);
|
||||
|
||||
@@ -375,6 +389,7 @@ namespace Flax.Deps.Dependencies
|
||||
case TargetPlatform.Windows:
|
||||
{
|
||||
Build(options, "vc17win64", platform, TargetArchitecture.x64);
|
||||
Build(options, "vc17win-arm64", platform, TargetArchitecture.ARM64);
|
||||
break;
|
||||
}
|
||||
case TargetPlatform.Linux:
|
||||
|
||||
Reference in New Issue
Block a user