Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-12-07Build: clean up handling of some Cycles build optionsBrecht Van Lommel
* Don't link embree / OSL when WITH_CYCLES is disabled * Simplify lite config by disabling Cycles as a whole using this * Remove code handling the removed WITH_CYCLES_NETWORK option
2021-11-04Cleanup: capitalize ON/OFF with CMakeCampbell Barton
2021-09-10Windows: Fix VS2022 detectionRay Molenkamp
VS2019 had a compiler update moving it into the range that was used to detect VS2022. This patch updates the detection to the current VS2022 preview compiler version. Reported by Jesse Y on chat.
2021-08-25Windows/Ninja: Optimize linker performanceRay Molenkamp
The /Zc:inline flag is by default off in the MSVC compiler however when you build with msbuild it adds it to the build flags on its own. Ninja however does not decide on its own to add flags you didn't ask for and was building without this flag. This change explicitly adds the compiler flag so msbuild and ninja builds are once more building with the same build flags leading to smaller .obj files when building with ninja and lightening the workload for the linker. This flag is available starting MSVC 2013 update 2 so does not need to be guarded with version checks.
2021-08-21Add support for Zstandard compression for .blend filesLukas Stockner
Compressing blendfiles can help save a lot of disk space, but the slowdown while loading and saving is a major annoyance. Currently Blender uses Zlib (aka gzip aka Deflate) for compression, but there are now several more modern algorithms that outperform it in every way. In this patch, I decided for Zstandard aka Zstd for several reasons: - It is widely supported, both in other programs and libraries as well as in general-purpose compression utilities on Unix - It is extremely flexible - spanning several orders of magnitude of compression speeds depending on the level setting. - It is pretty much on the Pareto frontier for all of its configurations (meaning that no other algorithm is both faster and more efficient). One downside of course is that older versions of Blender will not be able to read these files, but one can always just re-save them without compression or decompress the file manually with an external tool. The implementation here saves additional metadata into the compressed file in order to allow for efficient seeking when loading. This is standard-compliant and will be ignored by other tools that support Zstd. If the metadata is not present (e.g. because you manually compressed a .blend file with another tool), Blender will fall back to sequential reading. Saving is multithreaded to improve performance. Loading is currently not multithreaded since it's not easy to predict the access patterns of the loading code when seeking is supported. In the future, we might want to look into making this more predictable or disabling seeking for the main .blend file, which would then allow for multiple background threads that decompress data ahead of time. The compression level was chosen to get sizes comparable to previous versions at much higher speeds. In the future, this could be exposed as an option. Reviewed By: campbellbarton, brecht, mont29 Differential Revision: https://developer.blender.org/D5799
2021-08-05Xcode: support cmake options for grouping in foldersGermano Cavalcante
The Xcode IDE can also benefit from the options: - WINDOWS_USE_VISUAL_STUDIO_SOURCE_FOLDERS - WINDOWS_USE_VISUAL_STUDIO_PROJECT_FOLDERS So add suport to these options and also renames them as they are no longer limited to just Windows and Visual Studio. Reviewed By: brecht, ankitm Differential Revision: https://developer.blender.org/D12132
2021-08-05Cleanup: tab indentation for CMake / GNUmakefileCampbell Barton
2021-06-23CMake/win: Fix linker issue with OCIORay Molenkamp
In certain CMake configurations it was possible that OCIO gave linker errors due to it thinking it was using the shared library rather than the static library we ship.
2021-06-22Build/Windows: Preliminary VS 2022 support.Ray Molenkamp
This adds preliminary VS 2022 support, since there currently is no CMake version that supports the VS2022 IDE only ninja support was tested. IDE support should work without any additional changes as soon as an updated CMake becomes available. As VS2022 appears to keep binary compatibility with earlier MSVC versions, the current SVN libraries will work for this version.
2021-06-10Fix: Build error with MSVCRay Molenkamp
rB4f81b4b4ce29 mistakenly left out the changes to platform_win32.cmake causing a linker error when WITH_GMP and WITH_TBB_MALLOC_PROXY were on.
2021-06-04windows/deps: Fix TBB build issues.Ray Molenkamp
rB847579b42250 updated the TBB build script which had some unintended consequences for windows as the directory layout slightly changed. This change adjusts the builder to the new structure, there are no version/functional changes.
2021-05-31Windows: Clean-up win 8/8.1 API useRay Molenkamp
For 2.93 we bumped the minimum windows requirement to windows 8.1, but did not do any clean-up of any win 8/8.1 API usage we dynamically accessed though LoadLibrary/GetProcAddress. This patch bumps _WIN32_WINNT to 0x0603 (win 8.1) and cleans up any API use that was accessed in a more convoluted way than necessary Differential Revision: https://developer.blender.org/D11331 Reviewed by: harley, nicholas_rishel
2021-03-30MSVC: ASAN support for VS 16.9Ray Molenkamp
This enables ASAN support when used with VS 16.9 enable as usual in cmake with the WITH_COMPILER_ASAN option, or when using make.bat just tag on `asan' to the invocation, ie: `make lite 2019 asan` MSVC: Asan support for 16.9 This enables ASAN support when used with VS 16.9 enable as usual in cmake with the WITH_COMPILER_ASAN option, or when using make.bat just tag on `asan' to the invocation, ie: `make lite 2019 asan` Differential Revision: https://developer.blender.org/D7794 Reviewed By: brecht, sergey
2021-02-25Fix macOS SSE support not detected correctly after recent changesBrecht Van Lommel
Due to moving the code the test binary was incorrectly compiled with OpenMP flags. Move setting of the OpenMP flags to the appropriate place.
2021-02-24Cmake/deps: Update OSL to 1.11.10.0Ray Molenkamp
This bumps OSL to 1.11.10.0. OSL Has a new build time dependency: Clang, and more importantly it expects clang and llvm to share a library folder, which it previously for us did not. This patch changes: -OSL Update to 1.11.10.0 -refactor the llvm/clang/clang-tools-extra builds into the llvm build using the llvm-project tarball for building that has all of the subprojects in it. -update ispc/openmp builds since clang no longer its own dependency and they have to depend on the llvm build now. -Update the windows builder to use the 64 bit host tools since it ran out of ram linking clang -Since OSL now needs clang to link successfully a findclang.cmake has been provided for linux/OSX Differential Revision: https://developer.blender.org/D10212 Reviewed By: brecht, sebbas, sybren
2021-02-22CMake/Windows: Update for new XR_OPENXR versionRay Molenkamp
This updates platform/platform_win32.cmake to support both the old and new library names for OpenXR. The new version links against one additional system library and the debug library filename changed ever so slightly. This is a temporary workaround and can be removed once the new lib versions have landed.
2021-02-22CMake/Windows: Detect Boost versionRay Molenkamp
Rather than hardcoding the lib names, read boosts version.hpp and extract the version from there. This will make it easier to land lib changes in the near future.
2021-02-12OpenColorIO: upgrade to version 2.0.0Brecht Van Lommel
Ref T84819 Build System ============ This is an API breaking new version, and the updated code only builds with OpenColorIO 2.0 and later. Adding backwards compatibility was too complicated. * Tinyxml was replaced with Expat, adding a new dependency. * Yaml-cpp is now built as a dependency on Unix, as was already done on Windows. * Removed currently unused LCMS code. * Pystring remains built as part of OCIO itself, since it has no good build system. * Linux and macOS check for the OpenColorIO verison, and disable it if too old. Ref D10270 Processors and Transforms ========================= CPU processors now need to be created to do CPU processing. These are cached internally, but the cache lookup is not fast enough to execute per pixel or texture sample, so for performance these are now also exposed in the C API. The C API for transforms will no longer be needed afer all changes, so remove it to simplify the API and fallback implementation. Ref D10271 Display Transforms ================== Needs a bit more manual work constructing the transform. LegacyViewingPipeline could also have been used, but isn't really any simpler and since it's legacy we better not rely on it. We moved more logic into the opencolorio module, to simplify the API. There is no need to wrap a dozen functions just to be able to do this in C rather than C++. It's also tightly coupled to the GPU shader logic, and so should be in the same module. Ref D10271 GPU Display Shader ================== To avoid baking exposure and gamma into the GLSL shader and requiring slow recompiles when tweaking, we manually apply them in the shader. This leads to some logic duplicaton between the CPU and GPU display processor, but it seems unavoidable. Caching was also changed. Previously this was done both on the imbuf and opencolorio module levels. Now it's all done in the opencolorio module by simply matching color space names. We no longer use cacheIDs from OpenColorIO since computing them is expensive, and they are unlikely to match now that more is baked into the shader code. Shaders can now use multiple 2D textures, 3D textures and uniforms, rather than a single 3D texture. So allocating and binding those adds some code. Color space conversions for blending with overlays is now hardcoded in the shader. This was using harcoded numbers anyway, if this every becomes a general OpenColorIO transform it can be changed, but for now there is no point to add code complexity. Ref D10273 CIE XYZ ======= We need standard CIE XYZ values for rendering effects like blackbody emission. The relation to the scene linear role is based on OpenColorIO configuration. In OpenColorIO 2.0 configs roles can no longer have the same name as color spaces, which means our XYZ role and colorspace in the configuration give an error. Instead use the new standard aces_interchange role, which relates scene linear to a known scene referred color space. Compatibility with the old XYZ role is preserved, if the configuration file has no conflicting names. Also includes a non-functional change to the configuraton file to use an XYZ-to-ACES matrix instead of REC709-to-ACES, makes debugging a little easier since the matrix is the same one we have in the code now and that is also found easily in the ACES specs. Ref D10274
2021-02-11CMake: update python to 3.9.1Campbell Barton
Default to Python version 3.9. Reviewed By: LazyDodo, sybren, sebbas Ref D10380
2021-02-01CMake: Remove duplicated code for Haru-TIFF dependency.Ankit Meel
2021-02-01CMake/Windows: Fix build issue in lite+haruRay Molenkamp
Haru depends on some symbols defined in libtiff which will cause linker errors if not enabled. Disable haru if WITH_IMAGE_TIFF is off.
2021-02-01CMake/Windows/macOS: Add LibharuAnkit Meel
Decision: https://lists.blender.org/pipermail/bf-committers/2020-December/050836.html Adds CMake dependency builder support. Tested on macOS and Windows (Thanks @LazyDodo). Reviewed By: #platform_macos, LazyDodo, sebbas Maniphest Task: T84836 Differential Revision: https://developer.blender.org/D9928
2020-12-11Cleanup: trailing spaceCampbell Barton
2020-12-03MSVC: Enable clang-tidy analyserRay Molenkamp
This enables the use of clang-tidy in the VS IDE. To use it: 1 - Enable WITH_CLANG_TIDY in your cmake configuration 2 - From the Analyse pull down menu select Run Code Analysis on... The analyser is currently not enabled by default on build given it is quite slow and there are quite a few problems it reports that we still need to deal with.
2020-11-30Deps: PugiXML 1.10Ray Molenkamp
This separates out PugiXML that was previously bundled by OIIO. As this linux/mac libs are not available this commit only contains the builder and windows changes, and the option to enable pugixml is guarded by a platform if, this can be removed once all platforms have committed the svn libs. For details see D8628
2020-11-06Cleanup: use string APPEND/PREPENDCampbell Barton
Replace 'set' with 'string(APPEND/PREPEND ...)'. This avoids duplicating the variable name.
2020-10-13Windows/CMake:Support BLENDER_USER_SCRIPTS in IDEEric Cosky
This diff adds support for respecting the `BLENDER_USER_SCRIPTS` environment variable when setting up the IDE environment. Previously the scripts from the users profile folder were always used even when this variable was set, leading to the possibility of the wrong scripts being visible in the IDE. Differential Revision: https://developer.blender.org/D9189 Reviewed By: Ray Molenkamp
2020-10-05Cycles: Add NanoVDB support for rendering volumesPatrick Mours
NanoVDB is a platform-independent sparse volume data structure that makes it possible to use OpenVDB volumes on the GPU. This patch uses it for volume rendering in Cycles, replacing the previous usage of dense 3D textures. Since it has a big impact on memory usage and performance and changes the OpenVDB branch used for the rest of Blender as well, this is not enabled by default yet, which will happen only after 2.82 was branched off. To enable it, build both dependencies and Blender itself with the "WITH_NANOVDB" CMake option. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8794
2020-10-02Cleanup: trailing spaceCampbell Barton
2020-09-18CMake/OpenSubdiv: Rename INCLUDE_DIR -> INCLUDE_DIRS.Ankit Meel
Ref {D8855} Unix and Apple platform files use find_package(OpenSubdiv) which sets `OPENSUBDIV_INCLUDE_DIR` as an advanced variable, as well as `OPENSUBDIV_INCLUDE_DIRS` which should be used usually. Windows sets `OPENSUBDIV_INCLUDE_DIR` which is used by the rest of the code. This patch renames it to `_DIRS` everywhere, for it to be like other similar variables. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8917
2020-09-15Deps: Add potrace as a new library dependencyRay Molenkamp
For work the GP team plans to land soon (T79877) potrace was taken on as an additional optional dependency. This diff adds building the library to the deps builder and takes care of the integration into the build-system with the `WITH_POTRACE` cmake switch. Differential Revision: https://developer.blender.org/D8662 Reviewed by: brecht, sergey
2020-09-08Cleanup: tabs to spacesCampbell Barton
2020-08-27Cleanup: Fix build warning with MSVC and OSLRay Molenkamp
OSL requires RTTI to be off, this is done with the /GR- flag for MSVC, however /GR is in the default CXX flags leading to warning D9025 : overriding '/GR' with '/GR-' which cannot be suppressed. /GR is on by default and this flag is not required, so removing it from the default CXX flags makes it possible later use /GR- without generating warnings.
2020-08-13Deps_builder: Update openvdb to a dynamic libraryRay Molenkamp
This patch changes openvdb from a static to a dynamic library. this is in preparation for enabling pyopenvdb at some point in the future. Differential Revision: https://developer.blender.org/D8282 Reviewed by: brecht
2020-07-31Deps builder: Add support for building GMPRay Molenkamp
Required for the new boolean code, disabled by default until all platforms have landed the libs and the boolean code actually lands in master. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8384
2020-07-31Fix blender_test runner build on the buildbot on Linux and macOSBrecht Van Lommel
Add our own copy of the gtest discovery scripts from CMake a few reasons: * Use the very latest version which supports PRE_TEST for Windows * Fix usage of [] symbols in file paths that fail with the zsh shell * Disable asan leak checker when discovering tests This means Windows also no longer requires the very latest CMake 3.18.
2020-07-30Fix: Blender_test not working on windows.Ray Molenkamp
This bumps the minimum requirement for cmake from 3.10 to 3.18 on windows if `WITH_GTESTS` is enabled. Reviewed By: sergey brecht sybren campbellbarton Differential Revision: https://developer.blender.org/D8405
2020-06-25Build: upgrade OpenImageDenoise to 1.2.1Ray Molenkamp
This requires ISPC for building OpenImageDenoise, so that is now added as a dependency as well. Blender itself does not need ISPC for building so it is not included as part of the precompiled libraries. Differential Revision: https://developer.blender.org/D7641
2020-05-31Deps: Update OIIO + ImageLibs + OSL + HelpersRay Molenkamp
This is the cluster of OIIO and friends , since they are all kinda tangled best to deal with this as a single unit OIIO 2.1.15.0 png 1.6.37 jpeg 2.0.4 opencolorio 1.1.1 tiff 4.1.0 OSL 1.10.10 pugixml 1.10 openjpeg 2.3.1 Differential Revision: https://developer.blender.org/D7727 Reviewed by: brecht
2020-05-19Properly fix: T71040 / T58983 Ocean Modifier crashes at high resolutionsRay Molenkamp
For a more detailed description of the issue see the commit message for rB497cd3d7dd6e497be484eb78a8ddb23f53b20343 This change moves fftw to a shared library and reverts the bandaid we did for 2.83.
2020-05-19Merge remote-tracking branch 'origin/blender-v2.83-release'Ray Molenkamp
2020-05-19Fix: T71040 / T58983 Ocean Modifier crashes at high resolutionsRay Molenkamp
This is not as much a fix as a work around, but given the real involves replacing how we build fftw, it is not eligible for 2.83 which is in BCON3 already. The root of the issue lies with (how we build) fftw3 The first issue is: fftw does not build with MSVC, there are other dependencies that are not compatible with MSVC and for those we build the libraries required with mingw64, same for fftw The second issue is: for reasons unknown we really really really liked all deps to link statically so wherever possible we did so. Now during the building of the fftw it linked a few symbols from libgcc (which we do not ship) like __chkstk_ms, for which we passed some flags to stop generating calls to it. Problem solved! There is no way this could possibly turn around and bite us in the rear. fast forward to today mystery crashes that look like a race condition. What is happening is, we tell the linker that each thread will require a 2-megabyte stack, now if every thread immediately allocated 2 megs, that be 'rough' on the memory usage. So, what happens is (for all apps not just blender), 2 megs are reserved but not backed by any real memory and the first page is allocated for use by the stack, now as the stack grows, it will eventually grow out of that first page, and end up in an area that has not been allocated yet, to deal with that the allocated page is followed by a guard page, someone touches the guard page it's time to grow the stack! Meanwhile in FFTW is it's doing substantial allocation using alloca (up to 64 kb) on the stack, jumping over the guard page, and ending up in reserved but not yet committed memory, causing an access violation. Now if you think, that doesn't sound right! something should have protected us from that! You are correct! That thing was __chkstk_ms which we disabled. Given we do not want a dependency on libgcc while building with MSVC the proper solution is to build fftw as a shared library which will statically link any bits and pieces it needs, however that change is a little bit too big to be doing in BCON3. So as a work around, we change the size the stack grows from 8k to 68k which gives fftw a little bit more wiggle room to keep it out of trouble most of the time. Note this only sidesteps the issue, this may come up again if the conditions are just right, and a proper solution will need to be implemented for 2.90.
2020-05-11Windows: Re-enable incremental linkingRay Molenkamp
It was disabled in D7520 to keep the pdb's from growing out of control however the increased link time is just not worth it. I'll keep an eye on the dailies and see if we have to come up with a different solution.
2020-05-04Windows: Silence LNK4099 warning.Ray Molenkamp
Ever since debug symbols were added for release builds the linker has been on the chatty side about symbols being missing for our binary libs. There's currently no plans to supply those, so best for the linker not to warn us about them.
2020-05-04Windows: Move tbb to being dynamic libraryRay Molenkamp
Static tbb has always been frowned upon [1] sofar it has worked for us but given our reliance on tbb is about to increase (D7475), I'd like to move the library to more supported configuration. Which means moving it to be a dynamic library The libs part of this change is in rBL62416 Reviewed By: Brecht Differential Revision: https://developer.blender.org/D7570
2020-05-01Windows: Support backtraces on release builds.Ray Molenkamp
This diff add supports for crash logs on windows for release builds. This can be toggled on/off with the `WITH_WINDOWS_PDB` cmake option. by default it is on. Things to take into consideration: Release builds are hightly optimized and the resulting backtraces can be wrong/misleading, take the backtrace as a general area where the problem resides rather than an exact location. By default we ship a minimized symbol file that can only resolve the function names. This was chosen to strike a balance between growth in size of the download vs functionality gained. If more detailed information is required such as source file + line number information a full pdb can be shipped by setting `WITH_WINDOWS_STRIPPED_PDB` to off. Differential Revision: https://developer.blender.org/D7520 Reviewed by: brecht
2020-04-30Revert "Windows: Support backtraces on release builds."Ray Molenkamp
Issues with older cmake.
2020-04-30Windows: Support backtraces on release builds.Ray Molenkamp
This diff add supports for crash logs on windows for release builds. This can be toggled on/off with the `WITH_WINDOWS_PDB` cmake option. by default it is on. Things to take into consideration: Release builds are hightly optimized and the resulting backtraces can be wrong/misleading, take the backtrace as a general area where the problem resides rather than an exact location. By default we ship a minimized symbol file that can only resolve the function names. This was chosen to strike a balance between growth in size of the download vs functionality gained. If more detailed information is required such as source file + line number information a full pdb can be shipped by setting `WITH_WINDOWS_STRIPPED_PDB` to off. The Release in the title of this diff refers to the release build type, not the official blender releases. Initially this will only be enabled for nightly build bot versions of blender, official releases as of now will not ship with symbols. Differential Revision: https://developer.blender.org/D7520 Reviewed by: brecht
2020-04-29Windows: Fix RelWithDebInfo missing symbol informationRay Molenkamp
issue introduced in rB55a2682348df94d0ff2f57d786b7a557312d0345
2020-04-20Windows: Add sccache support.Ray Molenkamp
sccache [1] is one of the few ccache like solutions that will work on windows. sccache support can be enabled with the `WITH_WINDOWS_SCCACHE` cmake option however it will only will work with ninja as the build system, msbuild is not supported currently. Advanced option, developes are expected to obtain and configure sccache on their own. ``` Full build no cache 1428.90s (100.00%) Full build cached 434.34s ( 30.40%) ``` [1] https://github.com/mozilla/sccache Reviewed By: nicholas_rishel, Brecht Differential Revision: https://developer.blender.org/D7466