Cycles: Fix OpenCL speed regression introduced with the improved bump mapping
authorLukas Stockner <lukas.stockner@freenet.de>
Wed, 7 Sep 2016 23:33:41 +0000 (01:33 +0200)
committerSergey Sharybin <sergey.vfx@gmail.com>
Wed, 14 Sep 2016 08:26:19 +0000 (10:26 +0200)
commite6071056a402e027f9a23c1fe7bbd3dae1babfed
tree472c3618e658ab655726833a10367cb95e427f1c
parent4929de9df7697fddffdad6ca47914b45baf16717
Cycles: Fix OpenCL speed regression introduced with the improved bump mapping

The two SVM nodes added with e7ea1ae78c caused a slowdown on AMD cards when rendering with OpenCL, whether displacement was used or not.
In the Barcelona Pavillon scene on a RX480, this would cause a 12% slowdown.

Therefore, this commit adds a additional flag for feature-adaptive compilation so that the new SVM nodes are only enabled when they are needed (Node tree connected to the Displacement output and Displacement type set to Both).

Also, the nodes were also added to shaders when the Displacement Type was set to Bump (the default), which was unneccessary and is fixed now.

Thanks to linda2 on IRC for reporting and testing and to maiself for help with the displacement shader code.

This fix might be relevant for 2.78, but it should be tested further before including it.
intern/cycles/kernel/svm/svm.h
intern/cycles/kernel/svm/svm_types.h
intern/cycles/render/shader.cpp
intern/cycles/render/svm.cpp