January 3, 2020, 09:06 (GMT) |
Merge branch 'master' into greasepencil-object |
Revision 176a3ad by Bastien Montagne (undo-experiments, undo-experiments-idnames, undo-experiments-swap-reread-datablocks, uuid-undo-experiments, uuid-undo-experiments-swap-reread-datablocks) January 2, 2020, 19:50 (GMT) |
undoexp: Initial, *VERY* basic code using ID names. This comes from the fact that we are now handling IDs from potentially many different 'memory realms' (at the very least, two of them, those read from memfile [new IDs], and those from previous Main [old IDs]). The main consequence is that using pointers (aka memory addresses) as 'uids' is not working anymore: we'd need to keep some sort of 'history' of all pointers a given data-block has had to get it working, and that would likely lead to 'pointer collisions' [1] at some point or another. So instead we need to use the only kind of uid we have for datablocks: their names. That patch is very basic, but it is enough to check undo/redo on basic object and pose-bone-of-rigged-mesh dummies, not get it crashing, and demonstrate huges speed-up in some artificial 'worst test case' scenario. There are still several things to do from there: * IDname handling: * Obviously, use a ghash instead of dummy linear list search! Most likely use BKE_library_idmap code to generate it. * Check and handle pointers collisions. [1] * Testing, testing and moar testing! These changes are highly dangerous and can destroy a blend file completely, so we'll need to be 100% sure they are working perfectly before puting them in master! [1] Pointer collision: the issue here is with 'old' memory addresses stored/used as uid in .blend file. When one read a .blend file as a whole this is not an issue, since all old data-blocks where in a single 'memory realm' (the old Main valid at time of file writing), and all new data-blocks are also in a single realm (the newly read file). Since we only remap each pointer once, this is fine. But when we start mixing those 'memory realms' by re-using IDs from old Main in this undo project, we can end up with the same 'uuid' old pointer value having to be remapped to two different new addresses. |
January 2, 2020, 18:09 (GMT) |
Merge branch 'greasepencil-object' into greasepencil-refactor |
January 2, 2020, 18:09 (GMT) |
Merge branch 'master' into greasepencil-object |
Revision 7d4fb68 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 16:14 (GMT) |
use BLI::parallel_for when creating tetrahedons |
Revision d238e64 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 16:09 (GMT) |
improve copying of generic data |
Revision ec71992 by Bastien Montagne (undo-experiments, undo-experiments-idnames, undo-experiments-swap-reread-datablocks, uuid-undo-experiments, uuid-undo-experiments-swap-reread-datablocks) January 2, 2020, 16:03 (GMT) |
undoexp: fix crashes with even trivial relationships (like parent ones). Even if we re-used an old ID, it may have some pointers to other IDs remapped to newly read data, e.g. the `parent` of an object... So CoW/evaluated data in re-used despgraph needs to be flushed in those cases. |
Revision 0c76664 by Bastien Montagne (undo-experiments, undo-experiments-idnames, undo-experiments-swap-reread-datablocks, uuid-undo-experiments, uuid-undo-experiments-swap-reread-datablocks) January 2, 2020, 16:00 (GMT) |
undoexp: Add new 'UNDO_OLD_ID_REUSED' ID tag. We need to be able to distinguish between reused IDs and newly read ones, and 'NEW' tag is not enough here, as it gets cleared in read code. This will be used in next commit to inform depsgraph that some re-used old IDs need at least a COW refresh, as they are using ID pointers to newly read data. |
Revision 187844f by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 15:37 (GMT) |
use StringMultiMap in more places |
Revision 6732a03 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 15:28 (GMT) |
introduce StringMultiMap |
Revision 8753f92 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 15:05 (GMT) |
utility to iterate over string map in parallel |
Revision 0ebb98a by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 14:49 (GMT) |
cleanup |
Revision 30b5063 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 14:22 (GMT) |
rename index_iterator to index_range |
Revision 25fc970 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 14:20 (GMT) |
move tbb wrappers to blenlib |
Revision 1e2401a by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 14:12 (GMT) |
more parallelization |
Revision 2025065 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 13:58 (GMT) |
simulate particles in parallel |
Revision 169bdd8 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 13:43 (GMT) |
extract method |
Revision ecfed4d by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 13:39 (GMT) |
cleanup parallel for/invoke |
Revision 8a8223c by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 13:36 (GMT) |
cleanup parallel for |
Revision 1273af1 by Jacques Lucke (builtin-simulation-nodes, functions, particle-solver-dev, simulation-tree) January 2, 2020, 13:31 (GMT) |
simulate particle systems in parallel |
|
|
|


Master Commits
MiikaHweb | 2003-2021