[Bf-blender-cvs] [96b9f0d021d] devirtualizer: progress
Jacques Lucke
noreply at git.blender.org
Sun Apr 10 16:00:25 CEST 2022
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);
More information about the Bf-blender-cvs
mailing list