Minutes from 82nd OpenVDB TSC meeting, March 2nd, 2021, (EDT)

Attendees: *Nick* A., *Jeff* L., *Ken* M., *Dan* B, *Andre* P.

Additional Attendees: Johannes Meng (Intel), JT Nelson (Blender),
Bruce Chernaik (Intel), Laura Lediaev (ImageWorks)

Regrets: none

Agenda:

1) Confirm Quorum
2) Secretary
3) Forum
4) Git Hub Tagging of Issues
5) SOP Extrapolate
6) Dynamic Node Manager (PR 983)
7) Filter PR
8) Next meeting

1) Confirm Quorum

Quorum is present.

2) Secretary

Secretary is Jeff Lait.

3) Forum

No new issues.

Question on how to scatter on surface: existing scatter is the right answer.

Build question.  Creating own visual studio project.  Getting bad allocations, likely linking to wrong c-runtime in MSVC causes problems when you hit strings.  

4) Git Hub Tagging of Issues

Nick has sent the document.  How to categorize/triage bugs/enhancements.  Questions may just need documentation, but could not be clear, or require investigation.  Github is also rolling out forums.  This might solve the question issue, and make the forum something we transition from.  The google forum has a lot of historical information, so while splitting won't erase the history, in practice it will make it less accessible.

How to deal with unclear issues?  Or we've answered, but is there no action task? Currently the templates do labels.  Not sure if users can manipulate labels, probably not.  We could have a template that forces labels; or a github action to add a label.  Blender added an extra space for closed-but-not-fixed issues: to-do.  Keeping features open helps users know they are still alive and not feel disenfranchised.  We do need to close issues.  What about an idea that won't even contribute to the project?    Misguided apoprach?  Won't fix - is this something we would accept a PR if someone else did it.  So there is a Won't Fix or Won't Accept?

Continue conversation on the TSC thread.

5) SOP Extrapolate

Extrapolate PR is updated again.  Bug on the vdb primitive type not updating is fixed.  Need to explicitly makeGridUnique to get the types to transfer properly.  Extrapolate with fog vs sdf to extension; instead of having two modes, have one with a checkbox if the result should be sdf or not.  Jeff is to look at it, along with example .hip file.   Ready to merge once non-Andre has accepted it.

6) Dynamic Node Manager (PR 983)

Problem of a long time between implementation and discussion.  Change to copy-by-ref broke other in-flight changes.  This was reverted, and this slowed down the stuff assuming copy-by-ref.  This allows node manager to be copy-by-value; and dynamic node manager to be copy-by-ref.  Already the two systems had split.  If we were fresh, node manager should have been copy by reference.  Easier to convert copy-by-ref to value; hard to do the opposite.  Problem is the operator can't have significant data or you get copies at each level.  And the dynamic node manager has its own wrapper on the operator. tbb::foreach is const reference.  But parallel reduce needs to be mutable.  Do we need to wrap tbb::foreach with new API?  A standalone wrapper API.  EXR and boost have been the significant problems.  There is a value for TBB being optional, but it hasn't been the pain point.  Larry Gritz had this issue.  We agree on the need for wrappers for TBB.  But there is contention on whether we should provide a default thread pool or not.  Or wait for C++20?

Back to the dynamic node manager; a const reference works better than a const value as it will avoid copies.  The foreach flag has a shared flag, but this doesn't work with lambdas.  Like the threaded flag, telling the op if you want it copied or not would be good.  Thread accessors should have been thread local storage, not per task.

This is fine now, but maybe in the future people will be on 8 for a while and then upgrade to 8.1 and be surprised.  This may require 7.2 to update with the new version.  We are only breaking if people are using mutable.  But they can be accidentally using mutable if they use accessors.  These are mutable internally, but appear const.

This will be a patch release.  We patch 8.1 and 7.X.  The 8.0 doesn't need to be patched as it is replaced.  The 7.X has to be patched as people are on VFX platform.

7) Filter PR

There are optimizations possible, but this should be committed as is.  Maybe there is a sort of topology tree?  A sort of dummy leaf that is a single boolean.  This is sort of tiles, but topology union was requiring leaf nodes; so they had to actually exist in the source rather than just be tiles.  Want to have a bunch of tiles added to one tree, and stamp to destination and densify. 

8) Next meeting

Next meeting is March 9th, 2021. 12pm-1pm EST (GMT-5).
