Commit Graph

4600 Commits

Author SHA1 Message Date
Campbell Barton
4ddb7a33a4 Cleanup: spelling 2020-05-28 16:42:31 +10:00
Pablo Dobarro
d7282537f0 CD_PROP_COL datalayer
This implements a generic color datalayer and its functions. Based on
D5975.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D7838
2020-05-27 20:04:46 +02:00
Campbell Barton
a739dc67ef Cleanup: sort file, structs 2020-05-27 10:52:07 +10:00
Harley Acheson
1f223b9a1f UI: Windows Shell Links & Improved Mac Aliases
Adds support for Windows Shell Links (shortcuts) to the File Browser. Extended Mac Alias usage. Better visualization of linked items.

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

Reviewed by Campbell Barton
2020-05-26 08:15:50 -07:00
Campbell Barton
495a98d623 BLI_assert: prevent abort from suppressing return-type warning
Recent commit deaff945d0 broke release builds but not debug builds,
with this change the warning happens in both cases.
2020-05-26 13:40:21 +10:00
Sebastian Parborg
4464a9425b Calculate epsilon values for interp_weights_poly to improve accuracy
interp_weights_poly_v2 would have too large epsilon values for small
polygons. To solve this we now calculate the appropriate epsilon value
so it can gracefully handle big and small values.

To make sure there was no regression, these changes were tested with the
files in T36105, T31581. Also with a surface deform modifier test file
attached in the differential below.

Reviewed By: Brecht

Differential Revision: http://developer.blender.org/D7772
2020-05-25 18:59:14 +02:00
Campbell Barton
dc3f404a70 Cleanup: unused variable warnings 2020-05-25 21:03:45 +10:00
Jeroen Bakker
9ef272bae3 Task: Graph Flow Task Scheduling
Add TBB::flow graph scheduling to BLI_task.

Using flow graphs, a graph of nodes (tasks) and links can be defined.
Work can flow though the graph. During this process the execution of the nodes will be
scheduled among the available threads.

We are planning to use this to improve the threading in the draw manager.

The implemented API is still limited it only supports sequential flows. Joins and buffers
are not supported. We could eventually support them as part of an CPP API. These features
from uses compile time templates and are hard to make a clean C-API for this.

Reviewed By: Sergey Sharybin, Brecht van Lommel

Differential Revision: https://developer.blender.org/D7578
2020-05-25 12:38:12 +02:00
Jacques Lucke
717577d5fc BLI: Fix VectorSet copy constructor
Thanks to Howard for pointing that out.
2020-05-20 15:47:32 +02:00
Brecht Van Lommel
183ba284f2 Cleanup: make guarded memory allocation always thread safe
Previously this would be enabled when threads were used, but threads are now
basically always in use so there is no point. Further, this is only needed for
guarded allocation with --debug-memory which is not performance critical.
2020-05-20 01:03:05 +02:00
Brecht Van Lommel
33fc42bd65 Merge branch 'blender-v2.83-release' 2020-05-20 00:46:15 +02:00
Sybren A. Stüvel
a95afed6de Merge remote-tracking branch 'origin/blender-v2.83-release' 2020-05-19 15:24:45 +02:00
Jeroen Bakker
9ac4e4a1c7 Fix T76375: UDIM Rectangular Tiled Image EEVEE freezes Blender
When packing the image the height of the tile was checked to the width
of the packing area. This resulted that the tile was ignored.

Reviewed By: Clément Foucault

Differential Revision: https://developer.blender.org/D7784
2020-05-19 15:20:40 +02:00
Harley Acheson
b14243be77 blenlib: BLI_file_attributes() Correction
Adds an Correction to properly handle possibility of overflow of path name.

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

Reviewed by Brecht Van Lommel
2020-05-15 08:11:57 -07:00
Jacques Lucke
5f95912afc BLI: add missing include for size_t 2020-05-15 12:48:45 +02:00
Ray Molenkamp
cc3d3a453e Fix: Broken build with TBB disabled.
Lite builds without TBB and still needs the alternative codepath
2020-05-14 10:39:12 -06:00
Jacques Lucke
461fee5328 BLI: deduplicate address sanitizer code
Reviewers: brecht, campbellbarton

Differential Revision: https://developer.blender.org/D7731
2020-05-14 17:42:54 +02:00
Jeroen Bakker
08ac4d3d71 Fix T76553: Blender Freezes When Playing Back Animation
In some cases blender could freeze. When threads are blocked (waiting for other tasks completion) the scheduler can let the thread perform a different task. If this task wants a write-lock for something that was read-locked in the stack a dead lock will happen.

For task pools every task is isolated. For range tasks the inner loop will be isolated. The implementation is limited as isolation in TBB uses functors which are tricky to add to a C API. We decided to start with a simple and adapt were we need to.

During testing we came to this setup as it was reliable (we weren't able to let it freeze or crash) and didn't had noticeable performance impact.

Reviewed By: Brecht van Lommel

Differential Revision: https://developer.blender.org/D7688
2020-05-14 13:54:16 +02:00
Antonio Vazquez
498bd0772e Merge branch 'blender-v2.83-release' 2020-05-13 13:03:55 +02:00
Jacques Lucke
2afb597572 Fix T76665: Wrong files selected when using box select
Reviewers: Severin

Differential Revision: https://developer.blender.org/D7705
2020-05-13 12:50:14 +02:00
Ray Molenkamp
76e56e2ba7 Windows: Ignore context record for backtrace is address is 0.
T76602 reported a crash with the exception address being 0,
this stack naturally could not be walked and no backtrace was
reported for the main thread. Which would have been helpful.

This change modifies the behaviour of the crash handler to ignore
the context record if it contains no useful information and
walk the current stack to get some information about what lead
to the crash.
2020-05-09 18:12:14 -06:00
Brecht Van Lommel
633fee72d5 Fix T76427: edit mesh undo hanges when building without TBB
Background task pools would not restart threads if reused multiple times,
thanks to Jeroen for identifying the cause of this problem.

Differential Revision: https://developer.blender.org/D7659
2020-05-09 17:17:20 +02:00
Campbell Barton
9be28095cb Fix building on NetBSD 2020-05-09 23:22:50 +10:00
Campbell Barton
d06384aa41 Cleanup: spelling 2020-05-09 17:19:28 +10:00
Campbell Barton
00e99959d3 Cleanup: double-spaces in comments 2020-05-09 17:15:43 +10:00
Jacques Lucke
6f985574b7 Cleanup: take includes out of 'extern "C"' blocks
Surrounding includes with an 'extern "C"' block is not necessary anymore.
Also that made it harder to add any C++ code to some headers, or include headers
that have "optional" C++ code like `MEM_guardedalloc.h`.

I tested compilation on linux and windows (and got help from @LazyDodo).
If this still breaks compilation due to some linker error, the header containing
the symbol in question is probably missing an 'extern "C"' block.

Differential Revision: https://developer.blender.org/D7653
2020-05-08 18:22:41 +02:00
Ray Molenkamp
96f305c63d Windows: Include symbol file in module information
When writing out the module information in a crashdump
we did not include what symbol file was loaded and if
that symbol file actually matches our executable.

Given the backtraces may contain invalid information
if the symbols are unmatched this is relevant to know.

This diff adds the symbol file and an indication if
unmatched symbols are used.
2020-05-08 10:01:56 -06:00
Ray Molenkamp
a1c2441390 Windows: Improve private symbol detection
To detect if private of public symbols were loaded we were relying
on a strcmp with a known filename, which was not great, the symbol
api has a field we can query which should be more flexible and
reliable.
2020-05-08 09:46:39 -06:00
Ray Molenkamp
cc1fb9d177 Windows: Fix BLI_assert backtrace.
With the recent backtrace overhaul, the fact that BLI_assert calls
BLI_system_backtrace slipped somehow trough the cracks, causing
issues for debug builds.

This change allows BLI_system_backtrace to run again without having
an exception record.

Also minor improvements to the comments.
2020-05-08 09:39:41 -06:00
Campbell Barton
32f7495e5a Cleanup: clang-format 2020-05-08 19:02:03 +10:00
Campbell Barton
21dd3524c0 Fix typo in recent quadric cleanup 2020-05-08 12:42:10 +10:00
Jacques Lucke
850a539c90 BLI: improve linear allocator documentation 2020-05-07 14:21:48 +02:00
Stefan Werner
04a3bdcc52 Blenlib: Added explicit BLI_INLINE in perlin noise.
A few tiny functions were not inlined even in some release
configurations. Added BLI_INLINE as extra compiler hint in
places that the profiler showed at hot spots when populating
geometry with hair.
2020-05-07 10:04:19 +02:00
Campbell Barton
6fe3bbed34 Cleanup: restore text alignment lost by clang-format 2020-05-06 15:38:32 +10:00
Brecht Van Lommel
4e5a328e55 Tasks: support build with TBB version 2017
Make the task pool implementation compatible with older versions that are
used by install_deps.sh.
2020-05-05 14:06:08 +02:00
Brecht Van Lommel
c54ced9f55 Build: print TBB ON/OFF state on first configure, cleanup old TBB logic 2020-05-05 14:06:08 +02:00
Jacques Lucke
df16c23832 Add StringMap.LookupOrAdd and StringMap.LookupOrAddDefault 2020-05-04 17:12:23 +02:00
Campbell Barton
9eb46d6c29 Cleanup: rename mcords to mcoords
- 'coords' is an abbreviation for coordinates, not 'cords'.
- Rename 'moves' to 'coords_len'.
2020-05-04 19:50:06 +10:00
Jacques Lucke
88b9505b84 BLI: simplify memory management in OpenAddressingArray 2020-05-04 11:11:46 +02:00
Ray Molenkamp
ff8288ad1e Windows: Replace BLI_File* calls with system calls in system_win32.c
Using BLI calls in this file triggered a condition where
poorly modelled dependencies in cmake (ie bf_blenlib using
zlib headers but not linking the libraries) leading to
linker error in debug builds of some of the tests.

This diff sidesteps the dependencies issue by using native
calls rather than BLI calls to check if a file exists and
what its size is. Effectively sweeping the issue right back
under the rug where I found it.

The best solution would be to audit all libraries and ensure
they have proper link requirements set, but that requires
significantly more time than I have available right now.
(zlib in blenlib was one of them and would have been easy
to fix, but there were others that required more work)

The alternative is tests that fail to build which worse.

I'll revisit this and fix it properly but for now this will
have to do.
2020-05-03 12:07:22 -06:00
Campbell Barton
76be35efb2 Cleanup: clang-format 2020-05-03 13:42:49 +10:00
Ray Molenkamp
60741cfe18 Fix: Fix build error on windows
Headers and implementation had slightly different signatures
2020-05-01 08:06:34 -06:00
Ray Molenkamp
b523911e86 Windows: Support backtraces on release builds.
This diff add supports for crash logs on windows for
release builds. This can be toggled on/off with the
`WITH_WINDOWS_PDB` cmake option. by default it is on.

Things to take into consideration:

Release builds are hightly optimized and the resulting
backtraces can be wrong/misleading, take the backtrace
as a general area where the problem resides rather than
an exact location.

By default we ship a minimized symbol file that can only
resolve the function names. This was chosen to strike
a balance between growth in size of the download vs
functionality gained. If more detailed information is
required such as source file + line number information
a full pdb can be shipped by setting `WITH_WINDOWS_STRIPPED_PDB`
to off.

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

Reviewed by: brecht
2020-05-01 07:37:48 -06:00
Campbell Barton
ff1174e52c Cleanup: improve readability for color assignment 2020-05-01 15:05:25 +10:00
Ray Molenkamp
03f4d20bcf Revert "Windows: Support backtraces on release builds."
Issues with older cmake.
2020-04-30 14:00:11 -06:00
Ray Molenkamp
f90a716e68 Windows: Support backtraces on release builds.
This diff add supports for crash logs on windows for
release builds. This can be toggled on/off with the
`WITH_WINDOWS_PDB` cmake option. by default it is on.

Things to take into consideration:

Release builds are hightly optimized and the resulting
backtraces can be wrong/misleading, take the backtrace
as a general area where the problem resides rather than
an exact location.

By default we ship a minimized symbol file that can only
resolve the function names. This was chosen to strike
a balance between growth in size of the download vs
functionality gained. If more detailed information is
required such as source file + line number information
a full pdb can be shipped by setting `WITH_WINDOWS_STRIPPED_PDB`
to off.

The Release in the title of this diff refers to the
release build type, not the official blender releases.

Initially this will only be enabled for nightly build
bot versions of blender, official releases as of now
will not ship with symbols.

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

Reviewed by: brecht
2020-04-30 12:41:16 -06:00
Campbell Barton
040e98dfc9 Cleanup: unused variable warnings 2020-04-30 17:28:28 +10:00
Brecht Van Lommel
d8a3f3595a Task: Use TBB as Task Scheduler
This patch enables TBB as the default task scheduler. TBB stands for Threading Building Blocks and is developed by Intel. The library contains several threading patters. This patch maps blenders BLI_task_* function to their counterpart. After this patch we can add more patterns. A promising one is TBB:graph that can be used for depsgraph, draw manager and compositor.

Performance changes depends on the actual hardware. It was tested on different hardwares from laptops to workstations and we didn't detected any downgrade of the performance.
* Linux Xeon E5-2699 v4 got FPS boost from 12 to 17 using Spring's 04_010_A.anim.blend.
* AMD Ryzen Threadripper 2990WX 32-Core Animation playback goes from 9.5-10.5 FPS to 13.0-14.0 FPS on Agent 327 , 10_03_B.anim.blend.

Reviewed By: brecht, sergey

Differential Revision: https://developer.blender.org/D7475
2020-04-30 08:09:21 +02:00
Jacques Lucke
4d06c1c25b BLI: add VectorSet.is_empty method 2020-04-28 19:18:12 +02:00
Jacques Lucke
c1e6865ee3 Cleanup: remove unnecessary includes 2020-04-28 18:08:00 +02:00