Pedro J. Estébanez
f4d76853b9
WorkerThreadPool (plus friends): Overhaul unlock allowance zones
...
This fixes a rare but possible deadlock, maybe due to undefined behavior. The new implementation is safer, at the cost of some added boilerplate.
2024-08-21 12:22:52 +02:00
Pedro J. Estébanez
df23858488
ResourceLoader: Fix edge cases in the management of user tokens
...
1. Make handling of user tokens atomic:
Loads started with the external-facing API used to perform a two-step setup of the user token. Between both, the mutex was unlocked without its reference count having been increased. A non-user-initiated load could therefore destroy the load task when it unreferenced the token.
Those stages now happen atomically so in the one hand, the described race condition can't happen so the load task life insurance doesn't have a gap anymore and, on the other hand, the ugliness that the call to load could return `ERR_BUSY` if happening while other thread was between both steps is gone.
The code has been refactored so the user token concerns are still outside the inner load start function, which is agnostic to that for a cleaner implementation.
2. Clear ambiguity between load operations running on `WorkerThreadPool`:
The two cases are: single-loaded thread directly started by a user pool task and a load started by the system as part of a multi-threaded load.
Since ensuring all the code dealing with this distinction would make it very complex, and error-prone, a different measure is applied instead: just take one of the cases out of the dicotomy. We now ensure every load happening on a pool thread has been initiated by the system.
The way of achieving that is that a single-threaded user-started load initiated from a pool thread, is run as another task.
2024-08-21 12:22:52 +02:00
Pedro J. Estébanez
5c970db2e4
ResourceLoader: Optimize remap check by deferring until a non-mutex zone
2024-08-21 12:19:43 +02:00
Pedro J. Estébanez
28619e26cf
ResourceLoader: Enhance deadlock prevention
...
Benefits:
- Simpler code. The main load function is renamed so it's apparent that it's not just a thread entry point anymore.
- Cache and thread modes of the original task are honored. A beautiful consequence of this is that, unlike formerly, re-issued loads can use the resource cache, which makes this mechanism much more performant.
- The newly added getter for caller task id in WorkerThreadPool allows to remove the custom tracking of that in ResourceLoader.
- The check to replace a cached resource and the replacement itself happen atomically. That fixes deadlock prevention leading to multiple resource instances of the same one on disk. As a side effect, it also makes the regular check for replace load mode more robust.
2024-08-21 12:19:43 +02:00
Pedro J. Estébanez
bd0959ebdd
ResourceLoader: Properly push & pop TLS state on recursive load tasks
2024-08-21 12:19:43 +02:00
Rémi Verschelde
5ca419e32c
Merge pull request #94801 from gamelessone/fix-cond-var
...
Fix use-after-free of `ConditionVariable` in `ResourceLoader`
2024-08-21 11:14:22 +02:00
Rémi Verschelde
3b3d6226c5
Merge pull request #95828 from clayjohn/Lightmapper-AA-direct-light
...
Antialias direct light samples in LightmapperRD
2024-08-21 07:23:05 +02:00
Rémi Verschelde
4b8946102b
Merge pull request #91535 from BlueCube3310/betsy-bc6h
...
Add Betsy to speed up BC6 compression
2024-08-21 06:38:03 +02:00
Clay John
62de80d613
Merge pull request #88199 from stuartcarnie/metal-rdd
...
Add Metal support for macOS (arm64) and iOS
2024-08-20 21:21:32 -07:00
Stuart Carnie
2d0165574d
Add Metal support for macOS (arm64) and iOS
2024-08-20 12:11:06 +02:00
Rémi Verschelde
826de7976a
Merge pull request #95854 from akien-mga/xcode-warnings
...
macOS/iOS: Fix various warnings when targeting newer SDKs
2024-08-20 12:08:55 +02:00
Rémi Verschelde
49e4ad1460
Merge pull request #95691 from Hilderin/fix-display-dialog-while-saving-scene
...
Fix display dialog while saving scene
2024-08-20 12:08:49 +02:00
Stuart Carnie
41875d8aef
macOS/iOS: Fix various warnings when targeting newer SDKs
2024-08-20 11:55:21 +02:00
Rémi Verschelde
5ebfc8a6ba
Merge pull request #95643 from Flynsarmy/get_bone_attach_skele
...
Add `BoneAttachment3D::get_skeleton()` method
2024-08-20 11:04:04 +02:00
Rémi Verschelde
d9e458515b
Merge pull request #91750 from BastiaanOlij/openxr_visibility_mask
...
OpenXR: Add support for visibility mask
2024-08-20 11:03:54 +02:00
Rémi Verschelde
8dfb8efaa9
Merge pull request #95849 from bruvzg/sys_theme_check
...
[Editor] Prevent unnecessary editor theme regeneration on unrelated system setting update.
2024-08-20 10:03:13 +02:00
Rémi Verschelde
033054f182
Merge pull request #95838 from olawlor/vertex65536bugfix
...
Fix GLES3 crash with Mesh surface with exactly 65536 vertices
2024-08-20 10:03:06 +02:00
Rémi Verschelde
c367e671bb
Merge pull request #95831 from Chubercik/ufbx-0.14.3
...
ufbx: Update to 0.14.3
2024-08-20 10:02:59 +02:00
Rémi Verschelde
fbbc527de6
Merge pull request #95816 from matheusmdx/fix-autocomplete-icon
...
Fallback to theme icon when no custom icon is set in autocompletion
2024-08-20 10:02:53 +02:00
Rémi Verschelde
73d42411f0
Merge pull request #95808 from paulloz/bugfix/dotnet-globalclass-icon-relative-paths
...
Fix relative paths for global class icons in C#
2024-08-20 10:02:47 +02:00
Rémi Verschelde
5e400c7bd9
Merge pull request #95800 from mihe/msvc-standards-conformance
...
Enable more standards conformance for MSVC
2024-08-20 10:02:40 +02:00
Rémi Verschelde
f45421204c
Merge pull request #95764 from passivestar/gdscript-syntax-highlighter
...
Expose GDScript syntax highlighter to editor plugins
2024-08-20 10:02:35 +02:00
Rémi Verschelde
0b1bf3cb42
Merge pull request #95760 from jolexxa/docs/joy-info
...
docs: Highlight lack of joystick info on majority of platforms
2024-08-20 10:02:28 +02:00
Rémi Verschelde
c359a8e9ca
Merge pull request #95757 from BlueCube3310/cvtt-float
...
CVTT: Include float formats for hdr compression
2024-08-20 10:02:23 +02:00
Rémi Verschelde
26e87f4fbd
Merge pull request #95687 from aryan-11825114/fix-small-graph-editor-pins
...
Fix small graph editor pins at higher display scales
2024-08-20 10:02:18 +02:00
Rémi Verschelde
a55b6a4ac0
Merge pull request #95518 from mihe/bezier-delete-errors
...
Fix errors about `UndoRedo` history mismatch when deleting bezier track
2024-08-20 10:02:12 +02:00
Rémi Verschelde
65c6897e55
Merge pull request #95269 from raulsntos/dotnet/determinant
...
C#: Expose `Transform2D.Determinant()`
2024-08-20 10:02:07 +02:00
Rémi Verschelde
a700b2a4a2
Merge pull request #95153 from BastiaanOlij/improve_hand_tracking_settings
...
Change hand tracking project settings and finetune `show_when_tracked`
2024-08-20 10:02:01 +02:00
Rémi Verschelde
7999b4bb8a
Merge pull request #94324 from SomeRanDev/shader_hint_enum
...
GDShader: Add `hint_enum` for `uniform int`
2024-08-20 10:01:57 +02:00
Rémi Verschelde
58505b0bce
Merge pull request #94082 from HolonProduction/completion-force
...
Autocompletion: Rework argument options string literal completion
2024-08-20 10:01:52 +02:00
Rémi Verschelde
6a9ecdcf0c
Merge pull request #91818 from rburing/fti_multimesh
...
Physics interpolation: `MultiMesh`
2024-08-20 10:01:46 +02:00
Rémi Verschelde
8acd82f70e
Merge pull request #89919 from BlueCube3310/bicubic-lightmap
...
Implement bicubic sampling for lightmaps
2024-08-20 10:01:41 +02:00
Rémi Verschelde
333f0f910f
Merge pull request #86000 from jsjtxietian/add-missing-model_normal_matrix
...
Add `model_normal_matrix` for fragment shader
2024-08-20 10:01:36 +02:00
Rémi Verschelde
554dc002b5
Merge pull request #85108 from theDrake/pick-main-scene-punctuation
...
Adjust `pick_main_scene` dialog punctuation
2024-08-20 10:01:28 +02:00
Rémi Verschelde
7f8b4364e8
Merge pull request #82093 from jsjtxietian/add-support-for-drag-a-shader-to-material
...
Add support for dragging a shader to user exported material property
2024-08-20 10:01:19 +02:00
bruvzg
97085358ce
[Editor] Prevent unnecessary editor theme regeneration on unrelated system setting update.
2024-08-20 10:23:00 +03:00
Orion Lawlor
bde165ccb3
Fix GLES3 crash with Mesh surface with exactly 65536 vertices
...
Fixes #95837 .
2024-08-20 09:08:16 +02:00
jsjtxietian
e698351db2
Add model_normal_matrix for fragment shader
2024-08-20 12:39:29 +08:00
jsjtxietian
da5f7c6b40
Add support for dragging a shader to user exported material property
2024-08-20 11:05:52 +08:00
Bastiaan Olij
a8c5117777
Change hand tracking project settings and finetune show_when_tracked
2024-08-20 11:12:52 +10:00
clayjohn
1521e49c23
Antialias direct light samples in LightmapperRD
...
Additionally use Vogel disk to enhance soft shadow quality.
2024-08-19 17:54:55 -07:00
Bastiaan Olij
d9ab2c3195
OpenXR: Add support for visibility mask
2024-08-20 10:47:17 +10:00
Jakub Marcowski
e3ffcb3289
ufbx: Update to 0.14.3
2024-08-20 02:30:45 +02:00
matheusmdx
e8254dc3f4
Fallback to theme icon when no custom icon is set in autocompletion
2024-08-19 16:16:06 -03:00
Paul Joannon
3c0eaec39f
Fix relative paths for global class icons in C#
2024-08-19 18:09:58 +02:00
Mikael Hermansson
4db3e6e6cd
Fix errors about UndoRedo
history mismatch when deleting bezier track
2024-08-19 17:53:49 +02:00
Rémi Verschelde
da5f39889f
Merge pull request #95763 from gongpha/audiostreamplayer-icons-improvement
...
Improve AudioStreamPlayer icons
2024-08-19 16:05:30 +02:00
Rémi Verschelde
ce1ba7328f
Merge pull request #94934 from Hilderin/fix-no-validation-blender-path-on-import
...
Fix no validation on Blender path on import
2024-08-19 16:05:26 +02:00
Rémi Verschelde
6bf64027b7
Merge pull request #94785 from Chaosus/shader_fix_samplers_order
...
Fix texture samplers to not being last in the property list
2024-08-19 16:05:21 +02:00
Rémi Verschelde
af919a845f
Merge pull request #94683 from kisg/string_name_fix
...
StringName: Use inline static field definitions
2024-08-19 16:05:16 +02:00