[Bf-blender-cvs] [6b5e1cfacab] master: Geometry Nodes: better devirtualization for sliced virtual arrays

Jacques Lucke noreply at git.blender.org
Fri Nov 26 10:08:26 CET 2021


Commit: 6b5e1cfacab4c4605ec2d7bfef360389afe849be
Author: Jacques Lucke
Date:   Fri Nov 26 10:08:19 2021 +0100
Branches: master
https://developer.blender.org/rB6b5e1cfacab4c4605ec2d7bfef360389afe849be

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.

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

M	source/blender/functions/intern/generic_virtual_array.cc

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

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);
+  }
 };
 
 /** \} */



More information about the Bf-blender-cvs mailing list