[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42417] branches/bmesh/blender: svn merge ^/trunk/blender -r42372:42416

Campbell Barton ideasman42 at gmail.com
Sun Dec 4 19:39:25 CET 2011


Revision: 42417
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42417
Author:   campbellbarton
Date:     2011-12-04 18:39:19 +0000 (Sun, 04 Dec 2011)
Log Message:
-----------
svn merge ^/trunk/blender -r42372:42416

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42372

Modified Paths:
--------------
    branches/bmesh/blender/build_files/scons/config/win32-vc-config.py
    branches/bmesh/blender/build_files/scons/config/win64-vc-config.py
    branches/bmesh/blender/doc/python_api/sphinx_doc_gen.py
    branches/bmesh/blender/extern/libmv/CMakeLists.txt
    branches/bmesh/blender/extern/libmv/libmv-capi.cpp
    branches/bmesh/blender/extern/libmv/libmv-capi.h
    branches/bmesh/blender/intern/cycles/app/cycles_xml.cpp
    branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp
    branches/bmesh/blender/intern/cycles/kernel/CMakeLists.txt
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/CMakeLists.txt
    branches/bmesh/blender/intern/cycles/kernel/svm/svm.h
    branches/bmesh/blender/intern/cycles/kernel/svm/svm_types.h
    branches/bmesh/blender/intern/cycles/render/nodes.cpp
    branches/bmesh/blender/intern/cycles/render/nodes.h
    branches/bmesh/blender/intern/cycles/util/util_boundbox.h
    branches/bmesh/blender/release/scripts/startup/bl_ui/properties_texture.py
    branches/bmesh/blender/release/scripts/startup/bl_ui/space_clip.py
    branches/bmesh/blender/source/blender/CMakeLists.txt
    branches/bmesh/blender/source/blender/blenkernel/BKE_effect.h
    branches/bmesh/blender/source/blender/blenkernel/BKE_group.h
    branches/bmesh/blender/source/blender/blenkernel/BKE_object.h
    branches/bmesh/blender/source/blender/blenkernel/intern/armature.c
    branches/bmesh/blender/source/blender/blenkernel/intern/effect.c
    branches/bmesh/blender/source/blender/blenkernel/intern/group.c
    branches/bmesh/blender/source/blender/blenkernel/intern/ipo.c
    branches/bmesh/blender/source/blender/blenkernel/intern/lattice.c
    branches/bmesh/blender/source/blender/blenkernel/intern/library.c
    branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/multires.c
    branches/bmesh/blender/source/blender/blenkernel/intern/object.c
    branches/bmesh/blender/source/blender/blenkernel/intern/scene.c
    branches/bmesh/blender/source/blender/blenkernel/intern/text.c
    branches/bmesh/blender/source/blender/blenkernel/intern/tracking.c
    branches/bmesh/blender/source/blender/blenlib/intern/bpath.c
    branches/bmesh/blender/source/blender/blenlib/intern/math_matrix.c
    branches/bmesh/blender/source/blender/blenloader/intern/readfile.c
    branches/bmesh/blender/source/blender/editors/gpencil/drawgpencil.c
    branches/bmesh/blender/source/blender/editors/interface/interface_templates.c
    branches/bmesh/blender/source/blender/editors/mesh/mesh_data.c
    branches/bmesh/blender/source/blender/editors/mesh/meshtools.c
    branches/bmesh/blender/source/blender/editors/metaball/mball_edit.c
    branches/bmesh/blender/source/blender/editors/object/object_bake.c
    branches/bmesh/blender/source/blender/editors/object/object_edit.c
    branches/bmesh/blender/source/blender/editors/object/object_transform.c
    branches/bmesh/blender/source/blender/editors/space_clip/clip_ops.c
    branches/bmesh/blender/source/blender/editors/space_clip/tracking_ops.c
    branches/bmesh/blender/source/blender/editors/space_outliner/outliner_select.c
    branches/bmesh/blender/source/blender/editors/space_sequencer/space_sequencer.c
    branches/bmesh/blender/source/blender/editors/space_time/space_time.c
    branches/bmesh/blender/source/blender/editors/transform/transform.h
    branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c
    branches/bmesh/blender/source/blender/imbuf/intern/allocimbuf.c
    branches/bmesh/blender/source/blender/imbuf/intern/thumbs.c
    branches/bmesh/blender/source/blender/makesdna/DNA_action_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_camera_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_constraint_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_curve_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_key_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_lamp_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_lattice_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_material_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_mesh_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_meta_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_modifier_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_node_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_object_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_particle_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_scene_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_sequence_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_space_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_texture_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_tracking_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_userdef_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_view3d_types.h
    branches/bmesh/blender/source/blender/makesdna/DNA_world_types.h
    branches/bmesh/blender/source/blender/makesdna/intern/makesdna.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_brush.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_lamp.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_material.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_object.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_particle.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_sculpt_paint.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_sensor.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_sequencer.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_tracking.c
    branches/bmesh/blender/source/blender/modifiers/intern/MOD_mirror.c
    branches/bmesh/blender/source/blender/nodes/shader/nodes/node_shader_invert.c
    branches/bmesh/blender/source/blender/render/intern/source/convertblender.c
    branches/bmesh/blender/source/blender/render/intern/source/pipeline.c

Added Paths:
-----------
    branches/bmesh/blender/extern/libmv/libmv/tracking/brute_region_tracker.cc
    branches/bmesh/blender/extern/libmv/libmv/tracking/brute_region_tracker.h
    branches/bmesh/blender/extern/libmv/libmv/tracking/hybrid_region_tracker.cc
    branches/bmesh/blender/extern/libmv/libmv/tracking/hybrid_region_tracker.h
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_invert.osl
    branches/bmesh/blender/intern/cycles/kernel/svm/svm_invert.h
    branches/bmesh/blender/source/blender/makesdna/DNA_defs.h

Property Changed:
----------------
    branches/bmesh/blender/
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_add_closure.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_attribute.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_background.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_blend_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_blend_weight.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_bump.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_clouds_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_convert_from_color.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_convert_from_float.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_convert_from_normal.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_convert_from_point.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_convert_from_vector.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_diffuse_bsdf.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_distorted_noise_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_emission.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_environment_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_fresnel.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_geometry.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_glass_bsdf.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_glossy_bsdf.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_holdout.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_hsv.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_image_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_light_path.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_magic_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_mapping.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_marble_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_math.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_mix.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_mix_closure.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_musgrave_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_noise_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_output_displacement.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_output_surface.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_output_volume.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_sky_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_stucci_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_texture_coordinate.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_translucent_bsdf.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_transparent_bsdf.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_value.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_vector_math.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_velvet_bsdf.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_voronoi_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_ward_bsdf.osl
    branches/bmesh/blender/intern/cycles/kernel/osl/nodes/node_wood_texture.osl
    branches/bmesh/blender/intern/cycles/kernel/svm/svm_hsv.h
    branches/bmesh/blender/release/
    branches/bmesh/blender/source/blender/editors/space_outliner/


Property changes on: branches/bmesh/blender
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/soc-2011-cucumber:37517
/trunk/blender:39992-42372
   + /branches/soc-2011-cucumber:37517
/branches/soc-2011-tomato:42376,42378-42379
/trunk/blender:39992-42416

Modified: branches/bmesh/blender/build_files/scons/config/win32-vc-config.py
===================================================================
--- branches/bmesh/blender/build_files/scons/config/win32-vc-config.py	2011-12-04 17:36:13 UTC (rev 42416)
+++ branches/bmesh/blender/build_files/scons/config/win32-vc-config.py	2011-12-04 18:39:19 UTC (rev 42417)
@@ -165,6 +165,11 @@
 BF_BOOST_LIB = 'libboost_date_time-vc90-mt-s-1_47 libboost_filesystem-vc90-mt-s-1_47 libboost_regex-vc90-mt-s-1_47 libboost_system-vc90-mt-s-1_47 libboost_thread-vc90-mt-s-1_47'
 BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
 
+#CUDA
+WITH_BF_CYCLES_CUDA_BINARIES = False
+#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler
+BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_13', 'sm_20', 'sm_21']
+
 #Ray trace optimization
 WITH_BF_RAYOPTIMIZATION = True
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE']

Modified: branches/bmesh/blender/build_files/scons/config/win64-vc-config.py
===================================================================
--- branches/bmesh/blender/build_files/scons/config/win64-vc-config.py	2011-12-04 17:36:13 UTC (rev 42416)
+++ branches/bmesh/blender/build_files/scons/config/win64-vc-config.py	2011-12-04 18:39:19 UTC (rev 42417)
@@ -154,6 +154,7 @@
 
 WITH_BF_OPENMP = True
 
+#Cycles
 WITH_BF_CYCLES = True
 
 WITH_BF_OIIO = True
@@ -169,6 +170,11 @@
 BF_BOOST_LIB = 'libboost_date_time-vc90-mt-s-1_47 libboost_filesystem-vc90-mt-s-1_47 libboost_regex-vc90-mt-s-1_47 libboost_system-vc90-mt-s-1_47 libboost_thread-vc90-mt-s-1_47'
 BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
 
+#CUDA
+WITH_BF_CYCLES_CUDA_BINARIES = False
+#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler
+BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_13', 'sm_20', 'sm_21']
+
 #Ray trace optimization
 WITH_BF_RAYOPTIMIZATION = True
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE','/arch:SSE2']

Modified: branches/bmesh/blender/doc/python_api/sphinx_doc_gen.py
===================================================================
--- branches/bmesh/blender/doc/python_api/sphinx_doc_gen.py	2011-12-04 17:36:13 UTC (rev 42416)
+++ branches/bmesh/blender/doc/python_api/sphinx_doc_gen.py	2011-12-04 18:39:19 UTC (rev 42417)
@@ -87,6 +87,7 @@
         "gpu",
         "mathutils",
         "mathutils.geometry",
+        "mathutils.noise",
     )
 
     FILTER_BPY_TYPES = ("bpy_struct", "Operator", "ID")  # allow
@@ -1190,6 +1191,8 @@
         fw("   mathutils.rst\n\n")
     if "mathutils.geometry" not in EXCLUDE_MODULES:
         fw("   mathutils.geometry.rst\n\n")
+    if "mathutils.noise" not in EXCLUDE_MODULES:
+        fw("   mathutils.noise.rst\n\n")
     if "bgl" not in EXCLUDE_MODULES:
         fw("   bgl.rst\n\n")
     if "blf" not in EXCLUDE_MODULES:
@@ -1329,6 +1332,10 @@
         import mathutils.geometry as module
         pymodule2sphinx(BASEPATH, "mathutils.geometry", module, "Geometry Utilities")
 
+    if "mathutils.noise" not in EXCLUDE_MODULES:
+        import mathutils.noise as module
+        pymodule2sphinx(BASEPATH, "mathutils.noise", module, "Noise Utilities")
+
     if "blf" not in EXCLUDE_MODULES:
         import blf as module
         pymodule2sphinx(BASEPATH, "blf", module, "Font Drawing")

Modified: branches/bmesh/blender/extern/libmv/CMakeLists.txt
===================================================================
--- branches/bmesh/blender/extern/libmv/CMakeLists.txt	2011-12-04 17:36:13 UTC (rev 42416)
+++ branches/bmesh/blender/extern/libmv/CMakeLists.txt	2011-12-04 18:39:19 UTC (rev 42417)
@@ -53,6 +53,8 @@
 	libmv/image/array_nd.cc
 	libmv/tracking/pyramid_region_tracker.cc
 	libmv/tracking/sad.cc
+	libmv/tracking/brute_region_tracker.cc
+	libmv/tracking/hybrid_region_tracker.cc
 	libmv/tracking/esm_region_tracker.cc
 	libmv/tracking/trklt_region_tracker.cc
 	libmv/tracking/klt_region_tracker.cc
@@ -100,6 +102,8 @@
 	libmv/image/sample.h
 	libmv/image/image.h
 	libmv/tracking/region_tracker.h
+	libmv/tracking/brute_region_tracker.h
+	libmv/tracking/hybrid_region_tracker.h
 	libmv/tracking/retrack_region_tracker.h
 	libmv/tracking/sad.h
 	libmv/tracking/pyramid_region_tracker.h

Copied: branches/bmesh/blender/extern/libmv/libmv/tracking/brute_region_tracker.cc (from rev 42416, trunk/blender/extern/libmv/libmv/tracking/brute_region_tracker.cc)
===================================================================
--- branches/bmesh/blender/extern/libmv/libmv/tracking/brute_region_tracker.cc	                        (rev 0)
+++ branches/bmesh/blender/extern/libmv/libmv/tracking/brute_region_tracker.cc	2011-12-04 18:39:19 UTC (rev 42417)
@@ -0,0 +1,331 @@
+// Copyright (c) 2011 libmv authors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+
+#include "libmv/tracking/brute_region_tracker.h"
+
+#ifdef __SSE2__
+#include <emmintrin.h>
+#endif
+
+#ifndef __APPLE__
+// Needed for memalign on Linux and _aligned_alloc on Windows.
+#ifdef FREE_WINDOWS
+/* make sure _aligned_malloc is included */
+#ifdef __MSVCRT_VERSION__
+#undef __MSVCRT_VERSION__
+#endif
+
+#define __MSVCRT_VERSION__ 0x0700
+#endif
+
+#include <malloc.h>
+#else
+// Apple's malloc is 16-byte aligned, and does not have malloc.h, so include
+// stdilb instead.
+#include <cstdlib>
+#endif
+
+#include "libmv/image/image.h"
+#include "libmv/image/convolve.h"
+#include "libmv/image/sample.h"
+#include "libmv/logging/logging.h"
+
+namespace libmv {
+namespace {
+
+// TODO(keir): It's stupid that this is needed here. Push this somewhere else.
+void *aligned_malloc(int size, int alignment) {
+#ifdef _WIN32
+  return _aligned_malloc(size, alignment);
+#elif __APPLE__
+  // On Mac OS X, both the heap and the stack are guaranteed 16-byte aligned so
+  // they work natively with SSE types with no further work.
+  CHECK_EQ(alignment, 16);
+  return malloc(size);
+#else // This is for Linux.
+  return memalign(alignment, size);
+#endif
+}
+
+void aligned_free(void *ptr) {
+#ifdef _WIN32
+  _aligned_free(ptr);
+#else
+  free(ptr);
+#endif
+}
+
+bool RegionIsInBounds(const FloatImage &image1,
+                      double x, double y,
+                      int half_window_size) {
+  // Check the minimum coordinates.
+  int min_x = floor(x) - half_window_size - 1;
+  int min_y = floor(y) - half_window_size - 1;
+  if (min_x < 0.0 ||
+      min_y < 0.0) {
+    return false;
+  }
+
+  // Check the maximum coordinates.
+  int max_x = ceil(x) + half_window_size + 1;
+  int max_y = ceil(y) + half_window_size + 1;
+  if (max_x > image1.cols() ||
+      max_y > image1.rows()) {
+    return false;
+  }
+
+  // Ok, we're good.
+  return true;
+}
+
+#ifdef __SSE2__
+
+// Compute the sub of absolute differences between the arrays "a" and "b". 
+// The array "a" is assumed to be 16-byte aligned, while "b" is not. The
+// result is returned as the first and third elements of __m128i if
+// interpreted as a 4-element 32-bit integer array. The SAD is the sum of the
+// elements.
+//
+// The function requires size % 16 valid extra elements at the end of both "a"
+// and "b", since the SSE load instructionst will pull in memory past the end
+// of the arrays if their size is not a multiple of 16.
+inline static __m128i SumOfAbsoluteDifferencesContiguousSSE(
+    const unsigned char *a,  // aligned
+    const unsigned char *b,  // not aligned
+    unsigned int size,
+    __m128i sad) {
+  // Do the bulk of the work as 16-way integer operations.
+  for(unsigned int j = 0; j < size / 16; j++) {
+    sad = _mm_add_epi32(sad, _mm_sad_epu8( _mm_load_si128 ((__m128i*)(a + 16 * j)),
+                                           _mm_loadu_si128((__m128i*)(b + 16 * j))));
+  }
+  // Handle the trailing end.
+  // TODO(keir): Benchmark to verify that the below SSE is a win compared to a
+  // hand-rolled loop. It's not clear that the hand rolled loop would be slower
+  // than the potential cache miss when loading the immediate table below.
+  //
+  // An alternative to this version is to take a packet of all 1's then do a
+  // 128-bit shift. The issue is that the shift instruction needs an immediate
+  // amount rather than a variable amount, so the branch instruction here must
+  // remain. See _mm_srli_si128 and  _mm_slli_si128.
+  unsigned int remainder = size % 16u;
+  if (remainder) {
+    unsigned int j = size / 16;
+    __m128i a_trail = _mm_load_si128 ((__m128i*)(a + 16 * j));
+    __m128i b_trail = _mm_loadu_si128((__m128i*)(b + 16 * j));
+    __m128i mask;
+    switch (remainder) {
+#define X 0xff
+      case  1: mask = _mm_setr_epi8(X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break;
+      case  2: mask = _mm_setr_epi8(X, X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break;
+      case  3: mask = _mm_setr_epi8(X, X, X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break;
+      case  4: mask = _mm_setr_epi8(X, X, X, X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break;
+      case  5: mask = _mm_setr_epi8(X, X, X, X, X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break;
+      case  6: mask = _mm_setr_epi8(X, X, X, X, X, X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); break;
+      case  7: mask = _mm_setr_epi8(X, X, X, X, X, X, X, 0, 0, 0, 0, 0, 0, 0, 0, 0); break;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list