jherico / OculusSDK

Oculus SDK for Virtual Reality
Other
201 stars 114 forks source link

Enable experimental Link-Time Optimization support #44

Open feilen opened 9 years ago

feilen commented 9 years ago

This lets the SDK access GCC's Link Time optimization support. It uses the same patterns that Dolphin uses to enable the same support.

Link Time Optimization allows GCC to look over multiple source files to create optimizations, where in most cases it's only able to optimize on a per-function basis, without exactly knowing what impact this will have on the overall code.

When compiled with this, my libovr.so drops from 950+KB to 861KB and has a noticeable reduction in judder in certain apps. Some binaries are able to get up to 34% speed increases with it enabled.

The only other build option I've considered adding would be -ftree-vectorize. That would allow GCC to take non-interdependent loops and generate SSE SIMD equivalents. (Considering the OculusSDK generally operates on a per-eye basis independently in loops, this would most likely give a considerable boost)

It's left as an option so that it can be left up to the discretion of the developer who imports it.