Cycles: Workaround cubic volume filtering crashing on Linux

The issue was caused by recent change in inline policy.

There is some sort of memory corruption happening here, ASAN suggests
it's stack overflow issue. Not quite sure why it is happening tho and
was not able to solve anything here yet in the past hours.

Committing fix which works with a big TODO note.

The issue is visible on AVX2 machine when rendering cycles_reports_test.
This commit is contained in:
Sergey Sharybin 2017-04-10 14:42:17 +02:00
parent 90d85c7975
commit 3b4cc5dfed

@ -404,7 +404,18 @@ template<typename T> struct texture_image {
return r;
}
ccl_never_inline float4 interp_3d_ex_tricubic(float x, float y, float z)
/* TODO(sergey): For some unspeakable reason both GCC-6 and Clang-3.9 are
* causing stack overflow issue in this function unless it is inlined.
*
* Only happens for AVX2 kernel and global __KERNEL_SSE__ vectorization
* enabled.
*/
#ifdef __GNUC__
ccl_always_inline
#else
ccl_never_inline
#endif
float4 interp_3d_ex_tricubic(float x, float y, float z)
{
int ix, iy, iz;
int nix, niy, niz;