Commit: facf4463424bd8563e3b9a9de36d892f909ec914 Author: Jeroen Bakker Date: Tue Jan 17 15:27:48 2023 +0100 Branches: temp-T101739-fix-seam-bleeding-non-manifold https://developer.blender.org/rBfacf4463424bd8563e3b9a9de36d892f909ec914
Enable threading during pixel copy-ing. =================================================================== M source/blender/blenkernel/BKE_pbvh_pixels.hh M source/blender/blenkernel/intern/pbvh_pixels_copy.cc =================================================================== diff --git a/source/blender/blenkernel/BKE_pbvh_pixels.hh b/source/blender/blenkernel/BKE_pbvh_pixels.hh index 90cade4efa7..c40df2c8e50 100644 --- a/source/blender/blenkernel/BKE_pbvh_pixels.hh +++ b/source/blender/blenkernel/BKE_pbvh_pixels.hh @@ -370,15 +370,15 @@ struct CopyPixelTile { { } - void copy_pixels(ImBuf &tile_buffer) const + void copy_pixels(ImBuf &tile_buffer, IndexRange group_range) const { if (tile_buffer.rect_float) { ImageBufferAccessor<float4> accessor(tile_buffer); - copy_pixels<float4>(accessor); + copy_pixels<float4>(accessor, group_range); } else { ImageBufferAccessor<int> accessor(tile_buffer); - copy_pixels<int>(accessor); + copy_pixels<int>(accessor, group_range); } } @@ -395,9 +395,11 @@ struct CopyPixelTile { } private: - template<typename T> void copy_pixels(ImageBufferAccessor<T> &image_buffer) const + template<typename T> + void copy_pixels(ImageBufferAccessor<T> &image_buffer, IndexRange group_range) const { - for (const CopyPixelGroup &group : groups) { + for (const int64_t group_index : group_range) { + const CopyPixelGroup &group = groups[group_index]; CopyPixelCommand copy_command(group); for (const DeltaCopyPixelCommand &item : Span<const DeltaCopyPixelCommand>( &command_deltas[group.start_delta_index], group.num_deltas)) { diff --git a/source/blender/blenkernel/intern/pbvh_pixels_copy.cc b/source/blender/blenkernel/intern/pbvh_pixels_copy.cc index bac3c2fdf87..4e94f002244 100644 --- a/source/blender/blenkernel/intern/pbvh_pixels_copy.cc +++ b/source/blender/blenkernel/intern/pbvh_pixels_copy.cc @@ -5,6 +5,7 @@ #include "BLI_bit_vector.hh" #include "BLI_math.h" #include "BLI_math_vector.hh" +#include "BLI_task.hh" #include "BLI_vector.hh" #include "IMB_imbuf.h" @@ -652,7 +653,12 @@ void BKE_pbvh_pixels_copy_pixels(PBVH &pbvh, /* No tile buffer found to copy. */ return; } - pixel_tile->get().copy_pixels(*tile_buffer); + + CopyPixelTile &tile = pixel_tile->get(); + const int grain_size = 128; + threading::parallel_for(tile.groups.index_range(), grain_size, [&](IndexRange range) { + tile.copy_pixels(*tile_buffer, range); + }); BKE_image_release_ibuf(&image, tile_buffer, nullptr); // TIMEIT_END(pbvh_pixels_copy_pixels); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs