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

Adding Toolchains for Android and iOS & More #11

Merged
merged 16 commits into from
Jun 23, 2019

Conversation

maikschulze
Copy link
Contributor

@maikschulze maikschulze commented Jun 20, 2019

Hi,

please carefully consider merging my changes. I've made the following larger changes:

  1. CMAKE toolchains for Android and iOS: for easier cross-compilation, I've added files to /common/cmake/toolchains.
  2. I've fixed the compilation of ray packets.
  3. I've fixed an AVX2 regression.
  4. I went ahead and applied the uint8_t/int8_t to numerical usages for (unsigned) char elsewhere.

I've verified that this state of the code works with the introduced cross-toolchains

  • Windows 10 x64 (Clang 7 & VS2017): I see no regressions on x64, all works as expected for SSE2, SSE4.2, AVX and AVX2 on my i7.
  • OSX 10.15 beta (Clang 10): I see no regressions on x64, all works as expected for SSE2, SSE4.2, AVX and AVX2 on my i7.

I've used the toolchains to deploy

  • Windows 10 -> Android x64 (Clang 8 / NDK19b), works on Google Pixelbook with i5 and in Android emulator
  • Windows 10 -> Android aarch64 / arm64, works on OnePlus3T for SSE2, see (*) for issues.
  • OSX 10.15 beta -> iOS 13 beta (Clang 10), works on iPad Air 2019 for SSE2, see (*) for issues.

(*)
I've verified that the following features work fine with SSE/NEON mapping on ARM devices when using single rays (ray packets remain untested): curve geometry, displacement geometry, dynamic scenes, grid geometry, hair geometry, instanced geometry, interpolation, intersection filters, lazy geometry, motion blur, point geometry, subdivision geometry, triangle geometry, user geometry. These features have been tested by visual inspection of rendered images similar to the Embree tutorial applications.

I've noticed a performance issue that is only present on ARM devices: LOW_QUALITY BVH construction is slower than expected. For example, 1000,000 triangles take:

  • LOW_QUALITY: 0.74 seconds, 1.34 Mprims/s, 266 SAH build quality
  • MEDIUM_QUALITY: 0.57 seconds, 1.75 Mprims/s, 249 SAH build quality
  • HIGH_QUALITY: 1.47 seconds, 0.68 Mprims/s, 249 SAH build quality

@syoyo
Copy link
Contributor

syoyo commented Jun 22, 2019

Super awesome PR! Thank you!

Please let me give some time to review changes.

@syoyo syoyo merged commit a9ab7e6 into lighttransport:master Jun 23, 2019
@syoyo
Copy link
Contributor

syoyo commented Jun 23, 2019

Reviewed and PR is perfect, so merged.

Thank you so much!

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

2 participants