[Bf-blender-cvs] [c930690] master: Cycles: Tweaks for 32bit CUDA binaries

Sergey Sharybin noreply at git.blender.org
Mon Feb 15 19:15:54 CET 2016


Commit: c93069083eca9e4829c05b2dc8b7c35b4e70f590
Author: Sergey Sharybin
Date:   Mon Feb 15 19:11:02 2016 +0100
Branches: master
https://developer.blender.org/rBc93069083eca9e4829c05b2dc8b7c35b4e70f590

Cycles: Tweaks for 32bit CUDA binaries

Tweak some inline policies. Not totally crazy yet, and in fact we now
have one less ifdef statement now.

===================================================================

M	intern/cycles/kernel/geom/geom_motion_triangle.h
M	intern/cycles/kernel/geom/geom_triangle_intersect.h
M	intern/cycles/kernel/kernel_accumulate.h
M	intern/cycles/kernel/kernel_light.h

===================================================================

diff --git a/intern/cycles/kernel/geom/geom_motion_triangle.h b/intern/cycles/kernel/geom/geom_motion_triangle.h
index a7b3f5c..7f3562b 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 35f2d90..df02d60 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 29eca86..4c75176 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 1cd701d..7e09ca3 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);




More information about the Bf-blender-cvs mailing list