Commit Graph

84037 Commits

Author SHA1 Message Date
Thaddeus Crews c25fac660f Merge pull request #120116 from bruvzg/rtl_tl
[RTL] Do not add zero-width space to last line without content.
2026-06-12 13:38:51 -05:00
Thaddeus Crews eb03ae8fc5 Merge pull request #119631 from QbieShay/qbe/fix-particle-first-frame
Fix leftover particle data when updating particle buffers.
2026-06-11 15:18:56 -05:00
Thaddeus Crews 463bde5426 Merge pull request #120164 from YeldhamDev/assetlib_fixes
Fix some issues and crashes in the asset store
2026-06-11 15:18:56 -05:00
Thaddeus Crews 8879fa9c4a Merge pull request #120104 from bruvzg/rtl_ind
[RTL] Fix indent / list level not taken into account.
2026-06-11 15:18:55 -05:00
Thaddeus Crews a7a654a565 Merge pull request #120120 from YeldhamDev/assetlib_other_licenses
Fix assets with license type of "Other" not showing up
2026-06-11 15:18:55 -05:00
Thaddeus Crews 54819cde65 Merge pull request #120108 from vaner-org/tree-explain-new-drop-section
Update Tree reference to explain new drop sections
2026-06-11 15:18:55 -05:00
Thaddeus Crews dadcef98ba Merge pull request #120198 from Calinou/doc-arealight3d-tutorial
Link to 3D lights and shadows tutorial in AreaLight3D class documentation
2026-06-11 15:18:54 -05:00
Skyth af2fea0ad3 Fix leftover particle data when updating particle buffers.
Co-authored-by:  Skyth <19259897+blueskythlikesclouds@users.noreply.github.com>
2026-06-11 21:02:05 +02:00
Hugo Locurcio 99cde15524 Link to 3D lights and shadows tutorial in AreaLight3D class documentation
- Warn about mesh subdivision when shadows are enabled.
2026-06-11 18:26:37 +02:00
Michael Alexsander f204ebaa39 Fix some issues and crashes in the asset store 2026-06-10 16:35:04 -03:00
Thaddeus Crews 3df26a02c4 Merge pull request #120072 from hpvb/fix-threaded-loader-redux
Fix a deadlock in WorkerThreadPool
2026-06-10 13:52:07 -05:00
HP van Braam ae564feb2a Fix a deadlock in WorkerThreadPool
When the main thread is waiting on a worker thread pool via
WorkerThreadPool::wait_for_group_task_completion() the MessageQueue is no
longer being serviced.

But in ResourceLoader::_load_complete_inner we need to be able to push a
callable onto the MessageQueue and we wait until completion. Effectively
waiting on the main thread to run our code.

If the tasking waiting on completion is in the group the main thread is
waiting for then this can never happen.

We solve this problem by servicing the MessageQueue in the
WorkerThreadPool if main thread is waiting. To avoid busy waiting on the
semaphore we sleep for a very brief time to spare battery without impacting
latency too much in the waiting case.
2026-06-10 12:46:42 +02:00
vaner-org d937734801 Update Tree reference to explain new drop sections 2026-06-10 05:27:38 +05:30
Michael Alexsander a43cc6ad2f Fix assets with license type of "Other" not showing up 2026-06-09 16:02:20 -03:00
Thaddeus Crews ec67cbe926 Merge pull request #120102 from bruvzg/sct_drop
[Editor] Fix `SceneTreeEditor` drop.
2026-06-09 11:03:50 -05:00
Thaddeus Crews 9d876745b3 Merge pull request #120111 from hpvb/fix-message-queue-flush-during-startup
Don't flush the message queue before a MainLoop is iterating
2026-06-09 11:03:50 -05:00
Thaddeus Crews d12dbb0a34 Merge pull request #120117 from Calinou/doc-window-add-demo-link
Link to Multiple Windows demo project in Window class documentation
2026-06-09 11:03:49 -05:00
Hugo Locurcio 0c2a33a215 Link to Multiple Windows demo project in Window class documentation 2026-06-09 17:31:11 +02:00
Pāvels Nadtočajevs 07f3a3f855 [RTL] Do not add zero-width space to last line without content. 2026-06-09 17:51:17 +03:00
HP van Braam 7ab8328204 Don't flush the message queue before a MainLoop is iterating
Allowing this breaks several assumptions in the engine, normally this
doesn't occur but when using the WTP it can occur. For instance during
resource loading the message queue is serviced during tear down.

This means this situation can be created from user code if they do async
resource loading in the `_load` of a resource in the main scene.

This also makes the MainLoop report that it IS iterating during tests as
the tests expect the message queue to be serviced even though no main
loop is running.
2026-06-09 15:29:53 +02:00
Thaddeus Crews f92a322ad4 Merge pull request #119808 from EdwardChanCH/fix_doc_unpaired_tag
Fix `IndexError` caused by `debug_tag_stack.pop()` with new error messages
2026-06-09 06:40:05 -05:00
Thaddeus Crews c00ea3dc58 Merge pull request #120092 from Calinou/doc-drawabletexture2d-experimental
Use generic description for experimental flag on DrawableTexture2D methods
2026-06-09 06:40:04 -05:00
Thaddeus Crews dc59c8b250 Merge pull request #120106 from TokageItLab/null-anim-btr
Add null check for `root_animation_node` in AnimationTree
2026-06-09 06:40:04 -05:00
Pāvels Nadtočajevs 57ba88fba7 [RTL] Fix indent / list level not taken into account. 2026-06-09 13:25:11 +03:00
Silc Lizard (Tokage) Renew c3b215de96 Add null check for root_animation_node in AnimationTree 2026-06-09 18:56:13 +09:00
Pāvels Nadtočajevs 363610d752 [Editor] Fix SceneTreeEditor drop. 2026-06-09 10:04:29 +03:00
Edward Chan 824dbc5aed Fixed IndexError caused by debug_tag_stack.pop() and added new error messages. 2026-06-08 19:04:00 -04:00
Hugo Locurcio 0ac3a3af99 Use generic description for experimental flag on DrawableTexture2D methods
The method signatures may still change in the future, including after
the 4.7 dev cycle.
2026-06-09 00:00:47 +02:00
Rémi Verschelde 9d03a4937b Sync translations with Weblate 2026-06-08 22:55:12 +02:00
Thaddeus Crews fb5a83eb60 Merge pull request #120007 from bruvzg/msys_dl
Fix download scripts and build in the MSYS2 environment.
2026-06-08 15:20:55 -05:00
Thaddeus Crews 8bbedec7f9 Merge pull request #120025 from bruvzg/nir-upd-3
Update D3D12 download script to use current release.
2026-06-08 15:20:55 -05:00
Thaddeus Crews bd4b537c95 Merge pull request #120085 from KoBeWi/the_dice_is_64bit
Fix first tile not being randomized
2026-06-08 15:20:54 -05:00
kobewi ea2cc82451 Fix first tile not being randomized 2026-06-08 17:06:13 +02:00
Thaddeus Crews a4f5e8cddf Bump version to 4.7-rc 2026-06-08 09:51:18 -05:00
Thaddeus Crews 15957647b5 Merge pull request #120063 from ryevdokimov/local-trackball
Fix trackball when use local space is enabled
2026-06-08 09:12:04 -05:00
Thaddeus Crews f1ab81c990 Merge pull request #119999 from KoBeWi/title_size_stuff
Wrap project titles
2026-06-08 09:12:04 -05:00
Thaddeus Crews 09522aea1c Merge pull request #120028 from HolonProduction/gdscript/blacklist-internal-classes
GDScript: Exclude `globals` internal classes in the analyzer
2026-06-08 09:12:04 -05:00
Thaddeus Crews 6629ee4ec3 Merge pull request #119983 from Calinou/doc-arealight3d-performance
Clarify performance impact of AreaLight3D nodes in the documentation
2026-06-08 09:12:03 -05:00
Thaddeus Crews 526528bd8d Merge pull request #120077 from hpvb/fix-threaded-loader-reloaded
Fix ResourceLoader deadlocks
2026-06-08 09:12:03 -05:00
Thaddeus Crews 279e7ca3cb Merge pull request #120071 from hpvb/fix-canvasrenderrd-deadlock
Fix a deadlock in CanvasRenderRD
2026-06-08 09:12:02 -05:00
Thaddeus Crews b7eb57977a Merge pull request #119451 from bruvzg/mt_rset_a6
[Metal] Restrict residency set support to Apple6+ GPUs.
2026-06-08 09:12:02 -05:00
Thaddeus Crews 6c325574cd Merge pull request #120059 from TokageItLab/anim_issue
Check blend weight for AnimationNode error & remove `_validate_animation_graph()`
2026-06-08 09:12:02 -05:00
Thaddeus Crews 5a49c75875 Merge pull request #120069 from TheOathMan/fix/zippacker-remove-empty-directory-entries
Fix ZIPPacker creating empty directory entries
2026-06-08 09:11:57 -05:00
othman alzahrani 43b2edabf5 Fix ZIPPacker creating empty directory entries - bruvzg fix 2026-06-08 09:18:46 +03:00
HP van Braam b88a62f805 Fix ResourceLoader deadlocks
This fixes several issues:
 * There was a bug in the cycle detection. It was possible for the cycle
   detection to fail because the current thread isn't in the list. Fix
   this by just seeing if any of the next threads were already in the
   cycle.
 * By way of an optimization the thread_waiting_on bookkeeping was done
   under the same thread_load_mutex as the cycle detection. But there is
   also an early exit after yields. If we exit through the yield the
   thread_waiting_on entry is stale and can cause other threads to fail
   to do cycle detection.
 * When multiple threads end up finishing a resource simultaneously
   anyway, probably through cycle detection, there's a small chance that
   the original thread finished more-or-less at the same time if the
   original thing blocking load completed. We solve this now by letting
   only one of the threads do the initial registration.
2026-06-08 04:57:26 +02:00
Silc Lizard (Tokage) Renew c640059ece Check blend weight for AnimNode error&remove _validate_animation_graph 2026-06-08 08:32:42 +09:00
HP van Braam 52f27370ab Fix a deadlock in CanvasRenderRD
RenderingServerDefault::_draw wants to get all of the materials. The threaded
loader is still loading the materials:

1) The main thread locks canvas_singleton->shader.mutex via
   RendererRD::Utilities::update_dirty_resources
    -> RendererRD::MaterialStorage::_update_queued_materials
      -> RendererCanvasRenderRD::CanvasMaterialData::update_parameters()
2) RendererCanvasRenderRD::CanvasMaterialData::update_parameters() wants
   to get the current shader via ShaderRD::version_get_shader. This
   eventually wants to wait on the load of that shader via
   WorkerThreadPool::wait_for_group_task_completion in
   ShaderRD::_compile_version_end

At this point the main thread is waiting for the threaded load to finish
loading the shader. Meanwhile in a thread not too far away the load is
progressing:

1) The loader is loading the tres in ResourceLoaderText::load which
   eventually wants to ShaderMaterial::set_shader
2) We eventually end up in RendererCanvasRenderRD::CanvasShaderData::set_code
3) set_code wants to lock canvas_singleton->shader.mutex to protect
   against concurrent compilation

At this point the main thread is waiting on the load to complete, but
holds "canvas_singleton->shader.mutex" via update_parameters(), and the
loader is waiting on "canvas_singleton->shader.mutex" in set_code.

Tragedy ensues etc.

To fix the problem we don't acquire the lock until after we're sure
we're done compiling the shader.

The same pattern exists in scene_shader_forward_clustered.cpp which
was created in the same commit as the code in the canvas singleton.

With this change the deadlock can no longer occur as set_code() can now run
concurrently with RenderingServerDefault::_draw() as the path where the
main thread waits on the workerthreadpool with
canvas_singleton->shader.mutex held can no longer occur.

Data integrity wise: previously you'd think that
canvas_singleton->shader.mutex would have protected against metadata
changes to uniforms, ubo_offsets, and texture_uniforms but set_code() used
to write to some of these (uniforms, ubo_size) without taking the lock with
no ill effects because the material isn't updated until the shader has loaded.

A similar pattern was found in scene_shader_forward_mobile.cpp and was
fixed in the same way.
2026-06-08 00:22:02 +02:00
ryevdokimov d92a1acc36 Fix trackball when use local space is enabled 2026-06-07 11:32:31 -04:00
HolonProduction 5a017a1f5e GDScript: Exclude globals internal classes in the analyzer 2026-06-06 10:38:32 +02:00
Thaddeus Crews 070dc9897e Merge pull request #120006 from syntaxerror247/joysticks
Disable navigation gizmo by default for Desktop platforms
2026-06-05 09:24:42 -05:00