diff options
-rw-r--r-- | intern/cycles/kernel/geom/geom_motion_triangle.h | 7 | ||||
-rw-r--r-- | intern/cycles/kernel/geom/geom_triangle_intersect.h | 9 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_accumulate.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_light.h | 7 |
4 files changed, 12 insertions, 13 deletions
diff --git a/intern/cycles/kernel/geom/geom_motion_triangle.h b/intern/cycles/kernel/geom/geom_motion_triangle.h index a7b3f5cad28..7f3562b4687 100644 --- a/intern/cycles/kernel/geom/geom_motion_triangle.h +++ b/intern/cycles/kernel/geom/geom_motion_triangle.h @@ -178,7 +178,12 @@ ccl_device_inline float3 motion_triangle_refine(KernelGlobals *kg, ShaderData *s /* Same as above, except that isect->t is assumed to be in object space for instancing */ #ifdef __SUBSURFACE__ -ccl_device_inline float3 motion_triangle_refine_subsurface(KernelGlobals *kg, ShaderData *sd, const Intersection *isect, const Ray *ray, float3 verts[3]) +# if defined(__KERNEL_CUDA__) && (defined(i386) || defined(_M_IX86)) +ccl_device_noinline +# else +ccl_device_inline +# endif +float3 motion_triangle_refine_subsurface(KernelGlobals *kg, ShaderData *sd, const Intersection *isect, const Ray *ray, float3 verts[3]) { float3 P = ray->P; float3 D = ray->D; diff --git a/intern/cycles/kernel/geom/geom_triangle_intersect.h b/intern/cycles/kernel/geom/geom_triangle_intersect.h index 35f2d905da0..df02d60f382 100644 --- a/intern/cycles/kernel/geom/geom_triangle_intersect.h +++ b/intern/cycles/kernel/geom/geom_triangle_intersect.h @@ -49,13 +49,12 @@ typedef struct IsectPrecalc { float Sx, Sy, Sz; } IsectPrecalc; -#if defined(__KERNEL_CUDA__) -ccl_device_inline -#elif defined(__KERNEL_OPENCL_APPLE__) +#if (defined(__KERNEL_OPENCL_APPLE__)) || \ + (defined(__KERNEL_CUDA__) && (defined(i386) || defined(_M_IX86))) ccl_device_noinline -#else /* defined(__KERNEL_OPENCL_APPLE__) */ +#else ccl_device_inline -#endif /* defined(__KERNEL_OPENCL_APPLE__) */ +#endif void triangle_intersect_precalc(float3 dir, IsectPrecalc *isect_precalc) { diff --git a/intern/cycles/kernel/kernel_accumulate.h b/intern/cycles/kernel/kernel_accumulate.h index 29eca865384..4c7517658d0 100644 --- a/intern/cycles/kernel/kernel_accumulate.h +++ b/intern/cycles/kernel/kernel_accumulate.h @@ -55,7 +55,7 @@ ccl_device_inline void bsdf_eval_init(BsdfEval *eval, ClosureType type, float3 v } /* TODO(sergey): This is just a workaround for annoying 6.5 compiler bug. */ -#if !defined(__KERNEL_CUDA__) || __CUDA_ARCH__ < 500 +#if !defined(__KERNEL_CUDA__) || __CUDA_ARCH__ < 520 ccl_device_inline #else ccl_device_noinline diff --git a/intern/cycles/kernel/kernel_light.h b/intern/cycles/kernel/kernel_light.h index 1cd701dbf4c..7e09ca3f88e 100644 --- a/intern/cycles/kernel/kernel_light.h +++ b/intern/cycles/kernel/kernel_light.h @@ -620,12 +620,7 @@ ccl_device void lamp_light_sample(KernelGlobals *kg, int lamp, } } -#if defined(__KERNEL_CUDA__) && (__CUDA_ARCH__ >= 500) && (defined(i386) || defined(_M_IX86)) -ccl_device_noinline -#else -ccl_device -#endif -bool lamp_light_eval(KernelGlobals *kg, int lamp, float3 P, float3 D, float t, LightSample *ls) +ccl_device bool lamp_light_eval(KernelGlobals *kg, int lamp, float3 P, float3 D, float t, LightSample *ls) { float4 data0 = kernel_tex_fetch(__light_data, lamp*LIGHT_SIZE + 0); float4 data1 = kernel_tex_fetch(__light_data, lamp*LIGHT_SIZE + 1); |