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
path: root/source
AgeCommit message (Collapse)Author
2017-11-28Cleanup (remove commented OMP directive).Bastien Montagne
2017-11-28Removing OMP: BKE's tracking_stabilize.Bastien Montagne
Again, 2 times quicker with BLI than with OMP (from about 5ms to 2.5ms per frame for the parallelized loop, on a rather small video...).
2017-11-28makesdna/makesrna: silence output by defaultCampbell Barton
No need to print status for basic & reliable operations, build systems can output operations they run if needed, or debug output changed in the source if developers are debugging. Nice for ninja, so any printed text hints at a problem to fix.
2017-11-27Fix T53145: bevel tool does not start with amount at zero.Brecht Van Lommel
2017-11-27Cleanup: indentationSergey Sharybin
2017-11-27Remove workaround for loopcut and DM stabilitySergey Sharybin
Neither me nor Campbell could redo the issue, lets get rid of this workaround and fix it properly if still needed.
2017-11-27Depsgraph: Make sure unexpected configuration does not happenSergey Sharybin
2017-11-27Sequencer: Fix missing FX compositor when starting rendering from frame with ↵Sergey Sharybin
DoF disabled
2017-11-27Sequencer: Add option to render OpenGL preview with DoFSergey Sharybin
The title says it all actually, controlled with DoF check box next to textured solid check box. Thanks Campbell for review!
2017-11-27Refactor view3d offscreen drawing to avoid having multiple boolean argumentsSergey Sharybin
This is fully unreadable to have lots of boolean arguments scattered across the whole argument list. What does `false, true, true` mean in terms of behavior? Replace those with bitfield which has advantage of having more human readable meaning.
2017-11-27Tracking: Cleanup. make code friendly for multi-column editingSergey Sharybin
2017-11-27Cleanup: incorrect commentCampbell Barton
2017-11-26Cleanup: ImageEditor's mask drawing code was re-implementing ↵Bastien Montagne
`BKE_maskrasterize_buffer`! So this deduplicates and simplifies code, yeah. Also, as an odd bonus, new code seems slighly quicker than previous one (about 5 to 10% quicker).
2017-11-26Removing OMP: BKE's mask_rasterize.cBastien Montagne
Once again nothing much to say here, except that whole mask rendering process from VSE is about 25% quicker now. ;)
2017-11-26Removing OMP: autotrack BKE code.Bastien Montagne
Pretty straightforward this time, we already have a single struct pointer containing all needed data (or nearly). And we gain about 10-15% speed on tracking! :)
2017-11-26Removing OMP: bmesh_operators.cBastien Montagne
Two more 'not really useful' cases (OMP only shows some noticeable speedup with above 1M elements, and since this is quick operation anyway compared to even ather basic operators, gain is in the 1% area of total processing time in best case). So not worth parallelizing here, we'll gain much more on tackling heavy operations. ;) And BMesh is free from OMP now!
2017-11-26Removing OMP: bmesh_interp.cBastien Montagne
Performances tests on this one are quite surprising actually... Parallelized loop itself is at least 10 times quicker with new BLI_task code than it was with OMP. And subdividing e.g. a heavy mesh with 3 levels of multires (whole process) takes 8 seconds with new code, while 10 seconds with OMP one. And cherry on top, BLI_task code only uses about 50% of CPU load, while OMP one was at nearly 100%! In fact, I suspect OMP code was not properly declaring outside vars, generating a lot of uneeded locks. Also, raised the minimum level of subdiv to enable parallelization, tests here showed that we only start to get significant gain with subdiv levels of 4, below single threaded one is quicker.
2017-11-26Removing OMP: nuke last usages in bmesh_mesh.cBastien Montagne
Those three ones were actually giving no significant benefits, in fact even slowing things down in one case compared to no parallelization at all (in `BM_mesh_elem_table_ensure()`). Point being, once more, parallelizing *very* small tasks (like index or flag setting, etc.) is nearly never worth it. Also note that we could not easlily use per-item parallel looping in those three cases, since they are heavily relying on valid loop-generated index (or are doing non-threadable things like allocation from a mempool)...
2017-11-26Cleanup: rename edge -> edgesCampbell Barton
2017-11-26Minor improvement to last commitCampbell Barton
Don't operate on multiple boundaries at once, instead keep collapsing from the first selected boundary.
2017-11-26BMesh: improve edge rotate when edges share facesCampbell Barton
Previously outcome depended on order of edges, now the longest boundary edges are rotated first, then the faces connected edges. This gives more predictable results, allowing regions containing a vertex fan to be rotated onto the next vertex.
2017-11-26Cleanup: move edge-rotate into own fileCampbell Barton
2017-11-26Fix T53393: Change from 'd' key to 'draw' panel button causes pencil to be ↵Joshua Leung
activated immediately instead of upon LMB
2017-11-26Fix for Fix (c): broken atomic lock in own bmesh code.Bastien Montagne
That was a nasty one, Debug build would never have any issue (even tried with 64 threads!), but Release build would deadlock nearly immediately, even with only 2 threads! What happened here (I think) is that gcc optimizer would generate a specific path endlessly looping when initial value of virtual_lock was FLT_MAX, by-passing re-assignment from v_no[0] and the atomic cas completely. Which would have been correct, should v_no[0] not have been shared (and modified) by multiple threads. ;) Idea of that (broken) for loop was to avoid completely calling the atomic cas as long as v_no[0] was locked by some other thread, but... Guess the avoided/missing memory barrier was the root of the issue here. Lesson of the evening: Remember kids, do not trust your compiler to understand all possible threading-related side effects, and be explicit rather than elegant when using atomic ops! Side-effect lesson: do check both release and debug builds when messing with said atomic ops...
2017-11-25Fix broken atomic_cas lock in own recent commit in bmesh.Bastien Montagne
Using atomic cas correctly is really hairy... ;) In this case, the returned value from cas needs to validate *two* conditions, it must not be FLT_MAX (which is our 'locked' value and would mean another thread has already locked it), but it also must be equal to previously stored value... This means we need two steps per loop here, hence using a 'for' loop instead of a 'while' one now. Note that collisions are (as expected) very rare, less than 1 for 10k typically, so did not catch the issue initially (also because I was mostly working with release build to check on performances...).
2017-11-24Depsgraph: Cleanup, indentationSergey Sharybin
2017-11-24Depsgraph: Allow finding operations after construction is doneSergey Sharybin
2017-11-24Depsgraph: Deduplicate operation node finding logicSergey Sharybin
2017-11-24Depsgraph: Use proper return type for find_node methodSergey Sharybin
2017-11-24Depsgraph: Use get_ prefix for function which expect operation to existsSergey Sharybin
2017-11-24Depsgraph: Make has_ prefixed function to return booleanSergey Sharybin
2017-11-24Depsgraph: Introduce explicit method which finds operation or returns NULLSergey Sharybin
2017-11-24Depsgraph: Make more clear what find_operation() is doing for componentSergey Sharybin
2017-11-24Cleanup leftover timing debug prints from own recent commits.Bastien Montagne
Sorry about that...
2017-11-24Cleanup: -Wnonnull-compare GCC warningCampbell Barton
2017-11-24Minor cleanup for own recent commits.Bastien Montagne
2017-11-23Getting rid of OMP: first usage of new parallel BMesh items iteration instead.Bastien Montagne
`BM_mesh_normals_update` was converted from OMP to new parallel iterator code, basic test with heavily subdivided cube (24.5k faces) gives: - old OMP code: average 10ms per run. - new BLI_task code: average 6ms per run. So new code seems to be easily 40% quicker, in addition to getting rid of OMP. ;) Reviewers: sergey, campbellbarton Differential Revision: https://developer.blender.org/D2930
2017-11-23BMesh: add limited support for parallelization over some basic iterators.Bastien Montagne
This merely uses new memloop/task looper over vertex/edge/face mempools. Quite obviously, only BM_VERTS/EDGES/FACES_OF_MESH iterators are supported.
2017-11-23Add a new parallel looper for MemPool items to BLI_task.Bastien Montagne
It merely uses the new thread-safe iterators system of mempool, quite straight forward. Note that to avoid possible confusion with two void pointers as parameters of the callback, a dummy opaque struct pointer is used instead for the second parameter (pointer generated by iteration over mempool), callback functions must explicitely convert it to expected real type. Also added a basic gtest for this new feature.
2017-11-23Add ability to use more than one mempool iterator simultaneously.Bastien Montagne
This will allow threaded tasks to 'consume' all mempool items in parallel tasks, each one working on a whole chunk at once (to reduce concurrency managing overhead).
2017-11-23Add non-gcc variant of static assert macro.Bastien Montagne
Adapted from http://www.pixelbeat.org/programming/gcc/static_assert.html. Note that this macro just discards error message, so error when building is much less nice than with gcc's _Static_assert... But error log will point to right place in code, so should still be OK.
2017-11-23Fix T53145: bevel tool fails when used a second time.Brecht Van Lommel
Pixel size was not initial early enough. For first time this was not a problem because the bevel amount starts at 0 then, and after the mouse moves the pixel size is initialized. For the second time the bevel amount starts at a non-zero value, and it failed then.
2017-11-23Fix T53360: crash with GLSL bump mapping and missing group output node.Brecht Van Lommel
2017-11-23Fix T53276: encoding output quality UI clarification.Brecht Van Lommel
2017-11-23Fix inaccuracy when storing material ID pass in half float multilayer EXR.Brecht Van Lommel
These and other non-RGB passes should always be stored as full float, the precision loss is too unpredictable. Related to T53381, but that one is about file output nodes where we don't know the type of data being saved currently.
2017-11-23Fix T53348: Cycles difference between gradient texture on CPU and GPU.Brecht Van Lommel
2017-11-23atomic_ops: add char versions of uint8_t atomic primitives.Bastien Montagne
2017-11-23Cleanup: use signed atomic ops when needed.Bastien Montagne
2017-11-23Depsgraph: Cleanup, deduplicate code around component registrationSergey Sharybin
2017-11-23Depsgraph: Cleanup, split build_object() a bitSergey Sharybin