Armature::collection_array was indexed with -1,
returning an invalid collection.
When the collection index isn't usable, create a new collection
with the default name.
Ref !129608
This reverts commit 0a70360eb6. That's
because it caused issue #129366 which is much more serious, and the
cause is not obvious so far. Another fix will be submitted for the
original issue.
When using AMD official driver clearing depth attachments can fail.
I assume it is related to previous pipeline states and dynamic rendering
that don't require the correct pipeline state for clearing depth
attachments.

Co-authored-by: jeroen@blender.org <Jeroen Bakker>
Pull Request: https://projects.blender.org/blender/blender/pulls/129852
`set_active_node` call from `grease_pencil_copy_data` resets inactive
layer again as locked before executing the drawing code. Since property
is only operated on layers, it is possible to remove the code from
`set_active_node()` and only have it in `set_active_layer()`.
Pull Request: https://projects.blender.org/blender/blender/pulls/129465
This was likely never an issue so far, as no ID type has ever been
removed (that was written in blendfiles at least), and no new BHead type
has been added since ages.
However, current behavior of the main loop in the readfile code (in
`blo_read_file_internal`) is to consider any BHead type which is not
explicitely known and handled, to be an ID BHead, and directly try to
load it as such.
This commit addresses that potential issue by validating that a BHead
code actually matches a known ID type before trying to use it to read an
ID from the file.
Issue identified while working on designs for future 5.0 forward
compatibility breaking changes in blendfile format itself.
Pull Request: https://projects.blender.org/blender/blender/pulls/129693
The sample index node specifies the supported geometry types and Grease
Pencil was missing. Note that only the layer domain will work since it's
the only domain accessible by index on GP data directly.
Pull Request: https://projects.blender.org/blender/blender/pulls/129758
The issue is that the action line may be there, but containing no action,
`bAnimListElem->data` pointer is a nullptr.
caused by b952782a44
In this refactor the function call was changed from
`BKE_action_frame_range_get` which could handle
the case of a nullptr passed to it.
Pull Request: https://projects.blender.org/blender/blender/pulls/129648
Qualcomm driver can not handle the optimized SPIR-V that Blender
creates. According to their driver engineers this is an issue in
shaderc. As we are late in the release process they asked us to disable
the optimizations.
In Blender 4.4 we are planning to update shaderc what might fix the
issue. This should be retested after the update.
Pull Request: https://projects.blender.org/blender/blender/pulls/129775
RNA update function called from `rna_property_override_apply_default`
does not have access to active `Scene`, so it is explicitly set to null.
Use `ptr->owner_id` instead of scene provided in argument.
Pull Request: https://projects.blender.org/blender/blender/pulls/129562
In March 2022 this was added as a provision to check/guard the build if
external folks were compiling without USD "Imaging" support [1]
In Feb 2023 code was added which ended up depending on "Imaging"
unconditionally (and probably more at this point) [2]
Since we haven't heard this being a problem so far, and because the USD
build option is enabled by default, let's just remove it.
The test which was added is also removed because the main import/export
code serves as the compile test, and the python test code serves as a
much more sufficient check of actual functionality.
[1] https://archive.blender.org/developer/D14456
[2] Commit `72a85d976a5781a21166356b24668b8c48d51690`
Pull Request: https://projects.blender.org/blender/blender/pulls/129733
Interpolating these attributes as integer values isn't meaningful or
helpful and is potentially problematic. So far I'd guess this is unlikely
to happen in practice which is why it probably hasn't been noticed yet.
Fixes part of #129691.
Pull Request: https://projects.blender.org/blender/blender/pulls/129809
Only retrieve a mutable copy of the attribute if we're actually able to change it.
If topology changes and there are no IDs, we can't mix the attribute and we
should avoid retrieving it in case it's shared. This is more of a hypothetical
change, I didn't actually observe a real world performance change.
Pull Request: https://projects.blender.org/blender/blender/pulls/129811
When using the Voxel Remesh operator, there are two possible sources of
crashes currently:
* TBB task stealing in nested parallel loops with thread local data
* Null dereference of PBVH data when pushing sculpt undo steps
To fix the former issue, this commit guards the
`threading::parallel_for` internal function with
`threading::isolate_task` to prevent possible task stealing and
corruption of the thread local data.
Additionally, it has the effect of fixing debug asserts inside
`array_utils::gather` due to the this task stealing.
To fix the latter issue, this commit adds a call to
`BKE_sculpt_update_object_for_edit` to ensure that this data is
populated.
Pull Request: https://projects.blender.org/blender/blender/pulls/129704
The issue is caused by the new way to compute the projection
matrix that tries to recreate it from view3d properties.
This is needed for proper overscan support.
However, this breaks for VR as the view3d is only partially
setup.
Skip the setup in VR and remove overscan for VR to avoid any
possible issues with it.
This fix avoid changing the behavior of the
`ED_view3d_draw_offscreen` which is exposed from our pyGPU
API. The pyGPU API is kind of broken if using custom
projection matrix + overscan, but that's a different issue.
Fix#125456
Pull Request: https://projects.blender.org/blender/blender/pulls/129813
Using array_utils::gather inside an already parallel context with TLS
variables has the possibility of causing data corruption due to task
stealing.
This commit changes them to the sculpt specific gather_mesh_data call
to avoid the nested parallel loop issue.
Pull Request: https://projects.blender.org/blender/blender/pulls/129770
Currently writing to the curve type attribute directly from Python
doesn't work because it doesn't tag the curve topology changed.
This is a limitation with the Python attribute API that needs to be
solved generally. In the meantime, this commit adds a `set_types`
RNA function. This will have better performance than writing to
the attribute directly anyway.
This is an alternative to #128410 that avoids tying the type to the
addition of curves.
Pull Request: https://projects.blender.org/blender/blender/pulls/129224
This was caused by uninitialized values at border. The correct
number of bricks were reserved but only the unpadded volume
was uploaded. Which was not touching the data of the border
bricks if the size was divisible by `IRRADIANCE_GRID_BRICK_SIZE - 1`.
Fix#127215
Pull Request: https://projects.blender.org/blender/blender/pulls/129810
Add an operator (`anim.debug_channel_list`) that lists animation channel
info in the terminal.
It's only available in debug builds of Blender, because it's a
developer-only tool. It is not available in a menu, just in the F3
search.
Pull Request: https://projects.blender.org/blender/blender/pulls/129804
In the Dope Sheet, show regular keyframes for GreasePencil object data.
The GPv3 transition missed a few cases in the animation
channel/filtering code to add the channels from regular Actions on
GreasePencil data blocks.
Pull Request: https://projects.blender.org/blender/blender/pulls/129807
First issue is that `BKE_modifiers_uses_armature` wasnt working for GP
objects and the second one is that vgroup names are stored in
CurvesGeometry for GP (so that needs special handling, now done, same as
in `BKE_object_defgroup_set_name`).
Pull Request: https://projects.blender.org/blender/blender/pulls/129794
Blender crashes when opening files that invokes the interactive
compositor on file load with a BadAccess X_GLXMakeCurrent error.
This is caused by the same system GPU context being active in two
threads at the same time, which happens when the GPU context for the
compositor is created in the main thread, it is made current during
creation, but it is not reset to the main GPU context of the drawable
because it is null. So when the GPU compositor actually executes, it
makes the GPU context current again but in its own thread, causing a
BadAccess error in X11 and potentially other window systems.
So the root cause is that the drawable is nullptr, and an attempt to fix
this was committed in 0a70360eb6 but was reverted in 98722773da because
it caused serious issue that were not obvious.
This patch attempts another fix by simply releasing the system GPU
context created when calling the RE_system_gpu_context_ensure. This is
more robust anyways because callers do not expect the context to be
bound form an API point of view.
Pull Request: https://projects.blender.org/blender/blender/pulls/129793
Curve maps in nodes like RGB Curves are not drawn nor evaluated outside
of clipping range. This is a regression in 8812be59a4, where the range
of the curve didn't account for points that lie outside of the clipping
range. That's because the table_range variable was initialized before
the loop that updates the minimum and maximum points of the table.
To fix this, we move the table_range initialization after the loop that
updates the minimum and maximum points of the table.
Pull Request: https://projects.blender.org/blender/blender/pulls/129777
Build modifier should start building strokes at a key frame, not always
assume a starting frame of 0.
Frame restriction works the same way as GPv2, which uses absolute
frame number.
Pull Request: https://projects.blender.org/blender/blender/pulls/129774