Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android platform support #40

Closed

Conversation

moraaar
Copy link

@moraaar moraaar commented Nov 23, 2022

What's new?

  • Added Android platform support to PhysX 5.1.
  • New build preset android-arm64-v8a added. Initial support focused on 64-bit arm8 architecture with NEON SIMD instructions.
  • Support for generating PhysX as either static or dynamic libraries.
  • New android platform readme.

Out of Scope

The following points are considered out of scope, they can be added in the future:

  • Support for PhysX Snippets.
  • Support for Omniverse Visual Debugger (OmniPVD) .
  • Support for other architectures: arm7, x86, x86_64.
  • Support for other SIMD instructions set: SSE.

Known Errors/Limitations

  • The name of the bin folder for android will appear as bin\UNKNOWN. To fix this nVidia has to modify the CMakeModules package it's downloaded from packman when building PhysX. The file that needs to be modified is GetCompilerAndPlatform.cmake, adding the following lines to the if condition inside GetPlatformBinName function:
	ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "android")
		SET(RETVAL "android.${ANDROID_ABI}")
  • PhysX Systems that require a CUDA capable GPU are not supported in Android, for example particle system or cloth simulation.

Testing

  • Built PhysX 5.1 successfully on android in debug, checked, profile and release using PX_GENERATE_STATIC_LIBRARIES set to both true and false. The right output binaries were generated in bin/android.arm64-v8a
  • Built cmake install target successfully. It generated the correct output for Android under install/android-29 folder, only including necessary headers for Android.
  • Runtime tested using Open 3D Engine (O3DE) with an early integration branch. The following video shows O3DE running PhysX 5.1 on Android.
    https://user-images.githubusercontent.com/27999040/203624867-6ed19905-d0dc-4dfe-943a-46e584fd9983.mp4

Signed-off-by: moraaar moraaar@amazon.com

Signed-off-by: moraaar <moraaar@amazon.com>
Signed-off-by: moraaar <moraaar@amazon.com>
Signed-off-by: moraaar <moraaar@amazon.com>
Signed-off-by: moraaar <moraaar@amazon.com>
@CLAassistant
Copy link

CLAassistant commented Nov 23, 2022

CLA assistant check
All committers have signed the CLA.

Signed-off-by: moraaar <moraaar@amazon.com>
Signed-off-by: moraaar <moraaar@amazon.com>
@moraaar moraaar changed the base branch from release/104.0 to release/104.1 December 2, 2022 13:16
…e libraries to be correctly named with the suffix _64, the same as all the other platforms.

Signed-off-by: moraaar <moraaar@amazon.com>
Copy link

@phuchau1989 phuchau1989 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -76,15 +76,15 @@ struct MTorqueCurveProperty : public PxFixedSizeLookupTablePropertyInfo<PxVehicl
PX_PHYSX_CORE_API MTorqueCurveProperty();
};

#if PX_CLANG
#if PX_LINUX && PX_CLANG

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this check be !PX_ANDROID, since this code may be applicable for other supported clang platforms(MacOS and Switch)?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the other places in the code base doing ignored "-Wreserved-identifier" are using #if PX_LINUX && PX_CLANG, this was the only one not to, so for consistency I followed the same pattern. And all the platforms built correctly like this.

@moraaar
Copy link
Author

moraaar commented Dec 21, 2022

Android platform support has been submitted to the following PhysX fork where it will be maintained: https://github.com/o3de/PhysX

For more details see the following discussion: #58

@moraaar moraaar closed this Dec 21, 2022
@moraaar moraaar deleted the Android_Support branch December 21, 2022 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants