Commit Graph

5052 Commits

Author SHA1 Message Date
afd13710b8 Cleanup: Clang-tidy readability-named-parameter
No functional change.
2020-10-21 13:21:00 +05:30
6c2bea6492 Cleanup: Clang-tidy silence readability-non-const-parameter
This is a false alarm, `getFileSystemRepresentation` changes the
return value argument.
So used `NOLINTNEXTLINE`.
2020-10-21 01:02:16 +05:30
84ef3b80de Spelling: Miscellaneous
Corrects 34 miscellaneous misspelled words.

Differential Revision: https://developer.blender.org/D9248

Reviewed by Campbell Barton
2020-10-19 09:11:00 -07:00
d1eefc4215 Spelling: Then Versus Than
Corrects incorrect usages of the words 'then' and 'than'.

Differential Revision: https://developer.blender.org/D9246

Reviewed by Campbell Barton
2020-10-19 08:43:08 -07:00
3a7fd309fc Spelling: It's Versus Its
Corrects incorrect usage of contraction for 'it is', when possessive 'its' was required.

Differential Revision: https://developer.blender.org/D9250

Reviewed by Campbell Barton
2020-10-19 08:12:33 -07:00
fa0ceb4959 Cleanup: spelling 2020-10-16 11:46:48 +11:00
00f7b572d9 Windows: Fix build issue on windows
TBB includes Windows.h which defines a min/max macro
leading to issues when you want to use std::min and
std::max.

This change prevents Windows.h from defining them
sidestepping the issue.
2020-10-15 17:14:57 -06:00
0d52504dff BLI_ghash_performance_test: Fix memory leaks
Reviewed By: mont29

Differential Revision: https://developer.blender.org/D9210
2020-10-14 18:05:47 +05:30
c7cd74fac3 Cleanup: multi-line comment blocks 2020-10-14 15:24:42 +11:00
db8a856a74 BLI: support looking up a key from a set or adding it when not existant 2020-10-12 15:10:08 +02:00
5336555c31 Cleanup: spelling 2020-10-10 22:04:51 +11:00
3fe98a473c Cleanup: remove unnecessary comments 2020-10-10 22:04:51 +11:00
2abfcebb0e Cleanup: use C comments for descriptive text
Follow our code style guide by using C-comments for text descriptions.
2020-10-10 22:04:51 +11:00
32d4623f44 Cleanup: alias: use const, remove unused variable.
`targetIsDirectory` slipped through the code review of
{D6679}/{rBafb1a64ccb81}.
`BLI_is_dir` exists to check for directory status of a file.

Remove some `else-after-return`s.

Use `r_` prefix for return value arguments, and move it to the end
in the list of arguments.
2020-10-09 22:46:39 +05:30
16ca295278 Fix New Boolean bug that left some stray vertices.
The routine to find dissolvable vertices had a check to ensure
that the vertex was exactly in line with the two neighbors.
I have convinced myself that this check is unneccesary (it was
failing with only a 1e-9 difference from 0 on a cross check),
so have removed it.
2020-10-09 10:43:07 -04:00
309c919ee9 BKE: parallelize BKE_mesh_calc_edges
`BKE_mesh_calc_edges` was the main performance bottleneck in D9141.
While openvdb only needed ~115ms, calculating the edges afterwards
took ~960ms. Now with some parallelization this is reduced to ~210ms.

Parallelizing `BKE_mesh_calc_edges` is not entirely trivial, because it
has to perform deduplication and some other things that have to happen
in a certain order. Even though the multithreading improves performance
with more threads, there are diminishing returns when too many threads
are used in this function.

The speedup is mainly achieved by having multiple hash tables that are
filled in parallel. The distribution of the edges to hash tables is based on
a hash (that is different from the hash used in the actual hash tables).

I moved the function to C++, because that made it easier for me to
optimize it. Furthermore, I added `BLI_task.hh` which contains some
light tbb wrappers for parallelization.

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D9151
2020-10-09 11:56:12 +02:00
a31a87f894 T81340: UBSan: load of value .. not valid for GPU enum type
The underlying type of the enum cannot be fixed here due to its usage
in C code.

All the values possible in the width of the underlying type are not
valid for an enum.
Only 0 to (2*max - 1) if all enumerators are unsigned.
So the macro asks for the biggest value among the //listed// ones.
If any enumerator C is set to say `A|B`, then C would be the maximum.
(2*max-1) is used as the mask.

The warnings (for each enum modified in this commit):
GPU_vertex_buffer.h:43:1: runtime error: load of value 4294967291
which is not a valid value for type 'GPUVertBufStatus'

https://github.com/llvm/llvm-project/commit/1c2c9867

Ref T81340

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D9067
2020-10-08 23:14:25 +05:30
1b9de4fa33 BLI: escape double quotes in dot export 2020-10-06 13:35:12 +02:00
0bae2662f4 Cleanup: Remove/replace C standard library assert() and header usages
We have our own assert implementation, `BLI_assert()` that is prefered over the
C standard library one. Its output is more consistent across compilers and
makes termination on assert failure optional (through `WITH_ASSERT_ABORT`).

In many places we'd include the C library header without ever accessing it.
2020-10-03 16:10:15 +02:00
28ebe827e6 Cleanup: trailing space 2020-10-02 11:59:16 +10:00
Valentin
5ac4778056 Cleanup: convert gforge task ID's to phabricator format
Cleanup old tracker task format to the new. e.g: [#34039] to T34039

Ref D8718
2020-09-30 20:11:06 +10:00
0863316745 Cleanup: use angle-brackets for email addresses
This is already the most widely used convention.

Use this so `make check_spelling_c` will ignore all email addresses.
2020-09-30 12:05:56 +10:00
714f5078da Cleanup: sort cmake file lists 2020-09-30 11:51:42 +10:00
d1f906e874 Fix T80444: Triangle-Triangle intersection regression in 2.90
The problem is due to lack of precision with small and coplanar triangles.

Also, triangles that have vertices with the same coordinate are at the
threshold of the intersection.

We could add an epsilon to consider the minimum distance for intersection.

But that would add a lot of overhead to the code.

The solution used is to increase precision using doubles.
2020-09-22 11:00:24 -03:00
e5a572157d Fix T80899: Crash on editing multiple UVs of multiple different objects at the same time
The issue was two fold.

First something sets the loop element tag and doesn't clear it before
the UV code in question tries to use the tags. Added a sanity clear to
make sure that it operates on a clean tag state.

The next one was that the UV maps in question had quite a few points
that had zero length UV loop edges. This would lead to division by
zero.

Reviewed By: Jeroen Bakker, Brecht

Differential Revision: http://developer.blender.org/D8967
2020-09-21 16:09:51 +02:00
cdad684ada Fix (unreported) wrong definition of ssize_t for windows.
Since at least MSVC2010 there is a `SSIZE_T` available for windows, use
it to typedef `ssize_t` on this platform.
2020-09-20 19:32:46 +02:00
e351c96089 Fix a wrong return type (float instead of double) in double2.hh 2020-09-20 08:38:44 -04:00
14b2a35c8b Cleanup: use parenthesis for if statements in macros 2020-09-19 16:28:17 +10:00
338ebea53e Cleanup: remove unused global locks from BLI_threads 2020-09-18 15:31:12 +10:00
Brecht Van Lommel
532ac1163c Tests: bundle tests for some modules in their own executables
The ffmpeg, guardedalloc and blenlib are quite isolated and putting them in
their own executable separate from blender_test is faster for development than
linking the entire blender_tests executable.

For Cycles, this also bundles all the unit tests into one executable.

Ref T79958

Differential Revision: https://developer.blender.org/D8714
2020-09-17 12:29:19 +02:00
f9fcb25d52 CMake: clean up setting of platform specific linker flags
Set flags directly on the target, and use common function for all cases.
This refactoring helps with the next commit for test executables.

Ref D8714
2020-09-17 12:29:19 +02:00
fa2ef64d96 Fix (unreported) buffer overflow in BLI_system_cpu_brand_string helper.
Since this buffer is used as an array of 12 32bits integers, and C++
string expect a NULL-terminated C-string, we need an extra char to
ensure last one is always NULL.

See D8906. Thanks to @brecht for noting this one too.
2020-09-16 15:04:19 +02:00
ab7608af1b Apply patch D8816, from Zachary(AFWS) for collection boolean operand.
Also added code so that exact solver does the whole collection at once.
This patch allows users to use a collection (as an alternative to Object)
for the boolean modifier operand, and therefore get rid of a long modifier stack.
2020-09-13 16:57:27 -04:00
a442da62dc BLI: Fix bitscan_forward_uint64 unix implementation 2020-09-12 15:29:54 +02:00
4c24e8e992 Cleanup: missing-variable-declarations warning 2020-09-12 16:33:27 +10:00
1025b5b924 Cleanup: make format 2020-09-11 11:21:53 +02:00
d023c4104c Cleanup: spelling, correct comments 2020-09-11 14:57:27 +10:00
c25ac806ac Cleanup: Fix bad spelling in previous commit.
Thanks for @deadpin for noticing!
2020-09-10 12:13:51 -06:00
5af75e2333 Cleanup: Update doc string for BLI_getenv
The reason for this functions existence was poorly documented
2020-09-10 10:18:32 -06:00
5badf16531 Cleanup: spelling 2020-09-10 09:45:25 +10:00
45bd8fdc2b BLI: new string search api that supports fuzzy and prefix matching
This adds a generic string search library in `BLI_string_search.h`.
The library has a simple to use C api that allows it's users to
filter and sort a set of possible search results based on some
query string.

Reviewers: Severin

Differential Revision: https://developer.blender.org/D8825
2020-09-09 13:44:45 +02:00
1f75be8a40 Fix T80604: BLI_polyfill_calc exceeds stack size allocating points
On systems with 512kb stack this happened at around 13k points.

This happened at times with grease-pencil, although callers that
frequently use complex polygons should be using BLI_polyfill_calc_arena.
2020-09-09 12:58:01 +10:00
d2911124f4 BLI: improve exception safety of VectorSet
For more information see rB2aff45146f1464ba8899368ad004522cb6a1a98c.
2020-09-07 20:04:00 +02:00
d71458d919 BLI: add comparison operators for StringRef
The semantic of those is the same as for std::string_view.
2020-09-07 16:10:01 +02:00
0e5aa49e1d Cleanup: include missing header files in CMake 2020-09-07 23:10:17 +10:00
5ccdc6ad86 Cleanup: Fix clang-tidy warning in the new boolean code
No functional changes.
2020-09-07 14:26:10 +02:00
267b8e1a5c Cleanup: spelling
Also correct wrapped lines of example code in threads.cc.
2020-09-07 16:19:42 +10:00
5faf72bb71 Fix T75827, boolean of non-manifold objects leaves stray edges.
Well, this only fixes the example if one uses the new Exact mode,
but since that is available, seems fair to call this fixed.
Since these were not closed-volume operands, the Exact mode needed
some adjustment to the threshold used for "inside-outside" tests
for the case of deciding if the cutter is inside the other shape
for a Difference.
2020-09-05 16:01:39 -04:00
3a8d9198b3 Cleanup: spelling 2020-09-06 02:19:58 +10:00
6560a1c35e Math Utils: Add bitscan 64bit version 2020-09-05 17:49:14 +02:00