[Bf-blender-cvs] [d39fde3662c] refactor-mesh-hide-generic: Parallelize flag copying
Hans Goudey
noreply at git.blender.org
Fri Jul 22 01:35:27 CEST 2022
Commit: d39fde3662c792800945270a19612f81a4b8e8fd
Author: Hans Goudey
Date: Thu Jul 21 18:35:16 2022 -0500
Branches: refactor-mesh-hide-generic
https://developer.blender.org/rBd39fde3662c792800945270a19612f81a4b8e8fd
Parallelize flag copying
===================================================================
M source/blender/blenkernel/intern/mesh_legacy_convert.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/mesh_legacy_convert.cc b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
index 56f548884c1..601c2675b2b 100644
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@ -18,6 +18,7 @@
#include "BLI_math.h"
#include "BLI_memarena.h"
#include "BLI_polyfill_2d.h"
+#include "BLI_task.hh"
#include "BLI_utildefines.h"
#include "BKE_attribute.hh"
@@ -889,23 +890,29 @@ void BKE_mesh_legacy_convert_hide_layers_to_flags(Mesh *mesh)
MutableSpan<MVert> vertices(mesh->mvert, mesh->totvert);
const VArray<bool> hide_vert = attributes.lookup_or_default<bool>(
".hide_vert", ATTR_DOMAIN_POINT, false);
- for (const int i : vertices.index_range()) {
- SET_FLAG_FROM_TEST(vertices[i].flag, hide_vert[i], ME_HIDE);
- }
+ threading::parallel_for(vertices.index_range(), 4096, [&](IndexRange range) {
+ for (const int i : range) {
+ SET_FLAG_FROM_TEST(vertices[i].flag, hide_vert[i], ME_HIDE);
+ }
+ });
MutableSpan<MEdge> edges(mesh->medge, mesh->totedge);
const VArray<bool> hide_edge = attributes.lookup_or_default<bool>(
".hide_edge", ATTR_DOMAIN_EDGE, false);
- for (const int i : edges.index_range()) {
- SET_FLAG_FROM_TEST(edges[i].flag, hide_edge[i], ME_HIDE);
- }
+ threading::parallel_for(edges.index_range(), 4096, [&](IndexRange range) {
+ for (const int i : range) {
+ SET_FLAG_FROM_TEST(edges[i].flag, hide_edge[i], ME_HIDE);
+ }
+ });
MutableSpan<MPoly> polygons(mesh->mpoly, mesh->totpoly);
const VArray<bool> hide_face = attributes.lookup_or_default<bool>(
".hide_face", ATTR_DOMAIN_FACE, false);
- for (const int i : polygons.index_range()) {
- SET_FLAG_FROM_TEST(polygons[i].flag, hide_face[i], ME_HIDE);
- }
+ threading::parallel_for(polygons.index_range(), 4096, [&](IndexRange range) {
+ for (const int i : range) {
+ SET_FLAG_FROM_TEST(polygons[i].flag, hide_face[i], ME_HIDE);
+ }
+ });
}
void BKE_mesh_legacy_convert_flags_to_hide_layers(Mesh *mesh)
@@ -920,9 +927,11 @@ void BKE_mesh_legacy_convert_flags_to_hide_layers(Mesh *mesh)
})) {
SpanAttributeWriter<bool> hide_vert = attributes.lookup_or_add_for_write_only_span<bool>(
".hide_vert", ATTR_DOMAIN_POINT);
- for (const int i : vertices.index_range()) {
- hide_vert.span[i] = vertices[i].flag & ME_HIDE;
- }
+ threading::parallel_for(vertices.index_range(), 4096, [&](IndexRange range) {
+ for (const int i : range) {
+ hide_vert.span[i] = vertices[i].flag & ME_HIDE;
+ }
+ });
hide_vert.finish();
}
@@ -931,9 +940,11 @@ void BKE_mesh_legacy_convert_flags_to_hide_layers(Mesh *mesh)
edges.begin(), edges.end(), [](const MEdge &edge) { return edge.flag & ME_HIDE; })) {
SpanAttributeWriter<bool> hide_edge = attributes.lookup_or_add_for_write_only_span<bool>(
".hide_edge", ATTR_DOMAIN_EDGE);
- for (const int i : edges.index_range()) {
- hide_edge.span[i] = edges[i].flag & ME_HIDE;
- }
+ threading::parallel_for(edges.index_range(), 4096, [&](IndexRange range) {
+ for (const int i : range) {
+ hide_edge.span[i] = edges[i].flag & ME_HIDE;
+ }
+ });
hide_edge.finish();
}
@@ -943,9 +954,11 @@ void BKE_mesh_legacy_convert_flags_to_hide_layers(Mesh *mesh)
})) {
SpanAttributeWriter<bool> hide_face = attributes.lookup_or_add_for_write_only_span<bool>(
".hide_face", ATTR_DOMAIN_FACE);
- for (const int i : polygons.index_range()) {
- hide_face.span[i] = polygons[i].flag & ME_HIDE;
- }
+ threading::parallel_for(polygons.index_range(), 4096, [&](IndexRange range) {
+ for (const int i : range) {
+ hide_face.span[i] = polygons[i].flag & ME_HIDE;
+ }
+ });
hide_face.finish();
}
}
More information about the Bf-blender-cvs
mailing list