Providing these as public headers in opensubdiv/osd allows client code
to implement evaluation kernels in their own TBB, CUDA, OMP, GCD, etc.
code without needing an implementation within the osd codebase.
Tested with C++, CUDA, and oneTBB client kernels.
Folded osd/patchBasisCommon.h and osd/patchBasisCommonEval.h into the
single header file osd/patchBasis.h and renamed osd/PatchBasisCommonTypes.h
to osd/patchBasisTypes.h
Moved these into the OpenSubdiv::Osd namespace when compiled for C++ and
added a brief comment describing the intended use cases for this code.
Updated the CMake build to locate TBB using TBB's CMake config
and deleted the local cmake/FindTBB.cmake module.
While the source code remains compatible with earlier versions of
TBB, updated the minimum TBB version from 4.4 to 2018 since that
is the earliest TBB release to include a CMake config. This is
the version of TBB specified for the CY2019 VFX Reference Platform.
Tested on Windows, Linux, and macOS using TBB 2018 Update 6,
TBB 2020 Update 3, and oneTBB 2021.10.0
The MSVC build has been setting /W3 as an override for /Wall but this
has been causing generator specfic build inconsistencies.
For examples, this override works when using the Visual Studio generators,
but not when using the Ninja generator. This causes Ninja to build using
/Wall instead of /W3.
This removes the initial setting of /Wall to avoid this inconsistency.
We plan to continue to address compiler warnings to allow us to raise
this warning level further but that is a separate task.
The existing implementation in Osd::TbbEvaluator has never been implemented
correctly and that implementation is incompatible with the oneTBB API.
These methods are now marked deprecated in the two places where defined
in Osd::TbbEvaluator and Osd::OmpEvaluator, but for consistency we preserve
the existing implementation when building with older versions of tbb.
We've already removed all use of these methods from the tests and examples.
The internal GL API Loader implementation is self contained and does
not require the system OpenGL implementation at build time, so we
don't need the OpenGL::GL import target for this case.
An earlier change added the OpenGL::GL import target for legacy uses
of GLEW and it remains correct there.
Fixes#1277
Also fixed the build so that obsolete CUDA gpu architectures
are specified as fallback values only when using older obsolete
versions of CUDA. We'll likely remove these fallbacks from future
releases of OpenSubdiv.
Fixes#1299
Updated target object dependencies for Apple static and dynamic frameworks
to use TARGET_EXISTS for osd_gpu_obj to allow correct linking when no
OSD_GPU targets are enabled. We'll likely revisit these targets further
for future releases of OpenSubdiv.
Fixes#1224Fixes#1236
The OpenSubdiv public interface currently requires only C++11 but we
choose this version since C++14 has been the default since GCC 6,
Clang 6, and Visual Studio 2017 (for the most part) and C++14 has been
the default for OpenSubdiv on macOS when support for Metal is enabled.
This setting is guarded so that it can be overridden by the caller when
running CMake.
Fixes#1276
This is a slight improvement and fixes link problems in some
cases, though we expect to further improve handling of target
depenedencies overall.
Fixes#1277
Added an explicit target link dependency for OpenGL::GLX when
building example programs with CUDA on systems with GLX since
GLX is used by the example code used to initialize the CUDA
device context.
This is a simple workaround and we'd like to revisit and improve
how target dependencies are handled overall.
Fixes#1294
Added target include directories for the library targets
so that interface include directories are published with
the OpenSubdiv cmake config.
Also, removed a cmake version test which is no longer needed.
Fixes#1278
- added new figure for Bfr tutorial 1.1
- improved the set figures for Bfr tutorial 1.2
- improved the set figures for Bfr tutorial 2.1
- added accompanying text related to new figures
The cmake config export paths are now more consistent
with other vfx platform projects.
The target names are now more consistent with existing
opensubdiv static and dynamic library names.