jeanphi wrote:That will be a new external dependency for Lux, but it looks to be worth a try. Can you continue to update the tbb branch and we'll merge when it's ready. That way we'll be sure to not miss a special case that tbb wouldn't be able to handle (you never know).
I did some work on the tbb branch to match the state of the default branch, mainly:
# the samplertbbrenderer
- now integrate all changes done in the samplerrendere since previous merge
- has thread number limitation and pause (Yes !)
- has a more cleaner code than the samplerrendere now (In my opinion) and small hacks may disapears if TBB become the main solution
- I synchronized with the work of jens and Vignetting is now TBB too.
Ok, for now:
a) please run the TBB branch, I'm interesting about:
- compilation issues on different plateform (other than linux)
- a better cmake integration, I don't understand anything about cmake, so my work is a hack
- performance of the tbbsamplerrender. For me it is something as 1% slower than the normal renderer, and stuff can be improved I think.
b) Still one open issue, the number of thread looks like a hack and must be, if we stick with TBB, become something of the whole lux and not of the renderer
Some stuff are still hackish inside the TBB implementation, but I'm pretty satisfied of its state now. Now we'll have to discuss.
I just saw that Jens has just commited a GCD patch. Could we please try to have a uniform solution across all platforms and not a triple size source code with defines for TBB, GCD, nothing, what else, ...
Actually I'd much prefer to have no improved threading API that special cases scattered everywhere as it will soon become a maintenance nightmare. We're not that many developers and maintainability is a key factor for the long term, much more than speed.
I think that GCD work may go on a separate branch if needed. In the other hand I'm not fan of GCD for the reasons I previously exposed.