[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49425] trunk/blender/source/blender/ blenkernel/intern/mask_rasterize.c: multi-threaded sequencer buffer calculation for masks.

Campbell Barton ideasman42 at gmail.com
Tue Jul 31 18:37:47 CEST 2012


Revision: 49425
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49425
Author:   campbellbarton
Date:     2012-07-31 16:37:47 +0000 (Tue, 31 Jul 2012)
Log Message:
-----------
multi-threaded sequencer buffer calculation for masks.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c

Modified: trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c	2012-07-31 16:25:40 UTC (rev 49424)
+++ trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c	2012-07-31 16:37:47 UTC (rev 49425)
@@ -1291,27 +1291,28 @@
  * \brief Rasterize a buffer from a single mask
  *
  * We could get some speedup by inlining #BKE_maskrasterize_handle_sample
- * and calcilating each layer then blending buffers, but this function is only
+ * and calculating each layer then blending buffers, but this function is only
  * used by the sequencer - so better have the caller thread.
  *
- * If we wanted to this function could be threaded with OpenMP easily.
+ * Since #BKE_maskrasterize_handle_sample is used threaded elsewhere,
+ * we can simply use openmp here for some speedup.
  */
 void BKE_maskrasterize_buffer(MaskRasterHandle *mr_handle,
                               const unsigned int width, const unsigned int height,
                               float *buffer)
 {
-	unsigned int x;
 	unsigned int y;
-	float *fp = buffer;
 
-	float xy[2];
-
+#pragma omp parallel for private(y)
 	for (y = 0; y < height; y++) {
+		unsigned int i = y * width;
+		unsigned int x;
+		float xy[2];
 		xy[1] = (float)y / (float)height;
-		for (x = 0; x < width; x++) {
+		for (x = 0; x < width; x++, i++) {
 			xy[0] = (float)x / (float)width;
 
-			*fp++ = BKE_maskrasterize_handle_sample(mr_handle, xy);
+			buffer[i] = BKE_maskrasterize_handle_sample(mr_handle, xy);
 		}
 	}
 }




More information about the Bf-blender-cvs mailing list