From 6b5e1cfacab4c4605ec2d7bfef360389afe849be Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Fri, 26 Nov 2021 10:08:19 +0100 Subject: Geometry Nodes: better devirtualization for sliced virtual arrays Under some circumstances that can lead to more than a 2x performance increase, because math nodes can better optimize for the case when the slice is a single value or span. --- .../blender/functions/intern/generic_virtual_array.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'source/blender') diff --git a/source/blender/functions/intern/generic_virtual_array.cc b/source/blender/functions/intern/generic_virtual_array.cc index 160234c6e61..625aa2cd50f 100644 --- a/source/blender/functions/intern/generic_virtual_array.cc +++ b/source/blender/functions/intern/generic_virtual_array.cc @@ -496,6 +496,24 @@ class GVArrayImpl_For_SlicedGVArray : public GVArrayImpl { { varray_.get_to_uninitialized(index + offset_, r_value); } + + bool is_span() const override + { + return varray_.is_span(); + } + GSpan get_internal_span() const override + { + return varray_.get_internal_span(); + } + + bool is_single() const override + { + return varray_.is_single(); + } + void get_internal_single(void *r_value) const override + { + varray_.get_internal_single(r_value); + } }; /** \} */ -- cgit v1.2.3