Revision ded22d7 by Sergey Sharybin July 1, 2013, 21:23 (GMT) |
Replace stupid static balancing with task-based one Initially i wanted to have some really simple and basic threading scheduler and wrote one based on traversing depsgraph in advance. But it ended up in some issues with the single-pass traverse i did which didn't gather all the dependencies actually. That was for sure solvable, but it ended up in a bit of time consuming thing and with huge help of Brecht's patch it was faster just to write proper balancing. But it's again really basic thing, which could be easily changed depending on feedback and design decisions from Joshua, So for now it works in the following way: - Currently DagNode is used for threaded evaluaiton, meaning traversing actually happens for DagNodes. This is easier than converting DAG to a graph where only objects are stored, but required adding one int field to DagNode for faster runtime checks. We could change this later when it'll be clear how and where we'll store evaluation data, but for now it work pretty ok. - The new field is called "valency" and it's basically number of node parents which needs to be evaluated before the node itself could be evaluated. - Nodes' valency is getting initialized before threading, and when node finished to update valency of it's childs is getting decreased by one. And if it happens so child's valency became zero, it's adding to task pool. - There's thread lock around valency update, it'll be replaced with spinlock in nearest future. - Another update runtime data is node color. White nodes represents objects, gray one non-objects. Currently it's needed to distinguish whether we need to call object_handle_update on node->ob or not. In the future it could be replaced with node->type to support granularity, meaning we then could update object data separately from object itself. - Needed to add some public depsgraph functions to make it possible to traverse depsgraph without including depsgraph private header to other files. This change doesn't make code anyhow more stable, but solves update order issues noticed while working on fixing underlying bugs. Threaded update is still ifdef-ed for until curves and armatures are considered thread-safe, which is next step to be done. |
Revision e00f5d1 by Sergey Sharybin July 1, 2013, 21:23 (GMT) |
Task scheduler ported to C Patch by Brecht, which in original version also gets rid of ThreadedWorker in favor of new task scheduler and ports some areas to it. Kudos to Brecht for this work! |
Revision 3d845b4 by Campbell Barton July 1, 2013, 20:27 (GMT) |
move api functions from r57909 into BKE. |
Revision 11145c7 by Gaia Clary July 1, 2013, 19:30 (GMT) |
Restrict Weight Edit Panel to mesh/lattice Edit and Weight Paint vertex selection mode |
Revision 465a719 by Thomas Dinges July 1, 2013, 15:23 (GMT) |
Merged revision(s) 57828-57907 from trunk/blender into soc-2013-dingto |
Revision 472f746 by Joshua Leung July 1, 2013, 14:58 (GMT) |
NLA Bugfix: When clicking on a channel name in the channel list while still in tweakmode, this will now result in tweakmode being exited instead of going into a weird limbo-land where channel selection has changed (but tweakmode is still active but not drawn) |
Revision e683030 by Brecht Van Lommel July 1, 2013, 14:49 (GMT) |
Fix incorrect GLSL bump mapping in editmode when the UV coordinates are flipped, was not passing sign on to GLSL shader. |
Revision 7a304c2 by Joshua Leung July 1, 2013, 14:14 (GMT) |
Bugfix [#35744] FCurve select changes on Graph Editor Resize Selection state of F-Curves is lost when resizing the Graph Editor. The problem was that SIPO_TEMP_NEEDCHANSYNC was getting set in the graph_init() callback, which gets called everytime the view resizes, and not just the very first time this happens. However, setting this flag forces the selection state to the updated/pulled from the scene data. In the past, it was necessary to set this flag so that we could force F-Curve colors to get initialised correctly. However, things probably changed at some point, so this behaviour is no longer needed. At worst now, opening a new graph editor may not show F-Curve selection correctly synced with the viewport, though that's easily worked around by reselecting whatever it is in the 3d view. |
Revision 64bc3ce by Joshua Leung July 1, 2013, 13:57 (GMT) |
Bugfix [#35856] Bones gets scaled chaotically when during NLA Strip Blend In/Out This was one of the consequences of r.57333 (i.e. influence shouldn't be ignored on the first strip that animates a channel), as scale should really default to a base value of 1 (instead of things being blended against 0 as per all other properties). The end result was that bones were getting scaled to zero here when the influence of their strip fell to zero. Now, we use the RNA default values of properties to initialise their initial values. This may/may not work well in all cases: 1) For properties which don't have the appropriate RNA defaults set, this will be problematic. But, most properties people are likely to animate here I think are already set up correctly. 2) It may not always be nice to have values "snapping back" to default values. In this case, you should still be defining a strip at the bottom of your NLA stack which defines what the appropriate rest poses *should* be for your shot. |
Revision 72a5c1f by Joshua Leung July 1, 2013, 13:19 (GMT) |
Bugfix [#35887] Keyframes inserted at wrong time on offsetted NLA Strips when using "Auto Keying" + "Insert Available Only" Patch from Campbell. The problem was that NLA offset/mapping correction was only done when no destination action was supplied to insert_keyframe(). In most cases, this is not a problem, since all normal keyframing goes through keyingset or the insert- button operators, and these just pass action=NULL (since they're too lazy to look it up). However, there is one situation where this bug gets triggered (the specific combination of autokeyframing and "insert available only"), where the caller of insert_keyframe() actually passed in an action (to prevent it from creating one itself!). |
Revision 4f3f957 by Joshua Leung July 1, 2013, 13:02 (GMT) |
Bugfix [#35936] Can't create new vertex group when using Ctrl G menu This was caused by r.57812 There were two problems here: 1) vertex_group_vert_select_unlocked_poll() had faulty logic which meant that it always failed when there were no vgroups present yet - the final return always just fell through 2) Since the "Assign to New Groups" option was actually implemented using the same operator as "Assign to Active Group" (just with an extra parameter set), if the active group was locked, it was not possible to "Assign to New Group" (even though a new group would not be locked). |
Revision b763876 by Sergey Sharybin July 1, 2013, 11:00 (GMT) |
Made modifiers_getVirtualModifierList safe for threading Move static variables to context filling in by this fcuntion and owned by a callee function. This ensures no conflicts between threads happens because of static variables used in this function. Also moved modifier types and virtual modifiers data to a function called from creator. This is needed to be sure all the information is properly initialied to the time when threads starts to use this data. |
Revision 16efede by Sergey Sharybin July 1, 2013, 09:07 (GMT) |
Revision 61d37cd by Sergey Sharybin July 1, 2013, 08:53 (GMT) |
Fix for Make Local -> All not working correct with multy-user datablocks Make Local operator uses BKE_library_make_local function if all the datablocks needs to be made local. And this function was calling id_clear_lib_data for every datablock, which only clears library data. But this function doesn't work correct for datablocks which areshared by multiple users (this is also mentioned in comment for this function). This lead to situations when two datablocks shares the same runtime data leading to crashes later. For example making everythig local in scales cycles scene from durian ends up in a crash when toggling rig edit mode. Solved by using id_make_local instead of id_clear_lib_data, which will ensure all the data are nicely expanded and made local. Checked by Brecht, thanks fr the review! |
Revision 0baec4c by Campbell Barton July 1, 2013, 08:25 (GMT) |
fix [#35858] there were two bugs here, hidden faces were occluding in vertex selection mode. |
Revision e9208e9 by Campbell Barton July 1, 2013, 07:15 (GMT) |
bridge tool: calculate face normals before triangulating, own error when removing normal recalc from the bmesh operator. also rename `Fill Grid` -> `Grid Fill` to match `Beauty Fill` |
Revision 73d32fd by Campbell Barton July 1, 2013, 07:12 (GMT) |
add type checking assert in bmesh operator iterator. |
Revision 6321f11 by Campbell Barton July 1, 2013, 01:25 (GMT) |
tweak to commit r57891, dont draw hidden faces/edges in editmode. |
Revision c729c5a by Campbell Barton July 1, 2013, 00:42 (GMT) |
fix [#35911] Show weights not working with a weight edit modifier in edit mode |
Revision b3ceab8 by Campbell Barton June 30, 2013, 23:50 (GMT) |
add some missing members to opengl debug print, also use a macro to avoid passing each arg twice. |
|
|
|


Master Commits
MiikaHweb | 2003-2021