[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23646] branches/soc-2009-jaguarandi/ source/blender/render/intern: Added #ifdef __SSE__ so it can still build when SSE is disabled at compile time

Andre Susano Pinto andresusanopinto at gmail.com
Tue Oct 6 02:28:07 CEST 2009


Revision: 23646
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23646
Author:   jaguarandi
Date:     2009-10-06 02:28:07 +0200 (Tue, 06 Oct 2009)

Log Message:
-----------
Added #ifdef __SSE__ so it can still build when SSE is disabled at compile time

Modified Paths:
--------------
    branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/bvh.h
    branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_qbvh.cpp
    branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_svbvh.cpp
    branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/svbvh.h
    branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayshade.c

Modified: branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/bvh.h
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/bvh.h	2009-10-05 23:30:00 UTC (rev 23645)
+++ branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/bvh.h	2009-10-06 00:28:07 UTC (rev 23646)
@@ -33,11 +33,15 @@
 #include "rayobject_hint.h"
 
 #include <assert.h>
+
+#ifdef __SSE__
 #include <xmmintrin.h>
+#endif
 
 #ifndef RE_RAYTRACE_BVH_H
 #define RE_RAYTRACE_BVH_H
 
+#ifdef __SSE__
 inline int test_bb_group4(__m128 *bb_group, const Isect *isec)
 {
 	
@@ -53,6 +57,7 @@
 	
 	return _mm_movemask_ps(_mm_cmpge_ps(tmax3, tmin3));
 }
+#endif
 
 
 /* bvh tree generics */
@@ -159,6 +164,7 @@
 }
 
 
+#ifdef __SSE__
 /*
  * Generic SIMD bvh recursion
  * this was created to be able to use any simd (with the cost of some memmoves)
@@ -287,6 +293,7 @@
 	}
 	return hit;
 }
+#endif
 
 /*
  * recursively transverse a BVH looking for a rayhit using system stack

Modified: branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_qbvh.cpp
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_qbvh.cpp	2009-10-05 23:30:00 UTC (rev 23645)
+++ branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_qbvh.cpp	2009-10-06 00:28:07 UTC (rev 23646)
@@ -30,6 +30,8 @@
 #include "svbvh.h"
 #include "reorganize.h"
 
+#ifdef __SSE__
+
 #define DFS_STACK_SIZE	256
 
 struct QBVHTree
@@ -134,3 +136,14 @@
 {
 	return bvh_create_tree<QBVHTree,DFS_STACK_SIZE>(size);
 }
+
+
+#else
+
+RayObject *RE_rayobject_qbvh_create(int size)
+{
+	puts("WARNING: SSE disabled at compile time\n");
+	return NULL;
+}
+
+#endif
\ No newline at end of file

Modified: branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_svbvh.cpp
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_svbvh.cpp	2009-10-05 23:30:00 UTC (rev 23645)
+++ branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/rayobject_svbvh.cpp	2009-10-06 00:28:07 UTC (rev 23646)
@@ -30,6 +30,8 @@
 #include "svbvh.h"
 #include "reorganize.h"
 
+#ifdef __SSE__
+
 #define DFS_STACK_SIZE	256
 
 struct SVBVHTree
@@ -168,3 +170,12 @@
 {
 	return bvh_create_tree<SVBVHTree,DFS_STACK_SIZE>(size);
 }
+#else
+
+RayObject *RE_rayobject_svbvh_create(int size)
+{
+	puts("WARNING: SSE disabled at compile time\n");
+	return NULL;
+}
+
+#endif

Modified: branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/svbvh.h
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/svbvh.h	2009-10-05 23:30:00 UTC (rev 23645)
+++ branches/soc-2009-jaguarandi/source/blender/render/intern/raytrace/svbvh.h	2009-10-06 00:28:07 UTC (rev 23646)
@@ -26,6 +26,8 @@
  *
  * ***** END GPL LICENSE BLOCK *****
  */
+#ifdef __SSE__
+ 
 #ifndef RE_RAYTRACE_SVBVH_H
 #define RE_RAYTRACE_SVBVH_H
 
@@ -243,3 +245,5 @@
 };
 
 #endif
+
+#endif //__SSE__
\ No newline at end of file

Modified: branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayshade.c
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayshade.c	2009-10-05 23:30:00 UTC (rev 23645)
+++ branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayshade.c	2009-10-06 00:28:07 UTC (rev 23646)
@@ -78,7 +78,7 @@
 	return re->test_break(re->tbh);
 }
 
-static RE_rayobject_config_control(RayObject *r, Render *re)
+static void RE_rayobject_config_control(RayObject *r, Render *re)
 {
 	if(RE_rayobject_isRayAPI(r))
 	{
@@ -96,10 +96,21 @@
 	{
 		//TODO
 		//if(detect_simd())
-			type = R_RAYSTRUCTURE_SIMD_SVBVH;
-		//else
-		//	type = R_RAYSTRUCTURE_VBVH;
+#ifdef __SSE__
+		type = R_RAYSTRUCTURE_SIMD_SVBVH;
+#else
+		type = R_RAYSTRUCTURE_VBVH;
+#endif
 	}
+	
+#ifndef __SSE__
+	if(type == R_RAYSTRUCTURE_SIMD_SVBVH || type == R_RAYSTRUCTURE_SIMD_QBVH)
+	{
+		puts("Warning: Using VBVH (SSE was disabled at compile time)");
+		type = R_RAYSTRUCTURE_VBVH;
+	}
+#endif
+	
 		
 	if(type == R_RAYSTRUCTURE_OCTREE) //TODO dynamic ocres
 		res = RE_rayobject_octree_create(re->r.ocres, size);
@@ -111,7 +122,10 @@
 		res = RE_rayobject_svbvh_create(size);
 	else if(type == R_RAYSTRUCTURE_SIMD_QBVH)
 		res = RE_rayobject_qbvh_create(size);
+	else
+		res = RE_rayobject_vbvh_create(size);	//Fallback
 	
+	
 	if(res)
 		RE_rayobject_config_control( res, re );
 	





More information about the Bf-blender-cvs mailing list