From d8c33bdf8cfc356e84da24f0aeec709af307148a Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Wed, 30 Oct 2024 14:42:05 -0700 Subject: [PATCH 01/17] Update dependencies and enforce minimum versions Signed-off-by: Dan Bailey --- CMakeLists.txt | 4 ++-- ci/install_llvm_windows.sh | 2 +- cmake/config/OpenVDBVersions.cmake | 27 +++++++++++----------- doc/dependencies.txt | 22 +++++++++--------- nanovdb/nanovdb/CMakeLists.txt | 8 +++---- openvdb_ax/openvdb_ax/test/TestAXCmd.cmake | 2 +- openvdb_cmd/vdb_render/CMakeLists.txt | 4 ++-- openvdb_cmd/vdb_tool/CMakeLists.txt | 8 +++---- pyproject.toml | 4 +--- 9 files changed, 39 insertions(+), 42 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c8d061bc73..2feab47219 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -479,8 +479,8 @@ endif() if(OPENVDB_BUILD_PYTHON_MODULE OR (OPENVDB_BUILD_NANOVDB AND NANOVDB_BUILD_PYTHON_MODULE)) # Call find_package(Python ...) - find_package(Python 3.8 REQUIRED COMPONENTS Development Interpreter) - find_package(nanobind REQUIRED) + find_package(Python ${MINIMUM_PYTHON_VERSION} REQUIRED COMPONENTS Development Interpreter) + find_package(nanobind ${MINIMUM_NANOBIND_VERSION} REQUIRED) if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_PYTHON_VERSION) if(Python_VERSION VERSION_LESS ${FUTURE_MINIMUM_PYTHON_VERSION}) diff --git a/ci/install_llvm_windows.sh b/ci/install_llvm_windows.sh index 642013d46a..c174c50296 100644 --- a/ci/install_llvm_windows.sh +++ b/ci/install_llvm_windows.sh @@ -4,7 +4,7 @@ set -ex LLVM_CRT="$1" -git clone -b llvmorg-12.0.0 --depth 1 https://github.com/llvm/llvm-project.git llvm +git clone -b llvmorg-14.0.0 --depth 1 https://github.com/llvm/llvm-project.git llvm cd llvm mkdir .build diff --git a/cmake/config/OpenVDBVersions.cmake b/cmake/config/OpenVDBVersions.cmake index fadad1104d..fd175e629e 100644 --- a/cmake/config/OpenVDBVersions.cmake +++ b/cmake/config/OpenVDBVersions.cmake @@ -34,24 +34,23 @@ if(NOT DISABLE_DEPENDENCY_VERSION_CHECKS) # What's usually important is that the version of libstdc++ and glibc in use # matches. Compilers other than GCC should provide options to ensure this # targetting e.g. --gcc-toolchain and -fgnuc-version with Clang. - set(MINIMUM_GCC_VERSION 9.3.1) + set(MINIMUM_GCC_VERSION 11.2.1) set(MINIMUM_CLANG_VERSION 5.0) set(MINIMUM_ICC_VERSION 19) - set(MINIMUM_MSVC_VERSION 19.28) # 1928 (Visual Studio 2019 Version 16.8 + 16.9) + set(MINIMUM_MSVC_VERSION 19.30) # 1928 (Visual Studio 2019 Version 16.8 + 16.9) - # Should be 1.76 for VFX 22, but only version in apt is 1.73 - set(MINIMUM_BOOST_VERSION 1.73) + set(MINIMUM_BOOST_VERSION 1.80) set(MINIMUM_PYBIND_VERSION 2.9.1) set(MINIMUM_IMATH_VERSION 3.1) set(MINIMUM_OPENEXR_VERSION 3.1) set(MINIMUM_ZLIB_VERSION 1.2.7) set(MINIMUM_TBB_VERSION 2020.3) - set(MINIMUM_LLVM_VERSION 10.0.0) + set(MINIMUM_LLVM_VERSION 13.0.0) set(MINIMUM_BLOSC_VERSION 1.17.0) set(MINIMUM_GLFW_VERSION 3.1) - set(MINIMUM_PYTHON_VERSION 3.9.1) - set(MINIMUM_NUMPY_VERSION 1.20.0) + set(MINIMUM_PYTHON_VERSION 3.10) + set(MINIMUM_NUMPY_VERSION 1.23.0) set(MINIMUM_GOOGLETEST_VERSION 1.10) set(MINIMUM_LOG4CPLUS_VERSION 1.1.2) @@ -66,20 +65,20 @@ endif() # @note At the time of writing, any variables that are commented out don't # have target transitional versions. -set(FUTURE_MINIMUM_GCC_VERSION 11.2.1) -set(FUTURE_MINIMUM_MSVC_VERSION 19.30) # 1930 (Visual Studio 2022) +# set(FUTURE_MINIMUM_GCC_VERSION 11.2.1) +# set(FUTURE_MINIMUM_MSVC_VERSION 19.30) # set(FUTURE_MINIMUM_ICC_VERSION 19) # set(FUTURE_MINIMUM_CXX_STANDARD 20) set(FUTURE_MINIMUM_CMAKE_VERSION 3.20) -# set(FUTURE_MINIMUM_OPENEXR_VERSION 3.1) -set(FUTURE_MINIMUM_BOOST_VERSION 1.80) +set(FUTURE_MINIMUM_OPENEXR_VERSION 3.2) +set(FUTURE_MINIMUM_BOOST_VERSION 1.82) set(FUTURE_MINIMUM_GLFW_VERSION 3.3) set(FUTURE_MINIMUM_LOG4CPLUS_VERSION 2.0) # set(FUTURE_MINIMUM_BLOSC_VERSION 1.17.0) # set(FUTURE_MINIMUM_TBB_VERSION 2020.3) -set(FUTURE_MINIMUM_PYTHON_VERSION 3.10) -set(FUTURE_MINIMUM_NUMPY_VERSION 1.23.0) +set(FUTURE_MINIMUM_PYTHON_VERSION 3.11) +set(FUTURE_MINIMUM_NUMPY_VERSION 1.26.0) # set(FUTURE_MINIMUM_HOUDINI_VERSION 20.0) -set(FUTURE_MINIMUM_LLVM_VERSION 13.0.0) +# set(FUTURE_MINIMUM_LLVM_VERSION 13.0.0) diff --git a/doc/dependencies.txt b/doc/dependencies.txt index c20ba77bb1..2ea810e5ea 100644 --- a/doc/dependencies.txt +++ b/doc/dependencies.txt @@ -56,22 +56,22 @@ OpenVDB Documentation | Doxygen | - Package | Minimum | Recommended | Description | apt-get | Homebrew | Source -------------- | ------- | ----------- | ----------------------------------------------------------------- | ------- | -------- | ------ -CMake | 3.18 | Latest | Cross-platform family of tools designed to help build software | Y | Y | https://cmake.org -GCC | 9.3.1 | 11.2.1 | C++ 17 Compiler: The GNU Compiler Collection | Y | Y | https://www.gnu.org/software/gcc +CMake | 3.20 | Latest | Cross-platform family of tools designed to help build software | Y | Y | https://cmake.org +GCC | 11.2.1 | 11.2.1 | C++ 17 Compiler: The GNU Compiler Collection | Y | Y | https://www.gnu.org/software/gcc Clang | 5.0 | Latest | C++ 17 Compiler: A C language family frontend for LLVM | Y | Y | https://clang.llvm.org Intel ICC | 19 | Latest | C++ 17 Compiler: Intels C++ Compiler | Y | Y | https://software.intel.com/en-us/c-compilers -MSVC | 19.28 | 19.30 | C++ 17 Compiler: Microsoft Visual C++ Compiler | Y | Y | https://visualstudio.microsoft.com/vs +MSVC | 19.30 | 19.30 | C++ 17 Compiler: Microsoft Visual C++ Compiler | Y | Y | https://visualstudio.microsoft.com/vs Imath | 3.1 | Latest | Half precision floating points | Y | Y | http://www.openexr.com OpenEXR | 3.1 | Latest | EXR serialization support | Y | Y | http://www.openexr.com -TBB | 2020.2 | 2020.3 | Threading Building Blocks - template library for task parallelism | Y | Y | https://www.threadingbuildingblocks.org +TBB | 2020.3 | 2020.3 | Threading Building Blocks - template library for task parallelism | Y | Y | https://www.threadingbuildingblocks.org ZLIB | 1.2.7 | Latest | Compression library for disk serialization compression | Y | Y | https://www.zlib.net -Boost | 1.73 | 1.80 | Components: iostreams | Y | Y | https://www.boost.org -LLVM | 10.0.0 | 13.0.0* | Target-independent code generation | Y | Y | https://llvm.org/ -Bison | 3.0.0 | 3.7.0 | General-purpose parser generator | Y | Y | https://www.gnu.org/software/gcc -Flex | 2.6.0 | 2.6.4 | Fast lexical analyzer generator | Y | Y | https://github.com/westes/flex -Python | 3.9.1 | 3.10 | The python interpreter and libraries | Y | Y | https://www.python.org +Boost | 1.80 | 1.82 | Components: iostreams | Y | Y | https://www.boost.org +LLVM | 13.0.0 | 15.0.0* | Target-independent code generation | Y | Y | https://llvm.org/ +Bison | 3.7.0 | 3.7.0 | General-purpose parser generator | Y | Y | https://www.gnu.org/software/gcc +Flex | 2.6.4 | 2.6.4 | Fast lexical analyzer generator | Y | Y | https://github.com/westes/flex +Python | 3.10 | 3.11 | The python interpreter and libraries | Y | Y | https://www.python.org nanobind | 2.0.0 | Latest | C++/python bindings | Y | Y | https://nanobind.readthedocs.io -NumPy | 1.20.0 | 1.23.0 | Scientific computing with Python | Y | Y | http://www.numpy.org +NumPy | 1.23.0 | 1.26.0 | Scientific computing with Python | Y | Y | http://www.numpy.org GoogleTest | 1.10 | Latest | A unit testing framework module for C++ | Y | Y | https://github.com/google/googletest CppUnit | 1.10 | Latest | A unit testing framework module for C++ | N | Y | https://freedesktop.org/wiki/Software/cppunit Blosc | 1.17.0* | 1.17.0 | Recommended dependency for improved disk compression | Y | Y | https://github.com/Blosc/c-blosc/releases @@ -145,7 +145,7 @@ apt-get install zlibc # zlib apt-get install libboost-iostreams-dev # Boost::iostream apt-get install libblosc-dev # Blosc # AX -apt-get install llvm-10-dev # LLVM +apt-get install llvm-15-dev # LLVM # Python apt-get install python-dev # Python apt-get install python-numpy # NumPy diff --git a/nanovdb/nanovdb/CMakeLists.txt b/nanovdb/nanovdb/CMakeLists.txt index 1c50d2eade..cb33dedde7 100644 --- a/nanovdb/nanovdb/CMakeLists.txt +++ b/nanovdb/nanovdb/CMakeLists.txt @@ -74,7 +74,7 @@ endif() #if(NANOVDB_BUILD_UNITTESTS OR NANOVDB_BUILD_BENCHMARK) if(NANOVDB_BUILD_UNITTESTS) - find_package(GTest REQUIRED) + find_package(GTest ${MINIMUM_GOOGLETEST_VERSION} REQUIRED) endif() if(NANOVDB_USE_CUDA) @@ -124,15 +124,15 @@ if(NANOVDB_USE_OPENVDB) endif() if(NANOVDB_USE_TBB AND NOT TARGET TBB::tbb) - find_package(TBB REQUIRED) + find_package(TBB ${MINIMUM_TBB_VERSION} REQUIRED) endif() if(NANOVDB_USE_BLOSC AND NOT TARGET Blosc::blosc) - find_package(Blosc REQUIRED) + find_package(Blosc ${MINIMUM_BLOSC_VERSION} REQUIRED) endif() if(NANOVDB_USE_ZLIB AND NOT TARGET ZLIB::ZLIB) - find_package(ZLIB REQUIRED) + find_package(ZLIB ${MINIMUM_ZLIB_VERSION} REQUIRED) endif() if(NANOVDB_USE_MAGICAVOXEL) diff --git a/openvdb_ax/openvdb_ax/test/TestAXCmd.cmake b/openvdb_ax/openvdb_ax/test/TestAXCmd.cmake index 7cccd639c4..117b9e97d0 100644 --- a/openvdb_ax/openvdb_ax/test/TestAXCmd.cmake +++ b/openvdb_ax/openvdb_ax/test/TestAXCmd.cmake @@ -33,7 +33,7 @@ set(SPHERE_VDB ${CMAKE_BINARY_DIR}/sphere.vdb) set(TORUS_VDB ${CMAKE_BINARY_DIR}/torus.vdb) if(DOWNLOAD_VDBS) - find_package(Python COMPONENTS Interpreter REQUIRED) + find_package(Python ${MINIMUM_PYTHON_VERSION} COMPONENTS Interpreter REQUIRED) if(NOT EXISTS ${SPHERE_VDB} OR NOT EXISTS ${TORUS_VDB} OR NOT EXISTS ${SPHERE_POINTS_VDB}) diff --git a/openvdb_cmd/vdb_render/CMakeLists.txt b/openvdb_cmd/vdb_render/CMakeLists.txt index f19134b2f1..0a63ba8115 100644 --- a/openvdb_cmd/vdb_render/CMakeLists.txt +++ b/openvdb_cmd/vdb_render/CMakeLists.txt @@ -17,11 +17,11 @@ if(USE_PNG) endif() if(USE_IMATH_HALF) - find_package(Imath CONFIG REQUIRED) + find_package(Imath ${MINIMUM_IMATH_VERSION} CONFIG REQUIRED) endif() if(USE_EXR) - find_package(OpenEXR CONFIG REQUIRED) + find_package(OpenEXR ${MINIMUM_OPENEXR_VERSION} CONFIG REQUIRED) endif() set(SOURCE_FILES main.cc) diff --git a/openvdb_cmd/vdb_tool/CMakeLists.txt b/openvdb_cmd/vdb_tool/CMakeLists.txt index f20d69d291..a58784b75c 100644 --- a/openvdb_cmd/vdb_tool/CMakeLists.txt +++ b/openvdb_cmd/vdb_tool/CMakeLists.txt @@ -51,12 +51,12 @@ if(OPENVDB_TOOL_USE_NANO) target_compile_definitions(vdb_tool_common INTERFACE "VDB_TOOL_USE_NANO") if(OPENVDB_TOOL_NANO_USE_ZIP) target_compile_definitions(vdb_tool_common INTERFACE "NANOVDB_USE_ZIP") - find_package(ZLIB REQUIRED) + find_package(ZLIB ${MINIMUM_ZLIB_VERSION} REQUIRED) target_link_libraries(vdb_tool_common INTERFACE ZLIB::ZLIB) endif() if(OPENVDB_TOOL_NANO_USE_BLOSC) target_compile_definitions(vdb_tool_common INTERFACE "NANOVDB_USE_BLOSC") - find_package(Blosc REQUIRED) + find_package(Blosc ${MINIMUM_BLOSC_VERSION} REQUIRED) target_link_libraries(vdb_tool_common INTERFACE blosc) endif() #target_include_directories(vdb_tool_common INTERFACE ${PROJECT_SOURCE_DIR}/../nanovdb/) @@ -107,7 +107,7 @@ endif() if(OPENVDB_TOOL_USE_EXR) target_compile_definitions(vdb_tool_common INTERFACE "VDB_TOOL_USE_EXR") - find_package(OpenEXR REQUIRED) + find_package(OpenEXR ${MINIMUM_OPENEXR_VERSION} REQUIRED) target_link_libraries(vdb_tool_common INTERFACE OpenEXR::IlmImf) endif() @@ -186,7 +186,7 @@ install(TARGETS vdb_tool RUNTIME DESTINATION ${OPENVDB_INSTALL_BINDIR}) # unit test if(BUILD_TEST) - find_package(GTest CONFIG REQUIRED) + find_package(GTest ${MINIMUM_GOOGLETEST_VERSION} CONFIG REQUIRED) add_executable(vdb_tool_test src/unittest.cpp) target_include_directories(vdb_tool_test PRIVATE vdb_tool_common) diff --git a/pyproject.toml b/pyproject.toml index 33f87d4a35..aa2cf63d26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,11 +12,9 @@ dependencies = [ authors = [ { name = "OpenVDB Developer Team", email = "openvdb-dev@lists.aswf.io" }, ] -requires-python = ">=3.8" +requires-python = ">=3.10" classifiers = [ "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", ] From 7d6410ba435c11b15f0baed1b2d85a106f408545 Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 10:39:14 -0700 Subject: [PATCH 02/17] Bump CMake minimum 3.18 -> 3.20 Signed-off-by: Dan Bailey --- CMakeLists.txt | 2 +- ci/test_install.sh | 2 +- cmake/FindBlosc.cmake | 2 +- cmake/FindCppUnit.cmake | 2 +- cmake/FindJemalloc.cmake | 2 +- cmake/FindLog4cplus.cmake | 2 +- cmake/FindOpenEXR.cmake | 2 +- cmake/FindOpenVDB.cmake | 2 +- cmake/FindTBB.cmake | 2 +- cmake/OpenVDBGLFW3Setup.cmake | 2 +- cmake/OpenVDBHoudiniSetup.cmake | 2 +- cmake/OpenVDBMayaSetup.cmake | 2 +- cmake/OpenVDBUtils.cmake | 2 +- cmake/Uninstall.cmake | 2 +- cmake/config/OpenVDBCXX.cmake | 2 +- cmake/config/OpenVDBVersions.cmake | 2 +- doc/CMakeLists.txt | 2 +- doc/build.txt | 2 +- nanovdb/nanovdb/CMakeLists.txt | 10 ++++------ nanovdb/nanovdb/cmd/CMakeLists.txt | 2 +- nanovdb/nanovdb/examples/CMakeLists.txt | 2 +- nanovdb/nanovdb/unittest/CMakeLists.txt | 2 +- openvdb/openvdb/CMakeLists.txt | 2 +- openvdb/openvdb/python/CMakeLists.txt | 2 +- openvdb/openvdb/unittest/CMakeLists.txt | 2 +- openvdb_ax/openvdb_ax/CMakeLists.txt | 2 +- openvdb_ax/openvdb_ax/test/CMakeLists.txt | 2 +- openvdb_ax/openvdb_ax/test/TestAXCmd.cmake | 2 +- openvdb_cmd/CMakeLists.txt | 2 +- openvdb_cmd/vdb_ax/CMakeLists.txt | 2 +- openvdb_cmd/vdb_lod/CMakeLists.txt | 2 +- openvdb_cmd/vdb_print/CMakeLists.txt | 2 +- openvdb_cmd/vdb_render/CMakeLists.txt | 2 +- openvdb_cmd/vdb_tool/CMakeLists.txt | 2 +- openvdb_cmd/vdb_view/CMakeLists.txt | 2 +- openvdb_houdini/openvdb_houdini/CMakeLists.txt | 2 +- openvdb_houdini/openvdb_houdini/abitest/CMakeLists.txt | 2 +- openvdb_maya/openvdb_maya/CMakeLists.txt | 2 +- 38 files changed, 41 insertions(+), 43 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2feab47219..7ae4335401 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,7 @@ # note: cmake_minimum_required must be called before project commands to # ensure policy scope is set up correctly -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) # CMP0091 allows for MSVC ABI targetting via CMAKE_MSVC_RUNTIME_LIBRARY # from CMake 3.15 and above. Must come before project(). diff --git a/ci/test_install.sh b/ci/test_install.sh index be6a477dd8..da4bc0f004 100755 --- a/ci/test_install.sh +++ b/ci/test_install.sh @@ -8,7 +8,7 @@ set -e # the expected VDB installation cmakelists=" -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(TestInstall LANGUAGES CXX) find_package(OpenVDB REQUIRED COMPONENTS openvdb) add_executable(test_vdb_print \"../openvdb_cmd/vdb_print/main.cc\") diff --git a/cmake/FindBlosc.cmake b/cmake/FindBlosc.cmake index fedf1ad4d3..158050e216 100644 --- a/cmake/FindBlosc.cmake +++ b/cmake/FindBlosc.cmake @@ -88,7 +88,7 @@ may be provided to tell this module where to look. #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) include(GNUInstallDirs) mark_as_advanced( diff --git a/cmake/FindCppUnit.cmake b/cmake/FindCppUnit.cmake index 8d9f973ebd..34bdced9ed 100644 --- a/cmake/FindCppUnit.cmake +++ b/cmake/FindCppUnit.cmake @@ -83,7 +83,7 @@ may be provided to tell this module where to look. #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) include(GNUInstallDirs) diff --git a/cmake/FindJemalloc.cmake b/cmake/FindJemalloc.cmake index 7f8a483cd0..9b2e14555c 100644 --- a/cmake/FindJemalloc.cmake +++ b/cmake/FindJemalloc.cmake @@ -64,7 +64,7 @@ may be provided to tell this module where to look. #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) include(GNUInstallDirs) diff --git a/cmake/FindLog4cplus.cmake b/cmake/FindLog4cplus.cmake index dc00598960..7e3a584806 100644 --- a/cmake/FindLog4cplus.cmake +++ b/cmake/FindLog4cplus.cmake @@ -87,7 +87,7 @@ may be provided to tell this module where to look. #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) include(GNUInstallDirs) diff --git a/cmake/FindOpenEXR.cmake b/cmake/FindOpenEXR.cmake index 4601a0fbbb..a8aea21d01 100644 --- a/cmake/FindOpenEXR.cmake +++ b/cmake/FindOpenEXR.cmake @@ -93,7 +93,7 @@ may be provided to tell this module where to look. #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) include(GNUInstallDirs) diff --git a/cmake/FindOpenVDB.cmake b/cmake/FindOpenVDB.cmake index 30e8e352f0..33b08388c0 100644 --- a/cmake/FindOpenVDB.cmake +++ b/cmake/FindOpenVDB.cmake @@ -109,7 +109,7 @@ may be provided to tell this module where to look. #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) include(GNUInstallDirs) diff --git a/cmake/FindTBB.cmake b/cmake/FindTBB.cmake index db5601249c..eda06bb754 100644 --- a/cmake/FindTBB.cmake +++ b/cmake/FindTBB.cmake @@ -93,7 +93,7 @@ may be provided to tell this module where to look. #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) include(GNUInstallDirs) diff --git a/cmake/OpenVDBGLFW3Setup.cmake b/cmake/OpenVDBGLFW3Setup.cmake index 78e2f2170f..21ae81bb4c 100644 --- a/cmake/OpenVDBGLFW3Setup.cmake +++ b/cmake/OpenVDBGLFW3Setup.cmake @@ -47,7 +47,7 @@ The following variables may be provided to tell this module where to look. # Find the glfw3 installation and use glfw's CMake to initialize # the glfw lib -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) set(_FIND_GLFW3_ADDITIONAL_OPTIONS "") if(DISABLE_CMAKE_SEARCH_PATHS) diff --git a/cmake/OpenVDBHoudiniSetup.cmake b/cmake/OpenVDBHoudiniSetup.cmake index b28174f12d..a4ab24f2e0 100644 --- a/cmake/OpenVDBHoudiniSetup.cmake +++ b/cmake/OpenVDBHoudiniSetup.cmake @@ -73,7 +73,7 @@ may be provided to tell this module where to look. # Find the Houdini installation and use Houdini's CMake to initialize # the Houdini lib -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) # Include utility functions for version information include(${CMAKE_CURRENT_LIST_DIR}/OpenVDBUtils.cmake) diff --git a/cmake/OpenVDBMayaSetup.cmake b/cmake/OpenVDBMayaSetup.cmake index fb05ae919b..4ff3166a2e 100644 --- a/cmake/OpenVDBMayaSetup.cmake +++ b/cmake/OpenVDBMayaSetup.cmake @@ -51,7 +51,7 @@ variables may be provided to tell this module where to look. # Find the Maya installation and use Maya's CMake to initialize # the Maya lib -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) set(_FIND_MAYA_ADDITIONAL_OPTIONS "") diff --git a/cmake/OpenVDBUtils.cmake b/cmake/OpenVDBUtils.cmake index 6e8426c112..b2f07c7549 100644 --- a/cmake/OpenVDBUtils.cmake +++ b/cmake/OpenVDBUtils.cmake @@ -57,7 +57,7 @@ The following functions are provided: #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) function(OPENVDB_GET_VERSION_DEFINE HEADER KEY VALUE) diff --git a/cmake/Uninstall.cmake b/cmake/Uninstall.cmake index d2a99e3faf..e95c4c5229 100644 --- a/cmake/Uninstall.cmake +++ b/cmake/Uninstall.cmake @@ -16,7 +16,7 @@ existing from a previous run of cmake. #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) set(MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt") diff --git a/cmake/config/OpenVDBCXX.cmake b/cmake/config/OpenVDBCXX.cmake index 365c5d5cde..3586732bdb 100644 --- a/cmake/config/OpenVDBCXX.cmake +++ b/cmake/config/OpenVDBCXX.cmake @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) ############################################################################### diff --git a/cmake/config/OpenVDBVersions.cmake b/cmake/config/OpenVDBVersions.cmake index fd175e629e..a0ba4f2008 100644 --- a/cmake/config/OpenVDBVersions.cmake +++ b/cmake/config/OpenVDBVersions.cmake @@ -8,7 +8,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) ############################################################################### diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index a6f4f26731..67e5f259e5 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBDocs LANGUAGES NONE) include(GNUInstallDirs) diff --git a/doc/build.txt b/doc/build.txt index 83c5788c49..3048731a55 100644 --- a/doc/build.txt +++ b/doc/build.txt @@ -514,7 +514,7 @@ You can add the below CMake snippet to your main `CMakeLists.txt` to bring in OpenVDB as a dependency: @code{.cmake} -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) list(APPEND CMAKE_MODULE_PATH "/location/of/openvdb/install/lib/cmake/OpenVDB") find_package(OpenVDB REQUIRED) target_link_libraries(myapp OpenVDB::openvdb) diff --git a/nanovdb/nanovdb/CMakeLists.txt b/nanovdb/nanovdb/CMakeLists.txt index cb33dedde7..4e0284ecbf 100644 --- a/nanovdb/nanovdb/CMakeLists.txt +++ b/nanovdb/nanovdb/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(NanoVDB LANGUAGES C CXX) include(GNUInstallDirs) @@ -81,11 +81,9 @@ if(NANOVDB_USE_CUDA) set(CMAKE_CUDA_STANDARD 17) set(CMAKE_CUDA_STANDARD_REQUIRED ON) - if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18) - # Allow the user to provide CMAKE_CUDA_ARCHITECTURES - if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) - set(CMAKE_CUDA_ARCHITECTURES 75) - endif() + # Allow the user to provide CMAKE_CUDA_ARCHITECTURES + if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) + set(CMAKE_CUDA_ARCHITECTURES 75) endif() enable_language(CUDA) diff --git a/nanovdb/nanovdb/cmd/CMakeLists.txt b/nanovdb/nanovdb/cmd/CMakeLists.txt index 6513b14d2a..985a7d1d70 100644 --- a/nanovdb/nanovdb/cmd/CMakeLists.txt +++ b/nanovdb/nanovdb/cmd/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(NanoVDBExamples LANGUAGES CXX) include(GNUInstallDirs) diff --git a/nanovdb/nanovdb/examples/CMakeLists.txt b/nanovdb/nanovdb/examples/CMakeLists.txt index cfbc33de0c..d06371cd95 100644 --- a/nanovdb/nanovdb/examples/CMakeLists.txt +++ b/nanovdb/nanovdb/examples/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(NanoVDBExamples LANGUAGES CXX) include(GNUInstallDirs) diff --git a/nanovdb/nanovdb/unittest/CMakeLists.txt b/nanovdb/nanovdb/unittest/CMakeLists.txt index de9f355f0b..ac63a610d4 100644 --- a/nanovdb/nanovdb/unittest/CMakeLists.txt +++ b/nanovdb/nanovdb/unittest/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(NanoVDBTests LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb/openvdb/CMakeLists.txt b/openvdb/openvdb/CMakeLists.txt index 2ea9974698..3db0e4e144 100644 --- a/openvdb/openvdb/CMakeLists.txt +++ b/openvdb/openvdb/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBCore LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb/openvdb/python/CMakeLists.txt b/openvdb/openvdb/python/CMakeLists.txt index cfdd4727bf..c67884bce3 100644 --- a/openvdb/openvdb/python/CMakeLists.txt +++ b/openvdb/openvdb/python/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBPython LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb/openvdb/unittest/CMakeLists.txt b/openvdb/openvdb/unittest/CMakeLists.txt index 3339c97195..b1e04ebcfe 100644 --- a/openvdb/openvdb/unittest/CMakeLists.txt +++ b/openvdb/openvdb/unittest/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBUnitTests LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb_ax/openvdb_ax/CMakeLists.txt b/openvdb_ax/openvdb_ax/CMakeLists.txt index 9bde5bb921..e0d95caeb7 100644 --- a/openvdb_ax/openvdb_ax/CMakeLists.txt +++ b/openvdb_ax/openvdb_ax/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) # There is a bug introduced with LLVM 14 config files which causes CMake to # complain if the project is not init-ted with LANGUAGES C diff --git a/openvdb_ax/openvdb_ax/test/CMakeLists.txt b/openvdb_ax/openvdb_ax/test/CMakeLists.txt index 5dead7b2da..a5997e2099 100644 --- a/openvdb_ax/openvdb_ax/test/CMakeLists.txt +++ b/openvdb_ax/openvdb_ax/test/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBAXUnitTests LANGUAGES CXX) option(OPENVDB_AX_TEST_PROFILE "Switch on profiling for some of the unit tests." OFF) diff --git a/openvdb_ax/openvdb_ax/test/TestAXCmd.cmake b/openvdb_ax/openvdb_ax/test/TestAXCmd.cmake index 117b9e97d0..9f1743877f 100644 --- a/openvdb_ax/openvdb_ax/test/TestAXCmd.cmake +++ b/openvdb_ax/openvdb_ax/test/TestAXCmd.cmake @@ -12,7 +12,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) option(UPDATE_BASELINES "Replace the expected outputs whilst running tests" OFF) option(DOWNLOAD_VDBS "Fetch .vdb files required for some tests" OFF) diff --git a/openvdb_cmd/CMakeLists.txt b/openvdb_cmd/CMakeLists.txt index 02c02e2641..edbb1a4e59 100644 --- a/openvdb_cmd/CMakeLists.txt +++ b/openvdb_cmd/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBBinaries LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb_cmd/vdb_ax/CMakeLists.txt b/openvdb_cmd/vdb_ax/CMakeLists.txt index 2370d9d902..11562df353 100644 --- a/openvdb_cmd/vdb_ax/CMakeLists.txt +++ b/openvdb_cmd/vdb_ax/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(VDBAX LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb_cmd/vdb_lod/CMakeLists.txt b/openvdb_cmd/vdb_lod/CMakeLists.txt index a4348603ad..a67bdde2f4 100644 --- a/openvdb_cmd/vdb_lod/CMakeLists.txt +++ b/openvdb_cmd/vdb_lod/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(VDBLOD LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb_cmd/vdb_print/CMakeLists.txt b/openvdb_cmd/vdb_print/CMakeLists.txt index 25f00390c5..de58c90fba 100644 --- a/openvdb_cmd/vdb_print/CMakeLists.txt +++ b/openvdb_cmd/vdb_print/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(VDBPrint LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb_cmd/vdb_render/CMakeLists.txt b/openvdb_cmd/vdb_render/CMakeLists.txt index 0a63ba8115..032dfeeb66 100644 --- a/openvdb_cmd/vdb_render/CMakeLists.txt +++ b/openvdb_cmd/vdb_render/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(VDBRender LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb_cmd/vdb_tool/CMakeLists.txt b/openvdb_cmd/vdb_tool/CMakeLists.txt index a58784b75c..da1ade24ca 100644 --- a/openvdb_cmd/vdb_tool/CMakeLists.txt +++ b/openvdb_cmd/vdb_tool/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) # CMP0091 allows for MSVC ABI targetting via CMAKE_MSVC_RUNTIME_LIBRARY # from CMake 3.15 and above. Must come before project(). diff --git a/openvdb_cmd/vdb_view/CMakeLists.txt b/openvdb_cmd/vdb_view/CMakeLists.txt index e7bf546c5e..9744b9f16a 100644 --- a/openvdb_cmd/vdb_view/CMakeLists.txt +++ b/openvdb_cmd/vdb_view/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(VDBView LANGUAGES CXX) include(GNUInstallDirs) diff --git a/openvdb_houdini/openvdb_houdini/CMakeLists.txt b/openvdb_houdini/openvdb_houdini/CMakeLists.txt index 9680f492c8..204a153f9c 100644 --- a/openvdb_houdini/openvdb_houdini/CMakeLists.txt +++ b/openvdb_houdini/openvdb_houdini/CMakeLists.txt @@ -40,7 +40,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBHoudini LANGUAGES CXX) diff --git a/openvdb_houdini/openvdb_houdini/abitest/CMakeLists.txt b/openvdb_houdini/openvdb_houdini/abitest/CMakeLists.txt index f2c5b3fcd0..62c476d43f 100644 --- a/openvdb_houdini/openvdb_houdini/abitest/CMakeLists.txt +++ b/openvdb_houdini/openvdb_houdini/abitest/CMakeLists.txt @@ -12,7 +12,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBHoudiniABITest) diff --git a/openvdb_maya/openvdb_maya/CMakeLists.txt b/openvdb_maya/openvdb_maya/CMakeLists.txt index 3236fa7fe9..62b9bf6fb5 100644 --- a/openvdb_maya/openvdb_maya/CMakeLists.txt +++ b/openvdb_maya/openvdb_maya/CMakeLists.txt @@ -7,7 +7,7 @@ #]=======================================================================] -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.20) project(OpenVDBMaya LANGUAGES CXX) message(WARNING "The OpenVDB Maya plugin is currently unmaintained. The plugin " From c884baa6c0dca2299197219d45a2d591c4c52da7 Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Wed, 30 Oct 2024 14:50:44 -0700 Subject: [PATCH 03/17] Remove some old GCC checks Signed-off-by: Dan Bailey --- openvdb/openvdb/Platform.h | 14 ++++---------- openvdb/openvdb/tools/MeshToVolume.h | 2 +- openvdb_ax/openvdb_ax/test/backend/TestStringIR.cc | 4 ---- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/openvdb/openvdb/Platform.h b/openvdb/openvdb/Platform.h index bb99d9bf10..eebd4620ad 100644 --- a/openvdb/openvdb/Platform.h +++ b/openvdb/openvdb/Platform.h @@ -211,16 +211,10 @@ #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END #elif defined __GNUC__ // -Wfloat-conversion was only introduced in GCC 4.9 - #if OPENVDB_CHECK_GCC(4, 9) - #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wconversion\"") \ - _Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"") - #else - #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wconversion\"") - #endif + #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wconversion\"") \ + _Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"") #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END \ _Pragma("GCC diagnostic pop") #else diff --git a/openvdb/openvdb/tools/MeshToVolume.h b/openvdb/openvdb/tools/MeshToVolume.h index 2d4d3fafad..6d85f23576 100644 --- a/openvdb/openvdb/tools/MeshToVolume.h +++ b/openvdb/openvdb/tools/MeshToVolume.h @@ -16,7 +16,7 @@ #ifndef OPENVDB_TOOLS_MESH_TO_VOLUME_HAS_BEEN_INCLUDED #define OPENVDB_TOOLS_MESH_TO_VOLUME_HAS_BEEN_INCLUDED -#include // for OPENVDB_HAS_CXX11 +#include #include #include // for GodunovsNormSqrd #include // for closestPointOnTriangleToPoint diff --git a/openvdb_ax/openvdb_ax/test/backend/TestStringIR.cc b/openvdb_ax/openvdb_ax/test/backend/TestStringIR.cc index 1301262521..fe5dde8726 100644 --- a/openvdb_ax/openvdb_ax/test/backend/TestStringIR.cc +++ b/openvdb_ax/openvdb_ax/test/backend/TestStringIR.cc @@ -289,10 +289,8 @@ TestStringIR::testStringStringIR() { static auto setInvalidString = [](String& S) { #if defined(__GNUC__) && !defined(__clang__) -#if OPENVDB_CHECK_GCC(8, 0) _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wclass-memaccess\"") -#endif #endif // zero out the data held by a String object (expected to not hold heap memory). // This is used to test the IR methods work as expected with the allocated, but @@ -300,9 +298,7 @@ TestStringIR::testStringStringIR() OPENVDB_ASSERT(S.isLocal()); std::memset(&S, 0, sizeof(String)); // uninit string, invalid class memory #if defined(__GNUC__) && !defined(__clang__) -#if OPENVDB_CHECK_GCC(8, 0) _Pragma("GCC diagnostic pop") -#endif #endif }; From 6a8415f7d49a8970e84d61bc14e2281afffaa6a6 Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Wed, 30 Oct 2024 14:42:35 -0700 Subject: [PATCH 04/17] Bump version to 12.0.0 Signed-off-by: Dan Bailey --- CHANGES | 2 +- CMakeLists.txt | 4 ++-- doc/changes.txt | 2 +- openvdb/openvdb/openvdb.cc | 12 +++++++++--- openvdb/openvdb/version.h.in | 14 ++++++++++---- pyproject.toml | 2 +- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/CHANGES b/CHANGES index 677d8794d7..84e0356393 100644 --- a/CHANGES +++ b/CHANGES @@ -1,7 +1,7 @@ OpenVDB Version History ======================= -Version 12.0.0 - In development +Version 12.0.0 - October 31, 2024 OpenVDB: Improvements: diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ae4335401..34df1309df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,9 +52,9 @@ endif() ###### Version -set(OpenVDB_MAJOR_VERSION 11) +set(OpenVDB_MAJOR_VERSION 12) set(OpenVDB_MINOR_VERSION 0) -set(OpenVDB_PATCH_VERSION 1) +set(OpenVDB_PATCH_VERSION 0) set(OpenVDB_VERSION "${OpenVDB_MAJOR_VERSION}.${OpenVDB_MINOR_VERSION}.${OpenVDB_PATCH_VERSION}") project(OpenVDB LANGUAGES CXX VERSION ${OpenVDB_VERSION}) diff --git a/doc/changes.txt b/doc/changes.txt index 24f41674b8..0987ed107e 100644 --- a/doc/changes.txt +++ b/doc/changes.txt @@ -4,7 +4,7 @@ @htmlonly @endhtmlonly @par -Version 12.0.0 - In Development +Version 12.0.0 - October 31, 2024 @par OpenVDB: diff --git a/openvdb/openvdb/openvdb.cc b/openvdb/openvdb/openvdb.cc index bb2431bac7..f1e3b79224 100644 --- a/openvdb/openvdb/openvdb.cc +++ b/openvdb/openvdb/openvdb.cc @@ -26,14 +26,20 @@ #error ABI = 10 is deprecated, CMake option OPENVDB_USE_DEPRECATED_ABI_10 suppresses this error #endif #endif +#ifndef OPENVDB_USE_DEPRECATED_ABI_11 + #if OPENVDB_ABI_VERSION_NUMBER == 11 + PRAGMA(message("NOTE: ABI = 11 is deprecated, define OPENVDB_USE_DEPRECATED_ABI_11 " + "to suppress this message")) + #endif +#endif // If using a future OPENVDB_ABI_VERSION_NUMBER, issue an error directive. // This can be optionally suppressed by defining: // OPENVDB_USE_FUTURE_ABI_=ON. -#ifndef OPENVDB_USE_FUTURE_ABI_12 - #if OPENVDB_ABI_VERSION_NUMBER == 12 +#ifndef OPENVDB_USE_FUTURE_ABI_13 + #if OPENVDB_ABI_VERSION_NUMBER == 13 #error ABI = 12 is still in active development and has not been finalized, \ -CMake option OPENVDB_USE_FUTURE_ABI_12 suppresses this error +CMake option OPENVDB_USE_FUTURE_ABI_13 suppresses this error #endif #endif diff --git a/openvdb/openvdb/version.h.in b/openvdb/openvdb/version.h.in index 6a6c0892f0..1591071955 100644 --- a/openvdb/openvdb/version.h.in +++ b/openvdb/openvdb/version.h.in @@ -175,10 +175,10 @@ // This can be suppressed by defining OPENVDB_USE_FUTURE_ABI_=ON. // Note that, whilst the VDB CMake does not allow this option to be hit, // it exists to propagate this message to downstream targets - #if OPENVDB_ABI_VERSION_NUMBER == 12 - #ifndef OPENVDB_USE_FUTURE_ABI_12 - PRAGMA(message("NOTE: ABI = 12 is still in active development and has not been finalized, " - "define OPENVDB_USE_FUTURE_ABI_11 to suppress this message")) + #if OPENVDB_ABI_VERSION_NUMBER == 13 + #ifndef OPENVDB_USE_FUTURE_ABI_13 + PRAGMA(message("NOTE: ABI = 13 is still in active development and has not been finalized, " + "define OPENVDB_USE_FUTURE_ABI_13 to suppress this message")) #endif #else #error expected OPENVDB_ABI_VERSION_NUMBER <= OPENVDB_LIBRARY_MAJOR_VERSION_NUMBER @@ -195,6 +195,12 @@ "to suppress this message")) #endif #endif +#ifndef OPENVDB_USE_DEPRECATED_ABI_11 + #if OPENVDB_ABI_VERSION_NUMBER == 11 + PRAGMA(message("NOTE: ABI = 11 is deprecated, define OPENVDB_USE_DEPRECATED_ABI_11 " + "to suppress this message")) + #endif +#endif /// By default, the @b OPENVDB_REQUIRE_VERSION_NAME macro is undefined, and /// symbols from the version namespace are promoted to the top-level namespace diff --git a/pyproject.toml b/pyproject.toml index aa2cf63d26..ea644a7831 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build" [project] name = "openvdb" -version = "11.0.1" +version = "12.0.0" description= "Python bindings for OpenVDB: sparse volume data structure and tools." dependencies = [ "numpy", From 880a3718ea0fdeadb710606f9ebf8b7c342dc43d Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Wed, 30 Oct 2024 21:42:00 -0700 Subject: [PATCH 05/17] Lots of CI updates Signed-off-by: Dan Bailey --- .github/workflows/ax.yml | 13 +++---------- .github/workflows/build.yml | 18 +++++------------- .github/workflows/houdini.yml | 8 -------- .github/workflows/nanovdb.yml | 8 ++------ .github/workflows/weekly.yml | 29 +++-------------------------- ci/build.sh | 1 + 6 files changed, 14 insertions(+), 63 deletions(-) diff --git a/.github/workflows/ax.yml b/.github/workflows/ax.yml index 98c5ed5ba6..e8ed06f5c4 100644 --- a/.github/workflows/ax.yml +++ b/.github/workflows/ax.yml @@ -70,14 +70,8 @@ jobs: - { image: '2023-clang15', cxx: 'clang++', build: 'Release', cmake: '' } - { image: '2023-clang15', cxx: 'g++', build: 'Release', cmake: '' } - { image: '2023-clang15', cxx: 'clang++', build: 'Debug', cmake: '' } - - { image: '2022-clang11', cxx: 'clang++', build: 'Release', cmake: '' } - - { image: '2022-clang11', cxx: 'g++', build: 'Release', cmake: '' } fail-fast: false steps: - - name: Enable Node 16 - if: contains(matrix.config.image, '2022') - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: nanobind #if: contains(matrix.config.image, '2023') == false @@ -126,10 +120,9 @@ jobs: strategy: matrix: config: - #@note llvm10 never got its own brew formula... + #@note llvm15 never got its own brew formula... # Last macos runner befor M1 (macos-14) - - { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '12' } - - { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '13' } + - { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '15' } fail-fast: false steps: - uses: actions/checkout@v3 @@ -159,7 +152,7 @@ jobs: github.event.inputs.type == 'grammar' runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-8c-32g-300h') || 'ubuntu-latest' }} container: - image: aswf/ci-openvdb:2022-clang11 + image: aswf/ci-openvdb:2023-clang15 steps: - uses: actions/checkout@v3 - name: build diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 394729dcab..3e7798e8fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,23 +76,15 @@ jobs: strategy: matrix: config: - - { cxx: clang++, image: '2024', abi: '11', build: 'Release', cmake: '' } - - { cxx: g++, image: '2024', abi: '11', build: 'Release', cmake: '' } - - { cxx: clang++, image: '2024', abi: '11', build: 'Debug', cmake: '' } - - { cxx: clang++, image: '2023', abi: '11', build: 'Release', cmake: '' } - - { cxx: g++, image: '2023', abi: '11', build: 'Release', cmake: '' } - - { cxx: clang++, image: '2022', abi: '10', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } - - { cxx: g++, image: '2022', abi: '10', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { cxx: clang++, image: '2024', abi: '12', build: 'Release', cmake: '' } + - { cxx: g++, image: '2024', abi: '12', build: 'Release', cmake: '' } + - { cxx: clang++, image: '2024', abi: '12', build: 'Debug', cmake: '' } + - { cxx: clang++, image: '2023', abi: '11', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } + - { cxx: g++, image: '2023', abi: '11', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } fail-fast: false steps: - - name: Enable Node 16 - # Solution taken from https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default - if: contains(matrix.config.image, '2022') - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: nanobind - #if: contains(matrix.config.image, '2023') == false run: ./ci/install_nanobind.sh 2.0.0 - name: glfw if: contains(matrix.config.image, '2023') == true diff --git a/.github/workflows/houdini.yml b/.github/workflows/houdini.yml index 2506eb333b..68348e3351 100644 --- a/.github/workflows/houdini.yml +++ b/.github/workflows/houdini.yml @@ -80,15 +80,8 @@ jobs: - { cxx: g++, image: '2023', hou_hash: '20_5', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } - { cxx: clang++, image: '2023', hou_hash: '20_0-newabi', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } - { cxx: g++, image: '2023', hou_hash: '20_0-newabi', build: 'Release', components: 'core,hou,bin,view,render,python,test,axcore,axbin,axtest' } - - { cxx: clang++, image: '2022', hou_hash: '20_0-oldabi', build: 'Release', components: 'core,hou' } - - { cxx: g++, image: '2022', hou_hash: '20_0-oldabi', build: 'Release', components: 'core,hou' } fail-fast: false steps: - # See note on this step in the Houdini weekly.yml job - # We can remove this when we no longer use < 2023 images - - name: Enable Node 16 - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - name: remove zstd run: yum -y remove zstd - uses: actions/checkout@v3 @@ -99,7 +92,6 @@ jobs: if: contains(matrix.config.image, '2023') == true run: ./ci/install_glfw.sh 3.3.10 - name: cppunit - if: contains(matrix.config.image, '2022') == false run: ./ci/install_cppunit.sh 1.15.1 - name: timestamp id: timestamp diff --git a/.github/workflows/nanovdb.yml b/.github/workflows/nanovdb.yml index dee840e076..43b2c233d9 100644 --- a/.github/workflows/nanovdb.yml +++ b/.github/workflows/nanovdb.yml @@ -67,10 +67,6 @@ jobs: - { cxx: clang++, image: '2024', build: 'Debug' } fail-fast: false steps: - - name: Enable Node 16 - if: contains(matrix.config.image, '2022') - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: setup_cuda_12 run: | @@ -150,8 +146,8 @@ jobs: strategy: matrix: config: - - { runner: 'macos-12', cxx: 'clang++', build: 'Release' } - - { runner: 'macos-12', cxx: 'clang++', build: 'Debug' } + - { runner: 'macos-13', cxx: 'clang++', build: 'Release' } + - { runner: 'macos-13', cxx: 'clang++', build: 'Debug' } fail-fast: false steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index 234393c46c..747c8af744 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -70,17 +70,12 @@ jobs: strategy: matrix: config: - - { houdini_version: '19.5', platform: 'linux_x86_64_gcc9.3', hou_hash: '19_5' } - - { houdini_version: '20.0', platform: 'linux_x86_64_gcc9.3', hou_hash: '20_0-oldabi' } - { houdini_version: '20.0', platform: 'linux_x86_64_gcc11.2', hou_hash: '20_0-newabi' } - { houdini_version: '20.5', platform: 'linux_x86_64_gcc11.2', hou_hash: '20_5' } fail-fast: false container: image: aswf/ci-base:2024 steps: - - name: Enable Node 16 - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 # We bumped from the 2021 CI image to 2023 here to fix some OpenSSL issues # with the Houdini download script. In so doing we broke some of the caching @@ -172,9 +167,6 @@ jobs: - { name: 'conf', build: 'Release', components: 'core,python,bin,view,render,test', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } fail-fast: false steps: - - name: Enable Node 16 - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: nanobind #if: contains(container.image, '2023') == false @@ -224,7 +216,7 @@ jobs: ./ci/build.sh -v --build-type=Release --components=\"core,axcore,python,bin,render,test,axbin\" - --cargs=\"-DCMAKE_CXX_STANDARD=20 -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install ${{ matrix.config.cmake }}\" + --cargs=\"-DCMAKE_CXX_STANDARD=20 -DOPENVDB_USE_DELAYED_LOADING=OFF -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install ${{ matrix.config.cmake }}\" - name: test run: cd build && ctest -V @@ -303,20 +295,10 @@ jobs: matrix: config: # Unified - - { image: '2023-clang14', cxx: 'clang++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' } - - { image: '2023-clang14', cxx: 'g++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' } - - { image: '2022-clang13', cxx: 'clang++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' } - - { image: '2022-clang13', cxx: 'g++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' } - # Standalone - - { image: '2022-clang11', cxx: 'clang++', build: 'Debug', components: 'core', cmake: '' } - - { image: '2022-clang11', cxx: 'clang++', build: 'Release', components: 'core', cmake: '' } - - { image: '2022-clang11', cxx: 'g++', build: 'Release', components: 'core', cmake: '' } + - { image: '2023-clang15', cxx: 'clang++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' } + - { image: '2023-clang15', cxx: 'g++', build: 'Release', components: 'core,bin,axcore,axbin,axtest', cmake: '' } fail-fast: false steps: - - name: Enable Node 16 - if: contains(matrix.config.image, '2022') - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: nanobind #f: contains(matrix.config.image, '2023') == false @@ -364,9 +346,7 @@ jobs: strategy: matrix: config: - - { cxx: 'clang++', build: 'Release', llvm: '14' } - { cxx: 'clang++', build: 'Release', llvm: '15' } - #- { cxx: 'clang++', build: 'Release', llvm: '16' } - not supported yet fail-fast: false steps: - uses: actions/checkout@v3 @@ -522,9 +502,6 @@ jobs: blosc: ['1.18.0','1.19.0','1.20.0','1.21.0'] fail-fast: false steps: - - name: Enable Node 16 - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: install_blosc run: sudo ./ci/install_blosc.sh ${{ matrix.blosc }} diff --git a/ci/build.sh b/ci/build.sh index 2c6d93ac22..b3b318d093 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -185,6 +185,7 @@ set -x # regardless of the 'test' component being enabled or not (see the OPENVDB_BUILD_PYTHON_UNITTESTS option). cmake \ -DOPENVDB_USE_DEPRECATED_ABI_10=ON \ + -DOPENVDB_USE_DEPRECATED_ABI_11=ON \ -DOPENVDB_BUILD_VDB_PRINT=ON \ -DOPENVDB_BUILD_VDB_LOD=ON \ -DOPENVDB_BUILD_VDB_TOOL=ON \ From b9f09a2580cc31a5b04a5fd3d7eb3781548e891b Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Wed, 30 Oct 2024 23:39:45 -0700 Subject: [PATCH 06/17] Update docs GHA workflow Signed-off-by: Dan Bailey --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 2f78f9a787..1fff84b892 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -92,7 +92,7 @@ jobs: github.event.inputs.deploy == 'docs' uses: peaceiris/actions-gh-pages@v3 with: - deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} + deploy_key: ${{ secrets.PRIVATE_KEY }} publish_dir: /usr/local/share/doc/OpenVDB/html destination_dir: documentation/doxygen external_repository: AcademySoftwareFoundation/openvdb-website From 667f4f477a584dfc0bd8ce8c537bd318b9f7827a Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Wed, 30 Oct 2024 20:04:00 -0700 Subject: [PATCH 07/17] Fix a memory leak in RootNode Signed-off-by: Dan Bailey --- openvdb/openvdb/tree/RootNode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openvdb/openvdb/tree/RootNode.h b/openvdb/openvdb/tree/RootNode.h index c3aba1131b..8bbf2ee618 100644 --- a/openvdb/openvdb/tree/RootNode.h +++ b/openvdb/openvdb/tree/RootNode.h @@ -2201,7 +2201,7 @@ RootNode::fill(const CoordBBox& bbox, const ValueType& value, bool activ // with the tile's value and active state. const Tile& tile = getTile(iter); child = new ChildT(xyz, tile.value, tile.active); - mTable.emplace(tileMin, *child); + setChild(iter, *child); } else if (isChild(iter)) { child = &getChild(iter); } From 5768e86d6117d3a7d3a92552a0cc60a4ff011c92 Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Wed, 30 Oct 2024 22:03:01 -0700 Subject: [PATCH 08/17] Update change log Signed-off-by: Dan Bailey --- CHANGES | 50 ++++++++++- doc/changes.txt | 138 ++++++++++++++++++++--------- pendingchanges/levelset_fillet.txt | 2 - pendingchanges/probe.txt | 10 --- pendingchanges/unsafe.txt | 16 ---- 5 files changed, 146 insertions(+), 70 deletions(-) delete mode 100644 pendingchanges/levelset_fillet.txt delete mode 100644 pendingchanges/probe.txt delete mode 100644 pendingchanges/unsafe.txt diff --git a/CHANGES b/CHANGES index 84e0356393..f15d035aa5 100644 --- a/CHANGES +++ b/CHANGES @@ -3,7 +3,18 @@ OpenVDB Version History Version 12.0.0 - October 31, 2024 + This version introduces ABI changes relative to older major releases, + so to preserve ABI compatibility it might be necessary to define the + macro OPENVDB_ABI_VERSION_NUMBER=N, where, for example, N is 10 for + Houdini 20.0 and 11 for Houdini 20.5. + + GCC 9 is no longer supported. + OpenVDB: + New features: + - Added fillet() method in tools::LevelSetFilter to round off concave edges + to create smoother transition between surfaces. + Improvements: - Added openvdb::assertAbort to replace cassert and a OPENVDB_ENABLE_ASSERTS cmake argument/compile define to toggle @@ -19,11 +30,49 @@ Version 12.0.0 - October 31, 2024 - ValueAccessors are now defined and created in the Tree class instead of in the Grid class so that custom Tree implementations may define and create their own ValueAccessors if desired. + - Added support for PDAL to vdb_tool [Contributed by Tom Matterson] + - LeafManager and NodeManager now use Index64 for leaf counts internally. + - Added RootNode::probeChild() const. + - Added RootNode::probeChild() and RootNode::probeConstChild(). + - Added RootNode::probe() and RootNode::probeConst() to query key presence, + child node, value and active state. + - Added InternalNode::probeChild() const. + - Added InternalNode::probeChild() and probeChildConst() with coord access + and optionally value and active state. + - Added InternalNode::probeChild() and probeChildConst() with index access + and optionally value and active state. + - Added InternalNode::isValueOff(), LeafNode::isValueOff(), + LeafNodeBool::isValueOff(), LeafNodeMask::isValueOff(). + - Added LeafNodeMask::probeValue(Index,val), LeafNodeBool::probeValue(Index,val). + - Added RootNode::getValueUnsafe(), RootNode::getChildUnsafe(), + RootNode::getConstChildUnsafe(). + - Added InternalNode::getValueUnsafe(), InternalNode::getChildUnsafe(), + InternalNode::getConstChildUnsafe(). + - Added InternalNode::setActiveStateUnsafe(), InternalNode::setValueOnlyUnsafe(), + InternalNode::setValueOnUnsafe(), InternalNode::setValueOffUnsafe(). + - Added InternalNode::setChildUnsafe(), InternalNode::resetChildUnsafe(), + InternalNode::stealChildUnsafe(), InternalNode::deleteChildUnsafe(). + - For LeafNode, LeafNodeBool and LeafNodeMask - added + LeafNode::getValueUnsafe(), LeafNode::setActiveStateunsafe(), + LeafNode::setValueOnlyUnsafe(), LeafNode::setValueOnUnsafe(), + LeafNode::setValueOffUnsafe(). + + ABI changes: + - Tree::leafCount(), Tree::unallocatedLeafCount(), + Tree::nonLeafCount() and Tree::nodeCount() now use Index64 in their + return types instead of Index32. API Changes: - RootNode::tileCount(), RootNode::activeTileCount() and RootNode::inactiveTileCount() are now public. - RootNode::hasKey() and RootNode::coordToKey() are now public. + - RootNode::leafCount(), RootNode::nonLeafCount() and RootNode::nodeCount() + now use Index64 instead of Index32. The Index32 variant is deprecated. + - InternalNode::leafCount(), InternalNode::nonLeafCount() and + InternalNode::nodeCount() now use Index64 instead of Index32. The Index32 + variant is deprecated. + - LeafNode::leafCount() and LeafNode::nonLeafCount() now use Index64 instead + of Index32. The Index32 variant is deprecated. Bug Fixes: - Fix potential crash reading corrupt .vdb files with invalid @@ -549,7 +598,6 @@ Version 9.1.0 - June 9, 2022 Positional arguments as input files are deprecated. - Added tools::minMax() which supports multithreaded evaluation of active minimum and maximum values. Grid::evalMinMax() has been deprecated. - [Contributed by Greg Hurst] - Significant performance improvements to AX point kernels, primarily due to providing AX access to attribute buffers for superior code generation. - vdb_print now prints both the in-core memory and total memory usage for diff --git a/doc/changes.txt b/doc/changes.txt index 0987ed107e..308bfcad55 100644 --- a/doc/changes.txt +++ b/doc/changes.txt @@ -6,16 +6,33 @@ @par Version 12.0.0 - October 31, 2024 +@par +
+This version introduces ABI changes relative to older major releases, so to +preserve ABI compatibility it might be necessary to define the macro +OPENVDB_ABI_VERSION_NUMBER=N, where, for example, +N is 10 for Houdini 20.0 and 11 for Houdini 20.5. +
+ +
+GCC 9 is no longer supported. +
+ @par OpenVDB: - Improvements: + New features: + - Added fillet() method in tools::LevelSetFilter to round off concave edges + to create smoother transition between surfaces. + + Improvements: - Added openvdb::assertAbort to replace cassert and a - OPENVDB_ENABLE_ASSERTS cmake argument/compile define to toggle + @c OPENVDB_ENABLE_ASSERTS cmake argument/compile define to toggle assertions in OpenVDB code, independantly of NDEBUG. Asserts are no longer enabled by default in when NDEBUG is absent (e.g. Debug builds). - - Removed last traces of Boost when OPENVDB_USE_DELAYED_LOADING is OFF - [Reported by Brian McKinnon] + - Removed last traces of Boost when @c OPENVDB_USE_DELAYED_LOADING is OFF + [Reported by Brian McKinnon] - RootNode code cleanup to eliminate redundant key conversion and to create map values in-place. - Add RootNode::deleteChildOrTile() to delete a child or tile of @@ -23,22 +40,61 @@ OpenVDB: - ValueAccessors are now defined and created in the Tree class instead of in the Grid class so that custom Tree implementations may define and create their own ValueAccessors if desired. - -- API Changes: + - Added support for PDAL to vdb_tool [Contributed by Tom Matterson] + - LeafManager and NodeManager now use Index64 for leaf counts internally. + - Added RootNode::probeChild() const. + - Added RootNode::probeChild() and RootNode::probeConstChild(). + - Added RootNode::probe() and RootNode::probeConst() to query key presence, + child node, value and active state. + - Added InternalNode::probeChild() const. + - Added InternalNode::probeChild() and probeChildConst() with coord access + and optionally value and active state. + - Added InternalNode::probeChild() and probeChildConst() with index access + and optionally value and active state. + - Added InternalNode::isValueOff(), LeafNode::isValueOff(), + LeafNodeBool::isValueOff(), LeafNodeMask::isValueOff(). + - Added LeafNodeMask::probeValue(Index,val), LeafNodeBool::probeValue(Index,val). + - Added RootNode::getValueUnsafe(), RootNode::getChildUnsafe(), + RootNode::getConstChildUnsafe(). + - Added InternalNode::getValueUnsafe(), InternalNode::getChildUnsafe(), + InternalNode::getConstChildUnsafe(). + - Added InternalNode::setActiveStateUnsafe(), InternalNode::setValueOnlyUnsafe(), + InternalNode::setValueOnUnsafe(), InternalNode::setValueOffUnsafe(). + - Added InternalNode::setChildUnsafe(), InternalNode::resetChildUnsafe(), + InternalNode::stealChildUnsafe(), InternalNode::deleteChildUnsafe(). + - For LeafNode, LeafNodeBool and LeafNodeMask - added + LeafNode::getValueUnsafe(), LeafNode::setActiveStateunsafe(), + LeafNode::setValueOnlyUnsafe(), LeafNode::setValueOnUnsafe(), + LeafNode::setValueOffUnsafe(). + + ABI changes: + - Tree::leafCount(), Tree::unallocatedLeafCount(), + Tree::nonLeafCount() and Tree::nodeCount() now use Index64 in their + return types instead of Index32. + + API Changes: - RootNode::tileCount(), RootNode::activeTileCount() and RootNode::inactiveTileCount() are now public. - RootNode::hasKey() and RootNode::coordToKey() are now public. - -- Bug Fixes: + - RootNode::leafCount(), RootNode::nonLeafCount() and RootNode::nodeCount() + now use Index64 instead of Index32. The Index32 variant is deprecated. + - InternalNode::leafCount(), InternalNode::nonLeafCount() and + InternalNode::nodeCount() now use Index64 instead of Index32. The Index32 + variant is deprecated. + - LeafNode::leafCount() and LeafNode::nonLeafCount() now use Index64 instead + of Index32. The Index32 variant is deprecated. + + Bug Fixes: - Fix potential crash reading corrupt .vdb files with invalid blosc or zip chunks. - [Fix thanks to Matthias Ueberheide] + [Reported by Matthias Ueberheide] + - Fix a bug in RootNode::setOrigin() where the origin was updated before the error was thrown potentially leaving the root in an invalid state. - Fixed a thread sanitizer issue which could cause undefined behaviour in VolumeToSpheres::fillWithSpheres - [Reported by Jérémie Dumas] + [Reported by Jérémie Dumas] - Fixed an occurance of undefined behaviour in tools::activate (though this would typically not have manifested with any unintended behaviour) @@ -75,7 +131,7 @@ NanoVDB: - API Changes: - Change mapToGridType to toGridType. - Change mapToMagic to toMagic. - - Change CpuTimer.h to Timer.h. + - Change CpuTimer.h to Timer.h. - API Changes (details): - These APIs are now under the math namespace: Ray, DDA, HDDA, @@ -108,33 +164,33 @@ NanoVDB: - Move nanovdb::GpuTimer to nanovdb::util::cuda::Timer. - Move and rename nanovdb::CountOn to nanovdb::util::countOn. - - Move util/GridHandle.h to GridHandle.h. - - Move util/BuildGrid.h to tools/GridBuilder.h. - - Move util/GridBuilder.h to tools/GridBuilder.h. - - Move util/IO.h to io/IO.h. - - Move util/CSampleFromVoxels.h to math/CSampleFromVoxels.h. - - Move util/DitherLUT.h to math/DitherLUT.h. - - Move util/HDDA.h to math/HDDA.h. - - Move util/Ray.h to math/Ray.h. - - Move util/SampleFromVoxels.h to math/SampleFromVoxels.h. - - Move util/Stencils.h to nanovdb/math/Stencils.h. - - Move util/CreateNanoGrid.h to tools/CreateNanoGrid.h. - - Move and rename util/Primitives.h to tools/CreatePrimitives.h. - - Move util/GridChecksum.h to tools/GridChecksum.h. - - Move util/GridStats.h to tools/GridStats.h. - - Move util/GridChecksum.h to tools/GridChecksum.h. - - Move util/GridValidator.h to tools/GridValidator.h. - - Move util/NanoToOpenVDB.h to tools/NanoToOpenVDB.h. - - Move util/cuda/CudaGridChecksum.cuh to tools/cuda/CudaGridChecksum.cuh. - - Move util/cuda/CudaGridStats.cuh to tools/cuda/CudaGridStats.cuh. - - Move util/cuda/CudaGridValidator.cuh to tools/cuda/CudaGridValidator.cuh. - - Move util/cuda/CudaIndexToGrid.cuh to tools/cuda/CudaIndexToGrid.cuh. - - Move and rename util/cuda/CudaPointsToGrid.cuh to tools/cuda/PointsToGrid.cuh. - - Move util/cuda/CudaSignedFloodFill.cuh to tools/cuda/CudaSignedFloodFill.cuh. - - Move and rename util/cuda/CudaDeviceBuffer.h to cuda/DeviceBuffer.h. - - Move and rename util/cuda/CudaGridHandle.cuh to cuda/GridHandle.cuh. - - Move and rename util/cuda/CudaUtils.h to util/cuda/Util.h. - - Move and consolidate util/cuda/GpuTimer.h to util/cuda/Timer.h. + - Move util/GridHandle.h to GridHandle.h. + - Move util/BuildGrid.h to tools/GridBuilder.h. + - Move util/GridBuilder.h to tools/GridBuilder.h. + - Move util/IO.h to io/IO.h. + - Move util/CSampleFromVoxels.h to math/CSampleFromVoxels.h. + - Move util/DitherLUT.h to math/DitherLUT.h. + - Move util/HDDA.h to math/HDDA.h. + - Move util/Ray.h to math/Ray.h. + - Move util/SampleFromVoxels.h to math/SampleFromVoxels.h. + - Move util/Stencils.h to nanovdb/math/Stencils.h. + - Move util/CreateNanoGrid.h to tools/CreateNanoGrid.h. + - Move and rename util/Primitives.h to tools/CreatePrimitives.h. + - Move util/GridChecksum.h to tools/GridChecksum.h. + - Move util/GridStats.h to tools/GridStats.h. + - Move util/GridChecksum.h to tools/GridChecksum.h. + - Move util/GridValidator.h to tools/GridValidator.h. + - Move util/NanoToOpenVDB.h to tools/NanoToOpenVDB.h. + - Move util/cuda/CudaGridChecksum.cuh to tools/cuda/CudaGridChecksum.cuh. + - Move util/cuda/CudaGridStats.cuh to tools/cuda/CudaGridStats.cuh. + - Move util/cuda/CudaGridValidator.cuh to tools/cuda/CudaGridValidator.cuh. + - Move util/cuda/CudaIndexToGrid.cuh to tools/cuda/CudaIndexToGrid.cuh. + - Move and rename util/cuda/CudaPointsToGrid.cuh to tools/cuda/PointsToGrid.cuh. + - Move util/cuda/CudaSignedFloodFill.cuh to tools/cuda/CudaSignedFloodFill.cuh. + - Move and rename util/cuda/CudaDeviceBuffer.h to cuda/DeviceBuffer.h. + - Move and rename util/cuda/CudaGridHandle.cuh to cuda/GridHandle.cuh. + - Move and rename util/cuda/CudaUtils.h to util/cuda/Util.h. + - Move and consolidate util/cuda/GpuTimer.h to util/cuda/Timer.h. @par Python: @@ -145,7 +201,7 @@ Python: @par Houdini: - - When OPENVDB_ENABLE_RPATH is ON, the location of + - When @c OPENVDB_ENABLE_RPATH is ON, the location of libopenvdb_houdini is now added to the rpath of all Houdini dsos. @@ -153,11 +209,11 @@ Houdini: Build: - Fixed an issue with OpenVDB AX's CMake on Windows where the static and shared library targets would have the same name - [Reported by Nicholas Yue] - - USE_EXPLICIT_INSTANTIATION is now disabled on Windows by default + [Reported by Nicholas Yue] + - @c USE_EXPLICIT_INSTANTIATION is now disabled on Windows by default due to OOM linker issues. - Jemalloc is now the preferred allocator of choice on all - platforms when CONCURRENT_MALLOC is set to Auto. + platforms when @c CONCURRENT_MALLOC is set to Auto. - Fixed an issue with the Blosc CMake FindPackage for the OpenVDB Windows static library. diff --git a/pendingchanges/levelset_fillet.txt b/pendingchanges/levelset_fillet.txt deleted file mode 100644 index ca96a9f009..0000000000 --- a/pendingchanges/levelset_fillet.txt +++ /dev/null @@ -1,2 +0,0 @@ -New Feature: -- Added fillet() method in tools::LevelSetFilter to round off concave edges to create smoother transition between surfaces. [Contributed by Greg Hurst] \ No newline at end of file diff --git a/pendingchanges/probe.txt b/pendingchanges/probe.txt deleted file mode 100644 index 0786474ffa..0000000000 --- a/pendingchanges/probe.txt +++ /dev/null @@ -1,10 +0,0 @@ -Improvements: - - Added RootNode::probeChild() const. - - Added RootNode::probeChild() and RootNode::probeConstChild(). - - Added RootNode::probe() and RootNode::probeConst() to query key presence, - child node, value and active state. - - Added InternalNode::probeChild() const. - - Added InternalNode::probeChild() and probeChildConst() with coord access - and optionally value and active state. - - Added InternalNode::probeChild() and probeChildConst() with index access - and optionally value and active state. diff --git a/pendingchanges/unsafe.txt b/pendingchanges/unsafe.txt deleted file mode 100644 index 9264bf36fd..0000000000 --- a/pendingchanges/unsafe.txt +++ /dev/null @@ -1,16 +0,0 @@ -Improvements: - - Added InternalNode::isValueOff(), LeafNode::isValueOff(), - LeafNodeBool::isValueOff(), LeafNodeMask::isValueOff(). - - Added LeafNodeMask::probeValue(Index,val), LeafNodeBool::probeValue(Index,val). - - Added RootNode::getValueUnsafe(), RootNode::getChildUnsafe(), - RootNode::getConstChildUnsafe(). - - Added InternalNode::getValueUnsafe(), InternalNode::getChildUnsafe(), - InternalNode::getConstChildUnsafe(). - - Added InternalNode::setActiveStateUnsafe(), InternalNode::setValueOnlyUnsafe(), - InternalNode::setValueOnUnsafe(), InternalNode::setValueOffUnsafe(). - - Added InternalNode::setChildUnsafe(), InternalNode::resetChildUnsafe(), - InternalNode::stealChildUnsafe(), InternalNode::deleteChildUnsafe(). - - For LeafNode, LeafNodeBool and LeafNodeMask - added - LeafNode::getValueUnsafe(), LeafNode::setActiveStateunsafe(), - LeafNode::setValueOnlyUnsafe(), LeafNode::setValueOnUnsafe(), - LeafNode::setValueOffUnsafe(). From 47b2b5223787dbf16caeb98e26265e04e4e3d05c Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 11:32:02 -0700 Subject: [PATCH 09/17] Add nanobind minimum version Signed-off-by: Dan Bailey --- cmake/config/OpenVDBVersions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/config/OpenVDBVersions.cmake b/cmake/config/OpenVDBVersions.cmake index a0ba4f2008..9973778c80 100644 --- a/cmake/config/OpenVDBVersions.cmake +++ b/cmake/config/OpenVDBVersions.cmake @@ -40,7 +40,7 @@ if(NOT DISABLE_DEPENDENCY_VERSION_CHECKS) set(MINIMUM_MSVC_VERSION 19.30) # 1928 (Visual Studio 2019 Version 16.8 + 16.9) set(MINIMUM_BOOST_VERSION 1.80) - set(MINIMUM_PYBIND_VERSION 2.9.1) + set(MINIMUM_NANOBIND_VERSION 2.0.0) set(MINIMUM_IMATH_VERSION 3.1) set(MINIMUM_OPENEXR_VERSION 3.1) set(MINIMUM_ZLIB_VERSION 1.2.7) From 7afbe2a7870587d6dafe21c876ea5c0ea018916e Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 11:33:07 -0700 Subject: [PATCH 10/17] Fix ABI=13 error message Signed-off-by: Dan Bailey --- openvdb/openvdb/openvdb.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openvdb/openvdb/openvdb.cc b/openvdb/openvdb/openvdb.cc index f1e3b79224..ee58883918 100644 --- a/openvdb/openvdb/openvdb.cc +++ b/openvdb/openvdb/openvdb.cc @@ -38,7 +38,7 @@ // OPENVDB_USE_FUTURE_ABI_=ON. #ifndef OPENVDB_USE_FUTURE_ABI_13 #if OPENVDB_ABI_VERSION_NUMBER == 13 - #error ABI = 12 is still in active development and has not been finalized, \ + #error ABI = 13 is still in active development and has not been finalized, \ CMake option OPENVDB_USE_FUTURE_ABI_13 suppresses this error #endif #endif From 785bed5625b55125bd7f2d1a5e5df312b0e78bd2 Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 11:41:42 -0700 Subject: [PATCH 11/17] Fix some documentation formatting issues Signed-off-by: Dan Bailey --- doc/changes.txt | 354 ++++++++++++++++++++++++------------------------ 1 file changed, 177 insertions(+), 177 deletions(-) diff --git a/doc/changes.txt b/doc/changes.txt index 308bfcad55..357794cb03 100644 --- a/doc/changes.txt +++ b/doc/changes.txt @@ -14,208 +14,208 @@ preserve ABI compatibility it might be necessary to define the macro N is 10 for Houdini 20.0 and 11 for Houdini 20.5. +@par
GCC 9 is no longer supported.
@par OpenVDB: -- Improvements: - New features: - - Added fillet() method in tools::LevelSetFilter to round off concave edges - to create smoother transition between surfaces. - - Improvements: - - Added openvdb::assertAbort to replace cassert and a - @c OPENVDB_ENABLE_ASSERTS cmake argument/compile define to toggle - assertions in OpenVDB code, independantly of NDEBUG. Asserts are - no longer enabled by default in when NDEBUG is absent (e.g. - Debug builds). - - Removed last traces of Boost when @c OPENVDB_USE_DELAYED_LOADING is OFF - [Reported by Brian McKinnon] - - RootNode code cleanup to eliminate redundant key conversion and - to create map values in-place. - - Add RootNode::deleteChildOrTile() to delete a child or tile of - the root node. - - ValueAccessors are now defined and created in the Tree class - instead of in the Grid class so that custom Tree implementations - may define and create their own ValueAccessors if desired. - - Added support for PDAL to vdb_tool [Contributed by Tom Matterson] - - LeafManager and NodeManager now use Index64 for leaf counts internally. - - Added RootNode::probeChild() const. - - Added RootNode::probeChild() and RootNode::probeConstChild(). - - Added RootNode::probe() and RootNode::probeConst() to query key presence, - child node, value and active state. - - Added InternalNode::probeChild() const. - - Added InternalNode::probeChild() and probeChildConst() with coord access - and optionally value and active state. - - Added InternalNode::probeChild() and probeChildConst() with index access - and optionally value and active state. - - Added InternalNode::isValueOff(), LeafNode::isValueOff(), - LeafNodeBool::isValueOff(), LeafNodeMask::isValueOff(). - - Added LeafNodeMask::probeValue(Index,val), LeafNodeBool::probeValue(Index,val). - - Added RootNode::getValueUnsafe(), RootNode::getChildUnsafe(), - RootNode::getConstChildUnsafe(). - - Added InternalNode::getValueUnsafe(), InternalNode::getChildUnsafe(), - InternalNode::getConstChildUnsafe(). - - Added InternalNode::setActiveStateUnsafe(), InternalNode::setValueOnlyUnsafe(), - InternalNode::setValueOnUnsafe(), InternalNode::setValueOffUnsafe(). - - Added InternalNode::setChildUnsafe(), InternalNode::resetChildUnsafe(), - InternalNode::stealChildUnsafe(), InternalNode::deleteChildUnsafe(). - - For LeafNode, LeafNodeBool and LeafNodeMask - added - LeafNode::getValueUnsafe(), LeafNode::setActiveStateunsafe(), - LeafNode::setValueOnlyUnsafe(), LeafNode::setValueOnUnsafe(), - LeafNode::setValueOffUnsafe(). - - ABI changes: - - Tree::leafCount(), Tree::unallocatedLeafCount(), - Tree::nonLeafCount() and Tree::nodeCount() now use Index64 in their - return types instead of Index32. - - API Changes: - - RootNode::tileCount(), RootNode::activeTileCount() and - RootNode::inactiveTileCount() are now public. - - RootNode::hasKey() and RootNode::coordToKey() are now public. - - RootNode::leafCount(), RootNode::nonLeafCount() and RootNode::nodeCount() - now use Index64 instead of Index32. The Index32 variant is deprecated. - - InternalNode::leafCount(), InternalNode::nonLeafCount() and - InternalNode::nodeCount() now use Index64 instead of Index32. The Index32 - variant is deprecated. - - LeafNode::leafCount() and LeafNode::nonLeafCount() now use Index64 instead - of Index32. The Index32 variant is deprecated. - - Bug Fixes: - - Fix potential crash reading corrupt .vdb files with invalid - blosc or zip chunks. - [Reported by Matthias Ueberheide] - - - Fix a bug in RootNode::setOrigin() where the origin was updated - before the error was thrown potentially leaving the root in an - invalid state. - - Fixed a thread sanitizer issue which could cause undefined - behaviour in VolumeToSpheres::fillWithSpheres - [Reported by Jérémie Dumas] - - Fixed an occurance of undefined behaviour in tools::activate - (though this would typically not have manifested with any - unintended behaviour) + New features: + - Added tools::LevelSetFilter::fillet() method to round off concave edges + to create smoother transition between surfaces. + + Improvements: + - Added openvdb::assertAbort to replace cassert and a + @c OPENVDB_ENABLE_ASSERTS cmake argument/compile define to toggle + assertions in OpenVDB code, independantly of NDEBUG. Asserts are + no longer enabled by default in when NDEBUG is absent (e.g. + Debug builds). + - Removed last traces of Boost when @c OPENVDB_USE_DELAYED_LOADING is OFF + [Reported by Brian McKinnon] + - RootNode code cleanup to eliminate redundant key conversion and + to create map values in-place. + - Add RootNode::deleteChildOrTile() to delete a child or tile of + the root node. + - ValueAccessors are now defined and created in the Tree class + instead of in the Grid class so that custom Tree implementations + may define and create their own ValueAccessors if desired. + - Added support for PDAL to vdb_tool [Contributed by Tom Matterson] + - LeafManager and NodeManager now use Index64 for leaf counts internally. + - Added RootNode::probeChild() const. + - Added RootNode::probeChild() and RootNode::probeConstChild(). + - Added RootNode::probe() and RootNode::probeConst() to query key presence, + child node, value and active state. + - Added InternalNode::probeChild() const. + - Added InternalNode::probeChild() and probeChildConst() with coord access + and optionally value and active state. + - Added InternalNode::probeChild() and probeChildConst() with index access + and optionally value and active state. + - Added InternalNode::isValueOff(), LeafNode::isValueOff(), + LeafNodeBool::isValueOff(), LeafNodeMask::isValueOff(). + - Added LeafNodeMask::probeValue(Index,val), LeafNodeBool::probeValue(Index,val). + - Added RootNode::getValueUnsafe(), RootNode::getChildUnsafe(), + RootNode::getConstChildUnsafe(). + - Added InternalNode::getValueUnsafe(), InternalNode::getChildUnsafe(), + InternalNode::getConstChildUnsafe(). + - Added InternalNode::setActiveStateUnsafe(), InternalNode::setValueOnlyUnsafe(), + InternalNode::setValueOnUnsafe(), InternalNode::setValueOffUnsafe(). + - Added InternalNode::setChildUnsafe(), InternalNode::resetChildUnsafe(), + InternalNode::stealChildUnsafe(), InternalNode::deleteChildUnsafe(). + - For LeafNode, LeafNodeBool and LeafNodeMask - added + LeafNode::getValueUnsafe(), LeafNode::setActiveStateunsafe(), + LeafNode::setValueOnlyUnsafe(), LeafNode::setValueOnUnsafe(), + LeafNode::setValueOffUnsafe(). + + ABI changes: + - Tree::leafCount(), Tree::unallocatedLeafCount(), + Tree::nonLeafCount() and Tree::nodeCount() now use Index64 in their + return types instead of Index32. + + API Changes: + - RootNode::tileCount(), RootNode::activeTileCount() and + RootNode::inactiveTileCount() are now public. + - RootNode::hasKey() and RootNode::coordToKey() are now public. + - RootNode::leafCount(), RootNode::nonLeafCount() and RootNode::nodeCount() + now use Index64 instead of Index32. The Index32 variant is deprecated. + - InternalNode::leafCount(), InternalNode::nonLeafCount() and + InternalNode::nodeCount() now use Index64 instead of Index32. The Index32 + variant is deprecated. + - LeafNode::leafCount() and LeafNode::nonLeafCount() now use Index64 instead + of Index32. The Index32 variant is deprecated. + + Bug Fixes: + - Fix potential crash reading corrupt .vdb files with invalid + blosc or zip chunks. + [Reported by Matthias Ueberheide] + + - Fix a bug in RootNode::setOrigin() where the origin was updated + before the error was thrown potentially leaving the root in an + invalid state. + - Fixed a thread sanitizer issue which could cause undefined + behaviour in VolumeToSpheres::fillWithSpheres + [Reported by Jérémie Dumas] + - Fixed an occurance of undefined behaviour in tools::activate + (though this would typically not have manifested with any + unintended behaviour) @par NanoVDB: - Bug fix: - - nanovdb::readGrids works with raw grid buffer. + - nanovdb::readGrids works with raw grid buffer. - Improvements: - - Restructure files location and namespace to be more align with - OpenVDB. The namespaces touched by the restructuring are: io, - cuda, util, tools, and math. - - Add two scripts updateFiles.sh and updateFiles.py to update the - files using NanoVDB. The script updateFiles.py works on both - Windows and Linux. For a more complete list of changes, see API - Changes (details). - - - cuda::PointsToGrid supports target density. - - Add support for NanoVDB Grid of type UInt8. - - Add ability to use externally managed CUDA buffer. - - Add create methods for CudaDeviceBuffer and exceptions. - - Improve GridValidator logic, e.g. include check for grid count. - - Add operator > and >= for class Coord according to lexicographical order. - - Add toCodec to convert string to Codec enumeration type. - - Add nanovdb::strlen(). - - Add strncpy util. - - Add NANOVDB_DISABLE_SYNC_CUDA_MALLOC that maps cudaMallocAsync - and cudaFreeAsync to cudaMalloc and cudaFree respectively. - - Add guard to UINT64_C. - - Remove use of cudaMallocAsync in PointsToGrid.cuh. - - Align PNanoVDB blind metadata to NanoVDB. + - Restructure files location and namespace to be more align with + OpenVDB. The namespaces touched by the restructuring are: io, + cuda, util, tools, and math. + - Add two scripts updateFiles.sh and updateFiles.py to update the + files using NanoVDB. The script updateFiles.py works on both + Windows and Linux. For a more complete list of changes, see API + Changes (details). + + - cuda::PointsToGrid supports target density. + - Add support for NanoVDB Grid of type UInt8. + - Add ability to use externally managed CUDA buffer. + - Add create methods for CudaDeviceBuffer and exceptions. + - Improve GridValidator logic, e.g. include check for grid count. + - Add operator > and >= for class Coord according to lexicographical order. + - Add toCodec to convert string to Codec enumeration type. + - Add nanovdb::strlen(). + - Add strncpy util. + - Add @c NANOVDB_DISABLE_SYNC_CUDA_MALLOC that maps cudaMallocAsync + and cudaFreeAsync to cudaMalloc and cudaFree respectively. + - Add guard to @c UINT64_C. + - Remove use of cudaMallocAsync in PointsToGrid.cuh. + - Align PNanoVDB blind metadata to NanoVDB. - API Changes: - - Change mapToGridType to toGridType. - - Change mapToMagic to toMagic. - - Change CpuTimer.h to Timer.h. + - Change mapToGridType to toGridType. + - Change mapToMagic to toMagic. + - Change CpuTimer.h to Timer.h. - API Changes (details): - - These APIs are now under the math namespace: Ray, DDA, HDDA, - Vec3, Vec4, BBox, ZeroCrossing, TreeMarcher, PointTreeMarcher, - BoxStencil, CurvatureStencil, GradStencil, WenoStencil, AlignUp, - Min, Max, Abs, Clamp, Sqrt, Sign, Maximum, Delta, RoundDown, pi, - isApproxZero, Round, createSampler, SampleFromVoxels. - - - These APIs are now under the tools namespace: createNanoGrid, - StatsMode, createLevelSetSphere, createFogVolumeSphere, - createFogVolumeSphere, createFogVolumeSphere, - createFogVolumeTorus, createLevelSetBox, CreateNanoGrid, - updateGridStats, evalChecksum, validateChecksum, checkGrid, - Extrema. - - These APIs are now under the util namespace: is_floating_point, - findLowestOn, findHighestOn, Range, streq, strcpy, strcat, - empty, Split, invoke, forEach, reduce, prefixSum, is_same, - is_specialization, PtrAdd, PtrDiff. - - - Move nanovdb::build to nanovdb::tools::build. - - Rename nanovdb::BBoxR to nanovdb::Vec3dBBox. - - Rename nanovdb::BBox to nanovdb::Vec3dBbox. - - Move nanovdb::cudaCreateNodeManager to nanovdb::cuda::createNodeManager. - - Move and rename nanovdb::cudaVoxelsToGrid to nanovdb::cuda::voxelsToGrid. - - Move and rename nanovdb::cudaPointsToGrid to nanovdb::cuda::pointsToGrid. - - Move nanovdb::DitherLUT to nanovdb::math::DitherLUT. - - Move and rename nanovdb::PackedRGBA8 to nanovdb::math::Rgba8. - - Move nanovdb::Rgba8 to nanovdb::math::Rgba8. - - Move and rename nanovdb::CpuTimer to nanovdb::util::Timer. - - Move nanovdb::GpuTimer to nanovdb::util::cuda::Timer. - - Move and rename nanovdb::CountOn to nanovdb::util::countOn. - - - Move util/GridHandle.h to GridHandle.h. - - Move util/BuildGrid.h to tools/GridBuilder.h. - - Move util/GridBuilder.h to tools/GridBuilder.h. - - Move util/IO.h to io/IO.h. - - Move util/CSampleFromVoxels.h to math/CSampleFromVoxels.h. - - Move util/DitherLUT.h to math/DitherLUT.h. - - Move util/HDDA.h to math/HDDA.h. - - Move util/Ray.h to math/Ray.h. - - Move util/SampleFromVoxels.h to math/SampleFromVoxels.h. - - Move util/Stencils.h to nanovdb/math/Stencils.h. - - Move util/CreateNanoGrid.h to tools/CreateNanoGrid.h. - - Move and rename util/Primitives.h to tools/CreatePrimitives.h. - - Move util/GridChecksum.h to tools/GridChecksum.h. - - Move util/GridStats.h to tools/GridStats.h. - - Move util/GridChecksum.h to tools/GridChecksum.h. - - Move util/GridValidator.h to tools/GridValidator.h. - - Move util/NanoToOpenVDB.h to tools/NanoToOpenVDB.h. - - Move util/cuda/CudaGridChecksum.cuh to tools/cuda/CudaGridChecksum.cuh. - - Move util/cuda/CudaGridStats.cuh to tools/cuda/CudaGridStats.cuh. - - Move util/cuda/CudaGridValidator.cuh to tools/cuda/CudaGridValidator.cuh. - - Move util/cuda/CudaIndexToGrid.cuh to tools/cuda/CudaIndexToGrid.cuh. - - Move and rename util/cuda/CudaPointsToGrid.cuh to tools/cuda/PointsToGrid.cuh. - - Move util/cuda/CudaSignedFloodFill.cuh to tools/cuda/CudaSignedFloodFill.cuh. - - Move and rename util/cuda/CudaDeviceBuffer.h to cuda/DeviceBuffer.h. - - Move and rename util/cuda/CudaGridHandle.cuh to cuda/GridHandle.cuh. - - Move and rename util/cuda/CudaUtils.h to util/cuda/Util.h. - - Move and consolidate util/cuda/GpuTimer.h to util/cuda/Timer.h. + - These APIs are now under the math namespace: Ray, DDA, HDDA, + Vec3, Vec4, BBox, ZeroCrossing, TreeMarcher, PointTreeMarcher, + BoxStencil, CurvatureStencil, GradStencil, WenoStencil, AlignUp, + Min, Max, Abs, Clamp, Sqrt, Sign, Maximum, Delta, RoundDown, pi, + isApproxZero, Round, createSampler, SampleFromVoxels. + + - These APIs are now under the tools namespace: createNanoGrid, + StatsMode, createLevelSetSphere, createFogVolumeSphere, + createFogVolumeSphere, createFogVolumeSphere, + createFogVolumeTorus, createLevelSetBox, CreateNanoGrid, + updateGridStats, evalChecksum, validateChecksum, checkGrid, + Extrema. + - These APIs are now under the util namespace: is_floating_point, + findLowestOn, findHighestOn, Range, streq, strcpy, strcat, + empty, Split, invoke, forEach, reduce, prefixSum, is_same, + is_specialization, PtrAdd, PtrDiff. + + - Move nanovdb::build to nanovdb::tools::build. + - Rename nanovdb::BBoxR to nanovdb::Vec3dBBox. + - Rename nanovdb::BBox to nanovdb::Vec3dBbox. + - Move nanovdb::cudaCreateNodeManager to nanovdb::cuda::createNodeManager. + - Move and rename nanovdb::cudaVoxelsToGrid to nanovdb::cuda::voxelsToGrid. + - Move and rename nanovdb::cudaPointsToGrid to nanovdb::cuda::pointsToGrid. + - Move nanovdb::DitherLUT to nanovdb::math::DitherLUT. + - Move and rename nanovdb::PackedRGBA8 to nanovdb::math::Rgba8. + - Move nanovdb::Rgba8 to nanovdb::math::Rgba8. + - Move and rename nanovdb::CpuTimer to nanovdb::util::Timer. + - Move nanovdb::GpuTimer to nanovdb::util::cuda::Timer. + - Move and rename nanovdb::CountOn to nanovdb::util::countOn. + + - Move util/GridHandle.h to GridHandle.h. + - Move util/BuildGrid.h to tools/GridBuilder.h. + - Move util/GridBuilder.h to tools/GridBuilder.h. + - Move util/IO.h to io/IO.h. + - Move util/CSampleFromVoxels.h to math/CSampleFromVoxels.h. + - Move util/DitherLUT.h to math/DitherLUT.h. + - Move util/HDDA.h to math/HDDA.h. + - Move util/Ray.h to math/Ray.h. + - Move util/SampleFromVoxels.h to math/SampleFromVoxels.h. + - Move util/Stencils.h to nanovdb/math/Stencils.h. + - Move util/CreateNanoGrid.h to tools/CreateNanoGrid.h. + - Move and rename util/Primitives.h to tools/CreatePrimitives.h. + - Move util/GridChecksum.h to tools/GridChecksum.h. + - Move util/GridStats.h to tools/GridStats.h. + - Move util/GridChecksum.h to tools/GridChecksum.h. + - Move util/GridValidator.h to tools/GridValidator.h. + - Move util/NanoToOpenVDB.h to tools/NanoToOpenVDB.h. + - Move util/cuda/CudaGridChecksum.cuh to tools/cuda/CudaGridChecksum.cuh. + - Move util/cuda/CudaGridStats.cuh to tools/cuda/CudaGridStats.cuh. + - Move util/cuda/CudaGridValidator.cuh to tools/cuda/CudaGridValidator.cuh. + - Move util/cuda/CudaIndexToGrid.cuh to tools/cuda/CudaIndexToGrid.cuh. + - Move and rename util/cuda/CudaPointsToGrid.cuh to tools/cuda/PointsToGrid.cuh. + - Move util/cuda/CudaSignedFloodFill.cuh to tools/cuda/CudaSignedFloodFill.cuh. + - Move and rename util/cuda/CudaDeviceBuffer.h to cuda/DeviceBuffer.h. + - Move and rename util/cuda/CudaGridHandle.cuh to cuda/GridHandle.cuh. + - Move and rename util/cuda/CudaUtils.h to util/cuda/Util.h. + - Move and consolidate util/cuda/GpuTimer.h to util/cuda/Timer.h. @par Python: - - OpenVDB Python bindings are now implemented using nanobind - instead of pybind11 - - The OpenVDB Python module has been changed from pyopenvdb to openvdb - - Added Python bindings for NanoVDB + - OpenVDB Python bindings are now implemented using nanobind + instead of pybind11 + - The OpenVDB Python module has been changed from pyopenvdb to openvdb + - Added Python bindings for NanoVDB @par Houdini: - - When @c OPENVDB_ENABLE_RPATH is ON, the location of - libopenvdb_houdini is now added to the rpath of all Houdini - dsos. + - When @c OPENVDB_ENABLE_RPATH is @c ON, the location of + libopenvdb_houdini is now added to the rpath of all Houdini + dsos. @par Build: - - Fixed an issue with OpenVDB AX's CMake on Windows where the - static and shared library targets would have the same name - [Reported by Nicholas Yue] - - @c USE_EXPLICIT_INSTANTIATION is now disabled on Windows by default - due to OOM linker issues. - - Jemalloc is now the preferred allocator of choice on all - platforms when @c CONCURRENT_MALLOC is set to Auto. - - Fixed an issue with the Blosc CMake FindPackage for the OpenVDB - Windows static library. + - Fixed an issue with OpenVDB AX's CMake on Windows where the + static and shared library targets would have the same name + [Reported by Nicholas Yue] + - @c USE_EXPLICIT_INSTANTIATION is now disabled on Windows by default + due to OOM linker issues. + - Jemalloc is now the preferred allocator of choice on all + platforms when @c CONCURRENT_MALLOC is set to Auto. + - Fixed an issue with the Blosc CMake FindPackage for the OpenVDB + Windows static library. @htmlonly @endhtmlonly From bd86b3781c8c1e25155d98253b6a854c5c369a9a Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 12:01:51 -0700 Subject: [PATCH 12/17] Revert nanobind minimum version, more cleanup and refined future versions Signed-off-by: Dan Bailey --- cmake/OpenVDBGLFW3Setup.cmake | 12 ------------ cmake/config/OpenVDBVersions.cmake | 10 +++++++--- doc/dependencies.txt | 2 +- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/cmake/OpenVDBGLFW3Setup.cmake b/cmake/OpenVDBGLFW3Setup.cmake index 21ae81bb4c..26980fc6ff 100644 --- a/cmake/OpenVDBGLFW3Setup.cmake +++ b/cmake/OpenVDBGLFW3Setup.cmake @@ -109,18 +109,6 @@ endif() set(glfw3_FIND_VERSION ${MINIMUM_GLFW_VERSION}) find_package(glfw3 ${MINIMUM_GLFW_VERSION} REQUIRED) -# We only use find_package_handle_standard_args to verify and print -# appropriate messages. This now explicitly errors in 3.19... -# @todo Improve this entire GLFW3 search -# https://gitlab.kitware.com/cmake/cmake/-/issues/21505 -if(${CMAKE_VERSION} VERSION_LESS 3.19) - find_package(PackageHandleStandardArgs) - find_package_handle_standard_args(glfw3 - REQUIRED_VARS glfw3_DIR glfw3_FOUND - VERSION_VAR glfw3_VERSION - ) -endif() - if(OPENVDB_FUTURE_DEPRECATION AND FUTURE_MINIMUM_GLFW_VERSION) if(glfw3_VERSION VERSION_LESS ${FUTURE_MINIMUM_GLFW_VERSION}) message(DEPRECATION "Support for GLFW versions < ${FUTURE_MINIMUM_GLFW_VERSION} " diff --git a/cmake/config/OpenVDBVersions.cmake b/cmake/config/OpenVDBVersions.cmake index 9973778c80..0b8dd5ef6a 100644 --- a/cmake/config/OpenVDBVersions.cmake +++ b/cmake/config/OpenVDBVersions.cmake @@ -40,7 +40,10 @@ if(NOT DISABLE_DEPENDENCY_VERSION_CHECKS) set(MINIMUM_MSVC_VERSION 19.30) # 1928 (Visual Studio 2019 Version 16.8 + 16.9) set(MINIMUM_BOOST_VERSION 1.80) - set(MINIMUM_NANOBIND_VERSION 2.0.0) + # Nanobind does not store the version in the CMake config file in 2.0.0. + # This issue was fixed in 2.1.0 so next time we bump the minimum version, + # we can define this. + #set(MINIMUM_NANOBIND_VERSION 2.0.0) set(MINIMUM_IMATH_VERSION 3.1) set(MINIMUM_OPENEXR_VERSION 3.1) set(MINIMUM_ZLIB_VERSION 1.2.7) @@ -70,15 +73,16 @@ endif() # set(FUTURE_MINIMUM_ICC_VERSION 19) # set(FUTURE_MINIMUM_CXX_STANDARD 20) -set(FUTURE_MINIMUM_CMAKE_VERSION 3.20) +set(FUTURE_MINIMUM_CMAKE_VERSION 3.24) set(FUTURE_MINIMUM_OPENEXR_VERSION 3.2) set(FUTURE_MINIMUM_BOOST_VERSION 1.82) set(FUTURE_MINIMUM_GLFW_VERSION 3.3) set(FUTURE_MINIMUM_LOG4CPLUS_VERSION 2.0) +# set(FUTURE_MINIMUM_NANOBIND_VERSION 2.1.0) # set(FUTURE_MINIMUM_BLOSC_VERSION 1.17.0) # set(FUTURE_MINIMUM_TBB_VERSION 2020.3) set(FUTURE_MINIMUM_PYTHON_VERSION 3.11) set(FUTURE_MINIMUM_NUMPY_VERSION 1.26.0) # set(FUTURE_MINIMUM_HOUDINI_VERSION 20.0) -# set(FUTURE_MINIMUM_LLVM_VERSION 13.0.0) +set(FUTURE_MINIMUM_LLVM_VERSION 15.0.0) diff --git a/doc/dependencies.txt b/doc/dependencies.txt index 2ea810e5ea..041fb834c0 100644 --- a/doc/dependencies.txt +++ b/doc/dependencies.txt @@ -70,7 +70,7 @@ LLVM | 13.0.0 | 15.0.0* | Target-independent code generation Bison | 3.7.0 | 3.7.0 | General-purpose parser generator | Y | Y | https://www.gnu.org/software/gcc Flex | 2.6.4 | 2.6.4 | Fast lexical analyzer generator | Y | Y | https://github.com/westes/flex Python | 3.10 | 3.11 | The python interpreter and libraries | Y | Y | https://www.python.org -nanobind | 2.0.0 | Latest | C++/python bindings | Y | Y | https://nanobind.readthedocs.io +nanobind | 2.0.0 | 2.1.0 | C++/python bindings | Y | Y | https://nanobind.readthedocs.io NumPy | 1.23.0 | 1.26.0 | Scientific computing with Python | Y | Y | http://www.numpy.org GoogleTest | 1.10 | Latest | A unit testing framework module for C++ | Y | Y | https://github.com/google/googletest CppUnit | 1.10 | Latest | A unit testing framework module for C++ | N | Y | https://freedesktop.org/wiki/Software/cppunit From 94fcd865c4a1cd9eeee37e90261e51848d52b1ad Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 12:03:49 -0700 Subject: [PATCH 13/17] More docs formatting fixes Signed-off-by: Dan Bailey --- doc/changes.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/changes.txt b/doc/changes.txt index 357794cb03..520a029f56 100644 --- a/doc/changes.txt +++ b/doc/changes.txt @@ -21,11 +21,11 @@ GCC 9 is no longer supported. @par OpenVDB: - New features: +- New features: - Added tools::LevelSetFilter::fillet() method to round off concave edges to create smoother transition between surfaces. - Improvements: +- Improvements: - Added openvdb::assertAbort to replace cassert and a @c OPENVDB_ENABLE_ASSERTS cmake argument/compile define to toggle assertions in OpenVDB code, independantly of NDEBUG. Asserts are @@ -67,12 +67,12 @@ OpenVDB: LeafNode::setValueOnlyUnsafe(), LeafNode::setValueOnUnsafe(), LeafNode::setValueOffUnsafe(). - ABI changes: +- ABI changes: - Tree::leafCount(), Tree::unallocatedLeafCount(), Tree::nonLeafCount() and Tree::nodeCount() now use Index64 in their return types instead of Index32. - API Changes: +- API Changes: - RootNode::tileCount(), RootNode::activeTileCount() and RootNode::inactiveTileCount() are now public. - RootNode::hasKey() and RootNode::coordToKey() are now public. @@ -84,7 +84,7 @@ OpenVDB: - LeafNode::leafCount() and LeafNode::nonLeafCount() now use Index64 instead of Index32. The Index32 variant is deprecated. - Bug Fixes: +- Bug Fixes: - Fix potential crash reading corrupt .vdb files with invalid blosc or zip chunks. [Reported by Matthias Ueberheide] From c6161d7c678d539127913ba0fc58b78bbc0d9eb2 Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 13:07:38 -0700 Subject: [PATCH 14/17] Add a note to the change log about the re-licensing Signed-off-by: Dan Bailey --- CHANGES | 2 ++ doc/changes.txt | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/CHANGES b/CHANGES index f15d035aa5..41166b30d5 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,8 @@ OpenVDB Version History Version 12.0.0 - October 31, 2024 + OpenVDB is now licensed under the Apache 2.0 license, instead of the MPL 2.0 license. + This version introduces ABI changes relative to older major releases, so to preserve ABI compatibility it might be necessary to define the macro OPENVDB_ABI_VERSION_NUMBER=N, where, for example, N is 10 for diff --git a/doc/changes.txt b/doc/changes.txt index 520a029f56..11c40c0c1e 100644 --- a/doc/changes.txt +++ b/doc/changes.txt @@ -6,6 +6,11 @@ @par Version 12.0.0 - October 31, 2024 +@par +
+OpenVDB is now licensed under the Apache 2.0 license, instead of the MPL 2.0 license. +
+ @par
This version introduces ABI changes relative to older major releases, so to From 700390df40f347f5818a473d3c1bcc943edb2ffd Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 13:16:01 -0700 Subject: [PATCH 15/17] A few minor docs updates Signed-off-by: Dan Bailey --- doc/build.txt | 4 +--- doc/codingstyle.txt | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/build.txt b/doc/build.txt index 3048731a55..81be6e1a68 100644 --- a/doc/build.txt +++ b/doc/build.txt @@ -238,10 +238,8 @@ it's a good idea to read the above section on DCC | Supported Version | OpenVDB ABI | -------- | ----------------- | ----------- | -Houdini | 19.5 | 9 | Houdini | 20.0 | 10 | -Maya | 2018 | Any | -Maya | 2019 | Any | +Houdini | 20.5 | 11 | @subsection buildBuildHou Building Against Houdini diff --git a/doc/codingstyle.txt b/doc/codingstyle.txt index 2a9a60aaf9..6f298e83e7 100644 --- a/doc/codingstyle.txt +++ b/doc/codingstyle.txt @@ -7,7 +7,7 @@ This document details the coding practices that are used in the OpenVDB codebase. Contributed code should conform to these guidelines to maintain consistency and maintainability. If there is a rule that you would like -clarified, changed, or added, please send a note to openvdb@gmail.com. +clarified, changed, or added, please send a note to openvdb-dev@lists.aswf.io. @section sStyleContents Contents From c0197d2e395c1d050e56ce79cfab0f19f3ef01c3 Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 13:16:52 -0700 Subject: [PATCH 16/17] A few small docs updates Signed-off-by: Dan Bailey --- doc/build.txt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/doc/build.txt b/doc/build.txt index 81be6e1a68..c04e870aa3 100644 --- a/doc/build.txt +++ b/doc/build.txt @@ -605,13 +605,6 @@ OpenVDB uses [imported targets](https://cmake.org/cmake/help/latest/command/add_ for all its dependencies. For imported Boost compatibility, the following versions of CMake are required: - - Boost 1.73 requires CMake 3.17.2 or newer. - - Boost 1.74 requires CMake 3.19 or newer. - - Boost 1.75 requires CMake 3.19.5 or newer. - - Boost 1.76 requires CMake 3.20.3 or newer. - - Boost 1.77 requires CMake 3.21.3 or newer. - - Boost 1.78 requires CMake 3.22.2 or newer. - - Boost 1.79 requires CMake 3.23.2 or newer. - Boost 1.80 requires CMake 3.24.2 or newer. - Boost 1.81 requires CMake 3.25.2 or newer. - Boost 1.82 requires CMake 3.27.0 or newer. From 269300808a4651daa65836214fc20f78e1c0eb7f Mon Sep 17 00:00:00 2001 From: Dan Bailey Date: Thu, 31 Oct 2024 15:58:05 -0700 Subject: [PATCH 17/17] Add LLVM 13 back into AX matrix Signed-off-by: Dan Bailey --- .github/workflows/ax.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ax.yml b/.github/workflows/ax.yml index e8ed06f5c4..83ac4500e7 100644 --- a/.github/workflows/ax.yml +++ b/.github/workflows/ax.yml @@ -120,9 +120,9 @@ jobs: strategy: matrix: config: - #@note llvm15 never got its own brew formula... - # Last macos runner befor M1 (macos-14) + # Last macos runner before M1 (macos-14) - { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '15' } + - { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '13' } fail-fast: false steps: - uses: actions/checkout@v3