[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