Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-06-08Avoid allocation of evaluation context for iteratorSergey Sharybin
Use stack-allocated context when possible.
2017-06-06Merge branch 'master' into blender2.8Sergey Sharybin
2017-06-06Depsgraph: Only use extern "C" when really neededSergey Sharybin
2017-04-06Depsgraph: Remove olde depsgraph header from new depsgraphSergey Sharybin
2017-04-05Depsgraph: Remove all layer bit flags related checksSergey Sharybin
These bits became obsolete with the new layer system, so we can simplify some code around them or avoid existing workarounds which were trying to keep things working for them. There are still work needed to be done for on_visible_change to avoid unnecessary updates, but that can also happen later.
2017-01-24Depsgraph: Remove legacy code from new depsgraphSergey Sharybin
Now we have no remaining WITH_LEGACY_DEPSGRAPH in the code.
2016-09-26Fix export image generated by export UV layoutSergey Sharybin
Was only happening with new dependency graph. The issue here is that scene's depsgraph layers will be 0 unless it was ever visible. Worked around by checking for 0 layer in the update_tagged of new depsgraph. This currently kind of following logic of visible_layers, but is weak. Committing so studio is unlocked here, will re-evaluate this layer.
2016-07-26Depsgraph: Use proper unsigned int bitfield for layers flagsSergey Sharybin
2016-05-27Depsgraph: Cleanup and code simplificationSergey Sharybin
This is mainly a maintenance commit which was aimed to make work with this module more pleasant and solve such issues as: - Annoyance with looong files, which had craftload in them - Usage of STL for the data structures we've got in BLI - Possible symbol conflicts - Not real clear layout of what is located where So in this commit the following changes are done: - STL is prohibited, it's not really predictable on various compilers, with our BLI algorithms we can predict things much better. There are still few usages of std::vector, but that we'll be solving later once we've got similar thing in BLI. - Simplify foreach loops, avoid using const_iterator all over the place. - New directory layout, which is hopefully easier to follow. - Some files were split, some of them will be split soon. The idea of this is to split huge functions into own files with good documentation and everything. - Removed stuff which was planned for use in the future but was never finished, tested or anything. Let's wipe it out for now, and bring back once we really start using it, so it'll be more clear if it solves our needs. - All the internal routines were moved to DEG namespace to separate them better from rest of blender. Some places now annoyingly using DEG::foo, but that we can olve by moving some utility functions inside of the namespace. While working on this we've found some hotspot in updates flush, so now playback of blenrig is few percent faster (something like 96fps with previous master and around 99-100fps after this change). Not saying it's something final, there is still room for cleanup and API simplification, but those might happen as a regular development now without doing any global changes.
2016-05-25Depsgraph: Simplify some loops using foreach()Sergey Sharybin
2016-05-10Depsgraph: For big graphs update pending parents in threadsSergey Sharybin
Gives additional speedup from ~88 to ~91 fps with a test rig.
2016-05-10Depsgraph: Comment evaluation priority out for nowSergey Sharybin
It uses some additional compute power and the evaluation priority is not even used. This brings fps 88.2 with blenrig_for_debugging.blend on this desktop.
2016-05-10Depsgraph: Don't leave active thread if there's only one children nodeSergey Sharybin
This reduces stress on the task scheduler and avoids some unwanted overhead caused by all the threading business in the cases when there's only one children node. We try to immediately switch to it's evaluation now, keeping active thread up and running. This bumps FPS from 58 to 64 on the blenrig test file from jpbouza.
2016-05-10Task scheduler: Add thread-aware task push routinesSergey Sharybin
This commit implements new function BLI_task_pool_push_from_thread() who's main goal is to have less parasitic load on the CPU bu avoiding memory allocations as much as possible, making taks pushing cheaper. This function expects thread ID, which must be 0 for the thread from which pool is created from (and from which wait_work() is called) and for other threads it mush be the ID which was sent to the thread working function. This reduces allocations quite a bit in the new dependency graph, hopefully gaining some visible speedup on a fewzillion core machines (on my own machine can only see benefit in profiler, which shows significant reduce of time wasted in the memory allocation).
2016-05-09Cleanup: header, styleCampbell Barton
2016-05-09Depsgraph: Store node input/output links in a vector rather than in setSergey Sharybin
Set is much slower to iterate through (due to cache misses and such) and the only advantage of using set is faster removal of link. However, we are iterating links much much more often than removing them, and even when we are removing links we don't really need to remove link from nodes which it connects -- we don't support partial depsgraph updates, so removing links from nodes on destruction is a waste of time. If we ever want to support partial updates we can have dedicated function to remove link from nodes it connects. This gives a surprising increase of fps from 42 to 56 with test file from Mr. J.P.Bouza (blenrig_for_debugging.blend). Surprising because old DEG is actually slower here (52 fps). Didn't see any regressions (and don't see why they will happen), so let's ask our riggers and animators to perform further speed tests ;)
2016-05-09Depsgraph: Avoid having per-node lock when scheduling childrenSergey Sharybin
Use atomic operations instead, should in theory improve timing of scheduling. However, probably not so visible yet because actual task scheduling still have some locks and memory allocations. Baby steps, what would i say.
2016-04-28Depsgraph optimization: Don't schedule tasks for empty "NOOP" nodes.Lukas Tönne
Currently a lot of the nodes in the new dependency graph are empty placeholders for organizational purposes. These nodes would, however, still be assigned a task which gets scheduled and takes up some time for worker threads to pop from the queue and run. This can be avoided by skipping these nodes during depsgraph scheduling, and scheduling their childrent right away. Gives a few percent speedup in BlenRig.
2015-08-27OpenSubdiv: Fix crash toggling edit mode with new depsgraphSergey Sharybin
2015-06-16Cleanup: styleCampbell Barton
2015-05-20Add dedicated command argument to switch depsgraph to a single-threaded ↵Sergey Sharybin
evaluation This way it is possible to have single threaded depsgraph but threaded other areas which is handy for torubleshooting. he argument is: --debug-depsgraph-no-threads
2015-05-20doxygen: corrections/updatesCampbell Barton
Also add depsgraph & physics
2015-05-12Depsgraph: New dependency graph integration commitSergey Sharybin
This commit integrates the work done so far on the new dependency graph system, where goal was to replace legacy depsgraph with the new one, supporting loads of neat features like: - More granular dependency relation nature, which solves issues with fake cycles in the dependencies. - Move towards all-animatable, by better integration of drivers into the system. - Lay down some basis for upcoming copy-on-write, overrides and so on. The new system is living side-by-side with the previous one and disabled by default, so nothing will become suddenly broken. The way to enable new depsgraph is to pass `--new-depsgraph` command line argument. It's a bit early to consider the system production-ready, there are some TODOs and issues were discovered during the merge period, they'll be addressed ASAP. But it's important to merge, because it's the only way to attract artists to really start testing this system. There are number of assorted documents related on the design of the new system: * http://wiki.blender.org/index.php/User:Aligorith/GSoC2013_Depsgraph#Design_Documents * http://wiki.blender.org/index.php/User:Nazg-gul/DependencyGraph There are also some user-related information online: * http://code.blender.org/2015/02/blender-dependency-graph-branch-for-users/ * http://code.blender.org/2015/03/more-dependency-graph-tricks/ Kudos to everyone who was involved into the project: - Joshua "Aligorith" Leung -- design specification, initial code - Lukas "lukas_t" Toenne -- integrating code into blender, with further fixes - Sergey "Sergey" "Sharybin" -- some mocking around, trying to wrap up the project and so - Bassam "slikdigit" Kurdali -- stressing the new system, reporting all the issues and recording/writing documentation. - Everyone else who i forgot to mention here :)