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

Mac platform support (intel and arm) #51

Closed
wants to merge 9 commits into from

Commits on Nov 30, 2022

  1. Mac platform support for PhysX 5.1

    Signed-off-by: moraaar <moraaar@amazon.com>
    moraaar committed Nov 30, 2022
    Configuration menu
    Copy the full SHA
    f6a9647 View commit details
    Browse the repository at this point in the history
  2. Set the correct cmake parameters to build Mac arm64 and ignore some C…

    …++ warnings
    
    Signed-off-by: moraaar <moraaar@amazon.com>
    moraaar committed Nov 30, 2022
    Configuration menu
    Copy the full SHA
    e322753 View commit details
    Browse the repository at this point in the history
  3. Add Mac platform readme.

    Signed-off-by: moraaar <moraaar@amazon.com>
    moraaar committed Nov 30, 2022
    Configuration menu
    Copy the full SHA
    6ef87c0 View commit details
    Browse the repository at this point in the history
  4. Compilation fixes.

    Signed-off-by: moraaar <moraaar@amazon.com>
    moraaar committed Nov 30, 2022
    Configuration menu
    Copy the full SHA
    2593409 View commit details
    Browse the repository at this point in the history

Commits on Dec 2, 2022

  1. Merge branch 'release/104.1' into Mac_Support

    Signed-off-by: moraaar <moraaar@amazon.com>
    moraaar committed Dec 2, 2022
    Configuration menu
    Copy the full SHA
    95ea2ca View commit details
    Browse the repository at this point in the history

Commits on Dec 3, 2022

  1. Fixed bad merge

    Signed-off-by: moraaar <moraaar@amazon.com>
    moraaar committed Dec 3, 2022
    Configuration menu
    Copy the full SHA
    bbf7c0d View commit details
    Browse the repository at this point in the history

Commits on Dec 21, 2022

  1. Android platform support (NVIDIA-Omniverse#1)

    ## 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** (NVIDIA-Omniverse#59). 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](https://github.com/aws-lumberyard-dev/o3de/tree/PhysX5Support). 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>
    moraaar committed Dec 21, 2022
    Configuration menu
    Copy the full SHA
    7d27bbe View commit details
    Browse the repository at this point in the history
  2. iOS platform support (NVIDIA-Omniverse#2)

    ## What's new?
    - Added iOS platform support to PhysX 5.1.
    - New build preset `ios64` added. Initial support focused on 64-bit arm8 architecture with NEON SIMD instructions.
    - Support for generating PhysX as either static libraries or iOS frameworks.
    - New iOS 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: 32-bit arm7
            
    ## Known Errors/Limitations
    - The name of the bin folder for iOS will appear as `bin\UNKNOWN`. **To fix this nVidia has to modify the CMakeModules package it's downloaded from packman when building PhysX** (NVIDIA-Omniverse#59). 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 "ios")
    		SET(RETVAL "ios.arm_${LIBPATH_SUFFIX}")
    ````
    - Python package used by packman is based on x86_64 architecture and generates the error `dyld[number]: missing symbol called` when run on an arm-based Mac. **To fix this nVidia has to add an ARM python package for mac into the packman scripts** (NVIDIA-Omniverse#60). As a temporary solution, use your system's python adding the environment variable `PM_PYTHON_EXT` before building (for example by adding `export PM_PYTHON_EXT="python3"` into your `.bash_profile` file).
    - PhysX Systems that require a CUDA capable GPU are not supported in iOS, for example particle system or cloth simulation.
                
    ## Testing
    - Built PhysX 5.1 successfully on iOS 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/ios.arm_64`
    - Built cmake `install` target successfully. It generated the correct output for iOS under `install/ios64` folder, only including necessary headers for iOS.
    - Runtime tested using `Open 3D Engine (O3DE)` with an early integration [branch](https://github.com/aws-lumberyard-dev/o3de/tree/PhysX5Support). The following video shows O3DE running PhysX 5.1 on iOS.
    https://user-images.githubusercontent.com/27999040/204574141-2e00c7bf-86b5-4e14-981f-6b80665a3ef7.mp4
    
    Signed-off-by: moraaar <moraaar@amazon.com>
    moraaar committed Dec 21, 2022
    Configuration menu
    Copy the full SHA
    d62c4d2 View commit details
    Browse the repository at this point in the history
  3. Merge branch 'o3de/release/104.1' into Mac_Support

    Signed-off-by: moraaar <moraaar@amazon.com>
    moraaar committed Dec 21, 2022
    Configuration menu
    Copy the full SHA
    35b36c6 View commit details
    Browse the repository at this point in the history