利用者:Nazg-gul/GSoC-2013
目次
Google Summer of Code: Threaded Dependency Graph
General info
Short description. This project is about improving dependency graph in terms of supporting objects update from multiple threads for multiple purposes (for example, being able to have the same object up-to-date for the viewport and render).
For artists this means faster scene playback and no conflicts between viewport and render threads.
During this project following improvements and changes will be done to the code (bigger milestones are listed):
- Make all object-data related areas (such as curves and metaballs) thread-safe
- Make scene objects update multi-threaded
- Separate data from state, so viewport and render doesn't run into conflict
Here are some links to pages with more detailed info:
- Rejected proposals (proposals made this year but not being accepted, more like for history)
- Proposal
- Weekly Progress
- Joshua Leung's new dependency graph design overview.
Project Breakdown
Project itself is rather huge, but the list of changes above is actually pretty much nice breakdown and each element from that list defines nice milestone of the project.
Further document is split into separate pages, each of which describes design proposal, implementation details and status of the target.
Work Breakdown
- Making data and code safe for threading:
- doneMake metaballs safe for threading.
- doneMake curves code safe for threading.
- doneMake other objects' data safe threading.
- doneMake modifier stack safe for threading.
- Scheduler:
- doneImplement (or re-use/integrate existing ones) task scheduler.
- doneSwitch from sequent object-by-object handle_update to task-based scheduled updates.
- doneSolve dupli-groups duplications.
- doneLook into nice balanced load.
- to doSupport granular update.
- Rendering:
- doneSupport locked interface while rendering.
- in progress 10%Solve viewport/render conflicts.
- Other
- doneReshuffle deform weights calculation in shapekeys to solve significant slowdown when doing threaded update.
- doneMake lock-free guarded allocator with small memory overhead.
Results
Here're results of project development from users perspective.