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-11-29Cleanup: rename bpy_util -> bpy_capi_utilsCampbell Barton
This is for internal CAPI use only, avoid confusion w/ bpy.utils module.
2017-11-29Cleanup: Python importsCampbell Barton
Split over lines to diff more easily.
2017-11-29PyAPI: add function to check any mathutils typeCampbell Barton
Also add CheckExact versions of type checking macros.
2017-11-29RNA: sync API changes from 2.8Campbell Barton
2017-11-29RNA: Allow structs to define tags for their propertiesJulian Eisel
Adds support for defining a number of tags as part of the rna-struct definition, which its properties can set similar to property-flags. BPY supports setting these tags when defining custom properties too. * To define tags for a struct (which its properties can use then), define the tags in an `EnumPropertyItem` array, and assign them to the struct using `RNA_def_struct_property_tags(...)`. * To set tags for an RNA-property in C, use the new `RNA_def_property_tags(...)`. * To set tags for an RNA-property in Python, use the newly added tags parameter. E.g. `bpy.props.FloatProperty(name="Some Float", tags={'SOME_TAG', 'ANOTHER_TAG'})`.
2017-11-29PyAPI: PyC_Err_PrintWithFunc utility functionCampbell Barton
Move function error printing utility into py_capi_utils.
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-26Fix T53349: AO bounces not working correct with OpenCL.Mathieu Menuet
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-23atomic_ops: add `atomic_cas_float` helper.Bastien Montagne
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-23atomic_ops: Copy/adapt static assert macro from BLI_utildefines, and use it.Bastien Montagne
Checking for type sizes is much nicer with a static assert!
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.