[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57375] trunk/blender/source/blender/bmesh /intern/bmesh_interp.c: Use OpenMP threads in bm_loop_interp_mdisps

Sergey Sharybin sergey.vfx at gmail.com
Tue Jun 11 11:14:40 CEST 2013


Revision: 57375
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57375
Author:   nazgul
Date:     2013-06-11 09:14:39 +0000 (Tue, 11 Jun 2013)
Log Message:
-----------
Use OpenMP threads in bm_loop_interp_mdisps

Gives approx 2x speedup on my laptop on such operations
as mesh subdivision in edit mode. Desktops with fancier
CPUs could benefit even more.

Thanks Campbell for review!

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_interp.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_interp.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_interp.c	2013-06-11 08:07:05 UTC (rev 57374)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_interp.c	2013-06-11 09:14:39 UTC (rev 57375)
@@ -432,10 +432,8 @@
 static void bm_loop_interp_mdisps(BMesh *bm, BMLoop *target, BMFace *source)
 {
 	MDisps *mdisps;
-	BMLoop *l_iter;
-	BMLoop *l_first;
-	float x, y, d, v1[3], v2[3], v3[3], v4[3] = {0.0f, 0.0f, 0.0f}, e1[3], e2[3];
-	int ix, iy, res;
+	float d, v1[3], v2[3], v3[3], v4[3] = {0.0f, 0.0f, 0.0f}, e1[3], e2[3];
+	int ix, res;
 	float axis_x[3], axis_y[3];
 	
 	/* ignore 2-edged faces */
@@ -467,10 +465,15 @@
 
 	res = (int)sqrt(mdisps->totdisp);
 	d = 1.0f / (float)(res - 1);
-	for (x = 0.0f, ix = 0; ix < res; x += d, ix++) {
+	#pragma omp parallel for if(res > 3)
+	for (ix = 0; ix < res; ix++) {
+		float x = d * ix, y;
+		int iy;
 		for (y = 0.0f, iy = 0; iy < res; y += d, iy++) {
+			BMLoop *l_iter;
+			BMLoop *l_first;
 			float co1[3], co2[3], co[3];
-			
+
 			copy_v3_v3(co1, e1);
 			
 			mul_v3_fl(co1, y);




More information about the Bf-blender-cvs mailing list