diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-12-25 12:15:37 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-12-25 12:15:37 +0300 |
commit | fe06ec82a91a508b953e14277a97323a6eea901e (patch) | |
tree | e789d8c66f061c1db4b4c78db1fb9883fb1ee8fc /intern | |
parent | 010f3ee43871974abb99cd6f9e0204b29003fc4e (diff) |
Cycles: Workaround CUDA 6.5.16 error after watertight commit
This issue doesn't happen with 6.5.12 and there's slight piece of hope it'll be
fixed in next toolkit releases..
For now we're forcing CUDA to not inline ray precalculation. This could lead to
some speed regression, but wouldn't expect it to be huge -- this code does not
run that often comparing to actual triangle intersection.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/kernel/geom/geom_triangle_intersect.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/intern/cycles/kernel/geom/geom_triangle_intersect.h b/intern/cycles/kernel/geom/geom_triangle_intersect.h index 049e8f3680e..5090d553c41 100644 --- a/intern/cycles/kernel/geom/geom_triangle_intersect.h +++ b/intern/cycles/kernel/geom/geom_triangle_intersect.h @@ -49,8 +49,14 @@ typedef struct IsectPrecalc { float Sx, Sy, Sz; } IsectPrecalc; -ccl_device_inline void triangle_intersect_precalc(float3 dir, - IsectPrecalc *isect_precalc) +/* Workaround for CUDA toolkit 6.5.16. */ +#ifdef __KERNEL_CPU__ +ccl_device_inline +#else +ccl_device_noinline +#endif +void triangle_intersect_precalc(float3 dir, + IsectPrecalc *isect_precalc) { /* Calculate dimension where the ray direction is maximal. */ int kz = util_max_axis(make_float3(fabsf(dir.x), |