Commit: 96b9f0d021dd0554b37927aadb184467af3ab0e2
Author: Jacques Lucke
Date:   Sun Apr 10 14:42:41 2022 +0200
Branches: devirtualizer
https://developer.blender.org/rB96b9f0d021dd0554b37927aadb184467af3ab0e2

progress

===================================================================

M       source/blender/blenlib/BLI_virtual_array_devirtualize.hh
M       source/blender/blenlib/tests/BLI_virtual_array_test.cc

===================================================================

diff --git a/source/blender/blenlib/BLI_virtual_array_devirtualize.hh 
b/source/blender/blenlib/BLI_virtual_array_devirtualize.hh
index 8c1213e3c0b..9dc25e3aa7e 100644
--- a/source/blender/blenlib/BLI_virtual_array_devirtualize.hh
+++ b/source/blender/blenlib/BLI_virtual_array_devirtualize.hh
@@ -102,9 +102,11 @@ template<typename Fn, typename... Args> class 
ArrayDevirtualizer {
   void try_execute_devirtualized_impl_call(std::tuple<Mode...> /* modes */,
                                            std::index_sequence<I...> /* 
indices */)
   {
-    fn_(mask_,
-        mask_,
-        this->get_execute_param<I, std::tuple_element_t<I, 
std::tuple<Mode...>>>()...);
+    mask_.to_best_mask_type([&](auto mask) {
+      fn_(mask,
+          mask,
+          this->get_execute_param<I, std::tuple_element_t<I, 
std::tuple<Mode...>>>()...);
+    });
     executed_ = true;
   }
 
diff --git a/source/blender/blenlib/tests/BLI_virtual_array_test.cc 
b/source/blender/blenlib/tests/BLI_virtual_array_test.cc
index 91df8b06540..95222e72bb0 100644
--- a/source/blender/blenlib/tests/BLI_virtual_array_test.cc
+++ b/source/blender/blenlib/tests/BLI_virtual_array_test.cc
@@ -246,8 +246,8 @@ TEST(virtual_array, Devirtualize)
   IndexMask mask(IndexRange(10));
   VArray<int> in1 = VArray<int>::ForSingle(3, 10);
   // VArray<int> in2 = VArray<int>::ForSingle(5, 10);
-  VArray<int> in2 = VArray<int>::ForContainer(Array<int>(10, 5));
-  // VArray<int> in2 = VArray<int>::ForFunc(10, [](int64_t i) { return (int)i; 
});
+  // VArray<int> in2 = VArray<int>::ForContainer(Array<int>(10, 5));
+  VArray<int> in2 = VArray<int>::ForFunc(10, [](int64_t i) { return (int)i; });
   std::array<int, 10> out1_array;
   MutableSpan<int> out1 = out1_array;
   out1.fill(-1);
@@ -255,7 +255,9 @@ TEST(virtual_array, Devirtualize)
   ArrayDevirtualizer<decltype(fn), SingleInputTag<int>, SingleInputTag<int>, 
SingleOutputTag<int>>
       devirtualizer{fn, &mask, &in1, &in2, &out1};
 
-  devirtualizer.try_execute_devirtualized();
+  if (!devirtualizer.try_execute_devirtualized()) {
+    devirtualizer.execute_fallback();
+  }
 
   EXPECT_EQ(out1[0], 8);
   EXPECT_EQ(out1[1], 8);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to