Add a [Python code generator][1] that takes an OpenAPI definition and
outputs the corresponding data model as [dataclasses][2]
This is intended to be used in the Remote Asset Library project, to
create, download, parse, and validate information of a remote asset
library.
[1]: https://koxudaxi.github.io/datamodel-code-generator/
[2]: https://docs.python.org/3/library/dataclasses.html
## Running the Generator
The generator is a Python script, which creates its own Python
virtualenv, installs the dependencies it needs, and then runs the
generator within that virtualenv.
The script is intended to run via the `generate_datamodels` CMake
target. For example, `ninja generate_datamodels` in the build
directory.
## Details
The virtualenv is created in Blender's build directory, and is not
cleaned up after running. This means that subsequent runs will just
use it directly, instead of reinstalling dependencies on every run.
## Generated Code & Interaction with Build System
It is my intention that the code generation _only_ happens when the
OpenAPI specification changes. This means that the generated code will
be committed to Git like any hand-written code. Building Blender will
therefore _not_ require the code generator to run. Only people working
on the area that uses the generated code will have to deal with this.
Pull Request: https://projects.blender.org/blender/blender/pulls/139495
Some users still have issues getting LFS files downloaded properly, though the
exact cause is unclear. Normally with a properly installed git lfs, git pull
should already take care of it.
When for whatever reason that is not the case and files have not been fetched
yet, now do lfs pull which is the same as lfs fetch + lfs checkout. Even when
git pull can not run.
Ref #143461
Pull Request: https://projects.blender.org/blender/blender/pulls/143478
Add a simple deprecation message to warn users that macOS pre-compiled
dependencies are no longer provided starting with 5.0, and that they
should either build the libraries themselves or downgrade to 4.5.
This is what the warning looks like in context:
```
$ make update
git lfs install --skip-repo
Git LFS initialized.
Configuring Precompiled Libraries
=================================
Detected platform : macos
Detected architecture : x64
Updating Libraries
==================
* Skipping lib/linux_x64
* Skipping lib/macos_arm64
* Skipping lib/windows_x64
* Skipping lib/windows_arm64
Update finished with the following messages
===========================================
Blender repository skipped: you have unstaged changes
WARNING: macOS x64/Intel support was dropped in Blender 5.0.
As such, pre-compiled dependencies are no longer provided.
You may build the dependencies yourself, or downgrade to Blender 4.5.
For more details, please see: https://devtalk.blender.org/t/38835
```
Pull Request: https://projects.blender.org/blender/blender/pulls/143133
The issue was that `git ls-files` will per default escape unicode
characters. This make it so that our python script couldn't find any
files or folder as it expected unescaped characters.
This reverts commit 81e862140f
binary packages turned out to have issues for debug builds on windows
as they link to python_311d.dll and none of the binary packages offfered
on pypi offered a debug build. Building pydantic from source was rejected
due to no rust build infrastructure being in place yet and deemed not
worth the effort for this one library dependency, an alternate solution
was chosen by the assets team that requested this dependency.
This moves the logic to create the parent folder to data_to_c itself
rather than having cmake do it, preventing several thousand cmake instances
to be started.
see pr#141404 for details/benchmarks
Pull Request: https://projects.blender.org/blender/blender/pulls/141404
As requested by @dr.sybren and approved by the admins
Also pydantics deps :
annotated-types 0.7.0
pydantic-core 2.33.2
typing-extensions 4.14.0
typing-inspection 0.4.1
these are installed as binary packages agreed upon with the admins
versions determined by just pip installing it and seeing what it dragged in.
as some of these are binary packages that will differ per platform, there will
be a per platform hash for some packages now unfortunately
Pull Request: https://projects.blender.org/blender/blender/pulls/140434
When USD sends work to the GPU (dispatch) incorrect datatype conversions
can send incorrect vulkan commands. This happens on AMD GPUs. This PR
will patch USD to limit the max allowed limit. A better solution would
be to only use uint32_t in this function, but there is no `GfVec3u` data
type and I didn't want to do to many changes.

**TODO**
- [x] Validate with @ZedDB that this compiles and solves all the issues
- [x] Add other platform maintainers as reviewers. This is a Windows + Linux issue.
- [ ] Rebuild the USD library including this patch.
Pull Request: https://projects.blender.org/blender/blender/pulls/140102
On the macOS deps builder, if certain libraries were installed
system-wide using Homebrew, they could be prioritized during the
linking of dependencies over our own versions, causing breakages
when running the built libraries on other systems.
For OpenColorIO, homebrew Imath could be linked if installed.
For TIFF (& libjpeg as a transitive dep), homebrew libdeflate
could be linked if installed.
This commit fixes both of these issues by directly specifying the
library path to prevent the linker from wrongly inferring it to a
system-wide path.
This requires a minimum driver version of 535, however most devices
were already requiring 570 due to the CUDA toolkit version.
The update is required to be able to use an API function for correct
stack size calculation.
Code for older API versions has been removed.
Fix#138185: OSL custom camera errors with OptiX
Pull Request: https://projects.blender.org/blender/blender/pulls/139801
When binary files managed by git-lfs are not hosted by the main source
repo (e.g. when using the github mirror), the fall-back repo set up by
`lfs_fallback_setup` does fetch the files, but the follow-up call to
`git pull` in `work_tree_update` does not check them out.
This commit simply adds an extra `git lfs checkout` command there.
Pull Request: https://projects.blender.org/blender/blender/pulls/139825
Seems like only lz4 is used by openvdb. The zstd support were causing
runtime issues because of version mismatches with our other libraries.
In addition to this, blosc doesn't seem to properly link to static
libraries. The resulting static library has undefied symbols in it from
both zlib and zstd. This wasn't caught before as openvdb links to zlib.
Pull Request: https://projects.blender.org/blender/blender/pulls/139792
Add missing trailing backslash to BLENDER_DIR path in git submodule
update command to match the formatting used elsewhere in the script.
This prevents the following error when python is not found during
the update:
cannot change to .. submodule update lib/windows_x64': Invalid argument
Pull Request: https://projects.blender.org/blender/blender/pulls/139616
It seems to be fixing an issue rendering the junkshop file on RDNA4 GPUs.
Tested on Ubuntu 22.04 and 9070 XT GPU.
The downside of this change is the curve intersection in HIP-RT being
slower (figures are a bit scattered, but average to ~10%). This seems
to be caused by compiler resolving function inlines and spilling
differently. Quite unfortunate, but it is better to solve known crashes.
There might still be time to look into the performance topic during the
Beta period.
Ref #136143
Pull Request: https://projects.blender.org/blender/blender/pulls/138981
e.g. stands for "exempli gratia" in Latin which means "for example".
The best way to make sure it makes sense when writing is to just expand
it to "for example". In these cases where the text was "for e.g.", that
leaves us with "for for example" which makes no sense. This commit fixes
all 110 cases, mostly just just replacing the words with "for example",
but also restructuring the text a bit more in a few cases, mostly by
moving "e.g." to the beginning of a list in parentheses.
Pull Request: https://projects.blender.org/blender/blender/pulls/139596
Almost all content in the libdir we can regenerate, wintab however
is not one of them, and if you generate a new lib folder it's one
of the things you have to manually copy back into place.
this PR moves it out of the libdir and into /extern
Pull Request: https://projects.blender.org/blender/blender/pulls/128873