LLVM merge imminent

Larry Gritz <l...@...>

Update for anybody who doesn't watch the commit list:

To combat pesky performance problems of interpreting OSL, we've spent the past few weeks adding an LLVM back end to OSL. LLVM is an open source compiler framework that we use to JIT (runtime compile) our shader bytecode all the way to machine code that we can execute much faster than running our interpreter. Our LLVM work has all been done in an experimental branch rather than the trunk.

Yesterday we finally hit an important milestone -- our first production assets rendered using the LLVM path. Pics look good, performance is good, memory use is not outlandish, and the code seems stable. In short, while not yet seen the huge performance improvement we were hoping for -- we're happy to be at break-even as we just barely are feature complete and have done no optimization tuning yet -- we no longer regard this as a crazy experiment, but rather as a fully supported path (if not the only main path at some point in the future, if performance really improves dramatically). So today I will merge all this work back into the trunk. Heads up!

If all goes well, the cmake scripts will gracefully handle lack of LLVM on your system, and simply not compile in support (you will fall back to the old interpreter).

Larry Gritz