Age | Commit message (Collapse) | Author |
|
|
|
Those were never finished nor used. Again, starting from clean
state before we go into more complicated details.
|
|
Was never used or worked on in ages, if any of this code is
needed in the future it'll need to be redone anyway.
|
|
This was never finished or done or used, no reason to keep it.
Better to simplify things before adding complexity of overrides
and copy-on-write.
|
|
It was never actually used apart from being stored at a construciton time.
This caused some redundancy and ncertanty about which relation type to use
during construciton (often existing types were not close enough to particular
use case).
|
|
The idea is to accumulate all new tasks in a thread local queue
first without doing any thread synchronization (aka, locks and
conditional variables) and move those tasks to a scheduler queue
once they are all ready. This way we avoid per-task-pool lock
and only have one lock per bunch of tasks.
This is particularly handy when scheduling new dependency graph
node children. Brings FPS of cached simulation from the linked
below file from ~30 to ~50.
See documentation for BLI_task_pool_delayed_push_{begin, end}
and for TaskThreadLocalStorage::do_delayed_push.
Fixes T50027: Rigidbody playback and simulation performance regression with new depsgraph
Thanks Bastien for the review!
|
|
This is a corresponding part of 7dda3cf.
|
|
Seems to be a copy-paste error from code above.
|
|
|
|
Those are not depsgraph or C++ specific and can be used by everyone.
|
|
This way we always have predictable behavior, especially from the
performance point of view. Additionally, if some bottleneck is found
in stack implementation it'll be easier for us to address.
|
|
This way everyone can benefit from it, not only dependency graph.
|
|
Second round of fix, was broken by 843be91.
|
|
|
|
Was preventing update in 3DView etc. when changing something in the
World's NodeTree, especially annoying in blender2.8 branch (since legacy
depsgraph has been removed there), but also affecting master.
|
|
The change was initially needed for Blender 2.8 branch but the actual
function was reverted in there. So no reason to keep dead unused
placeholder in the dependency graph.
This reverts commit fd69ba225540cde5e4c1fa651fb02df21ea0a143.
|
|
Spotted by Luca, thanks!
|
|
|
|
Need to flush layers from components back to ID node.
|
|
This area is a subject of reconsideration, so for now used simplest
way possible -- ensure depsgraph's nodes have proper layer flags
when going in and out of local mode.
|
|
The iossue was caused by 0371ef1/
|
|
Need to expand all object's dupli-groups, not only the dupli-groups
of objects directly linked to the scene.
|
|
|
|
Lower risk of forgetting to update some values here.
|
|
|
|
depsgraph
The thing i'm really starting to hate is the requirement to specify both
operation code and node type. Seems to be duplicated enums without real
need for that.
|
|
Suspended pools allows to push huge amount of initial tasks
without any threading synchronization and hence overhead.
This gives ~50% speedup of cached rigid body with file from
T50027 and seems to have no negative affect in other scenes
here.
|
|
This is something what should be done in the task scheduler instead
with local thread queues so we handle this in a single place.
|
|
This feature was adding extra complexity to task scheduling
which required yet extra variables to be worried about to be
modified in atomic manner, which resulted in following issues:
- More complex code to maintain, which increases risks of
something going wrong when we modify the code.
- Extra barriers and/or locks during task scheduling, which
causes extra threading overhead.
- Unable to use some other implementation (such as TBB) even for
the comparison tests.
Notes about other changes.
There are two places where we really had to use that limit.
One of them is the single threaded dependency graph. This will
now construct a single-threaded scheduler at evaluation time.
This shouldn't be a problem because it only happens when using
debugging command line arguments and the code simply don't
run in regular Blender operation.
The code seems a bit duplicated here across old and new
depsgraph, but think it's OK since the old depsgraph is already
gone in 2.8 branch and i don't see where else we might want
to use such a single-threaded scheduler.
When/if we'll want to do so, we can move it to a centralized
single-threaded scheduler in threads.c.
OpenGL render was a bit more tricky to port, but basically we
are using conditional variables to wait background thread to
do all the job.
|
|
|
|
|
|
`cd_flag` tends to be used for CustomData flags in mesh area, while for
library_query those are rather callback flags...
|
|
|
|
This is a ground work for the upcoming changes in Blender 2.8 branch
where we need to do special actions to reconstruct shaders when
material changes.
|
|
|
|
The idea was to link something to a parent, but the point is:
we must not pass owner deep and then have any parent-type-related
logic implemented in the "children".
|
|
|
|
depsgraph
Was missing relations for the set scenes.
Perhaps not ideal solution, but should be good enough for now.
|
|
Otherwise it was possible to get ID tags cleared in the middle
of DEG construction when there are set scenes used.
|
|
armature
|
|
It is required to have world-space bone position, which consists of armature
object transform and local bone transform.
|
|
Otherwise it's possible to cause infinite update loop in Cycles viewport.
Gets a bit messy logic, need to revisit this..
|
|
This kind of keeps threads "warmer" and should in theory give better
cache coherency bringing some %% of speedup. It was already tested
few months ago and it gave few % speedup in barber shop, but was
reverted due to some bone popping. The popping is now fixed so it
should be fine to use new scheduling policy.
|
|
|
|
It'll be dependent on time via Time Source -> Rebuild RB World chain.
|
|
There is always an uber eval node on the way. so we can avoid creating
some relations here in order to speed up both construction time and
evaluation.
|
|
|
|
Reported by Dalai in IRC, thanks!
|
|
evaluate constraints
|
|
The issue was caused by wrong object re-tag needed to have proper dependnecies
update for OpenSubdiv.
|