1
0
Fork 0
Commit Graph

7882 Commits

Author SHA1 Message Date
Ricardo Subtil b77aa473a1 Implement a "Recovery Mode" for recovering crashing/hanging projects during initialization 2025-01-03 10:50:15 +00:00
Rémi Verschelde a17a0bc808
Merge pull request #100717 from KoBeWi/icon_uncache
Fix icon UIDs in Project Manager
2025-01-03 02:01:24 +01:00
Rémi Verschelde b34adf29dc
Remove unused OS `_display_driver_id` member 2025-01-03 01:52:25 +01:00
Rémi Verschelde d47fef15b8
Merge pull request #100991 from TokageItLab/180deg-arc
Fix looking at with 180 degree arc
2025-01-03 00:49:59 +01:00
Rémi Verschelde 21e6671740
Merge pull request #100937 from Repiteo/style/clang-format-sync
Style: Enforce `AllowShortFunctionsOnASingleLine`
2025-01-03 00:49:44 +01:00
Rémi Verschelde 5ff616736a
Merge pull request #100825 from KoBeWi/colored_eight
Add `Color.from_rgba8` and deprecate Color8
2025-01-03 00:49:18 +01:00
Rémi Verschelde e9da833e6c
Merge pull request #100795 from hpvb/optimize-variant-clear
Don't set `Variant::Type` in destructor
2025-01-03 00:49:10 +01:00
Rémi Verschelde dd7d36e803
Merge pull request #100770 from hpvb/command-queue-mt
Core: Refactor CommandQueueMT to use vararg templates for performance and maintainability
2025-01-03 00:49:02 +01:00
Rémi Verschelde 0d710da96c
Merge pull request #98554 from Calinou/add-property-hint-ranges
Add more property hint ranges for project settings
2025-01-03 00:47:59 +01:00
Thaddeus Crews e06d83860d
Style: Enforce `AllowShortFunctionsOnASingleLine` 2025-01-02 10:09:41 -06:00
HP van Braam cccd2432c3 Refactor CommandQueueMT to use vararg templates
In order to make CommandQueueMT more maintainable this PR changes the
previous macro hell with variadic templates instead. This makes the
class far more explicit and will allow us to more easily change the way
the class functions in the future.

Furthermore this refactoring has allowed for some optimizations. In
particular by using std::forward to delay the decision of decaying the
type to as late as possible we are able to move the data from the
callsite into our Command buffer and later move it to the call.

In practice what this means is that compared to the old version instead
of copying values 3 times, we can now get away with 1 copy, and 1 move
for lvalues, and just 2 moves for rvalues. This saves quite a few
operations in a hot codepath.

We also now test to make sure that the amount of copies and moves are
what we expect. This way we can spot performance regressions in this
code easily.

Somewhat unscientifically, running TPS-demo by pressing enter and not
touching the controls average mspf, repeatable across many runs:

before: 6.467
after : 6.202
2025-01-02 15:35:08 +01:00
Silc Lizard (Tokage) Renew d0c421976c Fix looking at with 180 degree arc
Co-authored-by: Fruitsalad <949631+fruitsalad@users.noreply.github.com>
2025-01-02 15:47:01 +09:00
Rémi Verschelde f2d4dac92e
Thread: Re-add `<new>` include for `std::hardware_destructive_interference_size`
Somehow it would still build fine, but would crash when compiled with GCC 12.2
on Debian 12.

Also re-add wrongly removed Mutex include from `thread_safe.h`, where it's used
in macros.

Add IWYU pragma comments to prevent it from mistakenly flagging those as unused.
2025-01-01 22:43:42 +01:00
kobewi 4e48b19e1f Add Color.from_rgba8 and deprecate Color8 2024-12-27 11:26:59 +01:00
kobewi 81b1138a7f Fix icon UIDs in Project Manager 2024-12-26 14:54:09 +01:00
HP van Braam 46c23e1758 Don't set Variant::Type in destructor
When profiling Dome Keeper, I found that in physics_process a HashMap
gets cleared a lot, which ends up calling the Variant destructor.
Calling Variant::clear() dominates this operation.

By not uselessly setting the Type to NIL on destruction we save about
50% of time. This is likely because if there is a simple type in the
Variant that doesn't need destructing, but now we write when we should
just drop the Variant altogether.

Since the value of Variant::type should be unobservable after
destruction this doesn't change any outward behavior.
2024-12-25 23:40:19 +01:00
Hugo Locurcio 62c17911ea Add more property hint ranges for project settings
- Tweak property hint ranges for some networking settings to ensure
  the minimum values don't break the debugger entirely.
- Ensure shader time rollover is set to at least 1, as 0 causes a division by
  zero to occur.

All relevant project settings are now covered by a range hint.
2024-12-23 18:22:32 +01:00
Thaddeus Crews 08d4dd7fd8
Merge pull request #100694 from Ivorforce/cowdata-destruct-graciously
Destruct `CowData` more graciously by avoiding accidentally exposing a half-destructed buffer.
2024-12-23 11:15:18 -06:00
Thaddeus Crews b97c8b37f6
Merge pull request #98441 from Yelloween10/fix-modifier-mask
Fix incorrect `KEY_MODIFIER_MASK` value
2024-12-23 11:15:17 -06:00
Thaddeus Crews 3c304ab7cc
Merge pull request #96076 from AThousandShips/improve_null_check_core_drivers
[Core,Drivers] Improve use of `Ref.is_null/valid`
2024-12-23 11:14:58 -06:00
Yufeng Ying 73d85f46c9 Remove unused headers in scene.
Co-authored-by: Thaddeus Crews <repiteo@outlook.com>

Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-12-24 00:40:09 +08:00
Rémi Verschelde 31c07776f4
Merge pull request #100683 from Ivorforce/localvector-vector-conversion-typesafe-copy
Make `LocalVector` -> `Vector` automatic conversion safe for non-trivial types.
2024-12-22 00:10:19 +01:00
Lukas Tenbrink 25cd923ea1 Destruct `CowData` more graciously by avoiding accidentally exposing a half-destructed buffer. This can avoid problems if any of the destructed objects tries to access the data while it's being destructed. 2024-12-21 20:01:03 +01:00
Lukas Tenbrink 0e32f3b957 Make `LocalVector` -> `Vector` automatic conversion safe for non-trivial types. 2024-12-21 10:28:57 +01:00
Rémi Verschelde dac0b67c4d
Merge pull request #100659 from clayjohn/color-srgb-precision
Increase precision in `linear_to_srgb()` and `srgb_to_linear()`
2024-12-20 23:57:35 +01:00
Rémi Verschelde c9e99291c1
Merge pull request #100622 from dsnopek/gdextension-compat-hashes
Rename `GDExtensionCompatHashes` to make it clear it's only for exceptional situations
2024-12-20 23:57:02 +01:00
Rémi Verschelde 119c99a8d0
Merge pull request #100193 from raulsntos/gdextension/set_class_icon
GDExtension: Add method to set the class icon
2024-12-20 23:56:48 +01:00
Rémi Verschelde a11364d1e6
Merge pull request #99010 from Hilderin/embedding-game-process
Embed game process in editor
2024-12-20 23:56:43 +01:00
clayjohn 46ce499b6f Increase precision in linear_to_srgb and srgb_to_linear
This avoids the situation where white stops being white after conversion. While maintaining as much floating point ops as possible
2024-12-20 10:49:43 -07:00
Thaddeus Crews 151e7fc687
Merge pull request #100477 from Ivorforce/cowdata-move-insert-n-remove
Optimize `CowData` and `LocalVector` functions `.insert` and `.remove_at` by using move semantics.
2024-12-19 20:00:20 -06:00
Thaddeus Crews 1b8a2d930f
Merge pull request #100474 from Ivorforce/cowdata-abstract-realloc
Abstract `CowData`'s reallocations into `_realloc` to consolidate duplicate logic.
2024-12-19 20:00:19 -06:00
Thaddeus Crews fb8d2ee044
Merge pull request #100582 from bruvzg/fix_in_ops
[GDScript] Fix `Packed*Array` `OP_IN` using low precision int and float as input.
2024-12-19 20:00:06 -06:00
Thaddeus Crews 416a86f47c
Merge pull request #100434 from Ivorforce/string-copy-from-rename
Rename `String::copy_from` functions to their respective encodings (`parse_latin1`, `parse_wstring`, `parse_utf32`).
2024-12-19 19:59:57 -06:00
Thaddeus Crews bf9ef5f8a5
Merge pull request #100564 from YYF233333/iwyu
Remove unused headers in core
2024-12-19 19:59:55 -06:00
Thaddeus Crews 92615f24e7
Merge pull request #100563 from Ivorforce/move-semantics-list
Add move semantics (constructor, operator=) to `List`.
2024-12-19 19:59:54 -06:00
Thaddeus Crews 0b01f3cc14
Merge pull request #100560 from Ivorforce/localvector-move-semantics
Add `LocalVector` move semantics (constructor and operator=).
2024-12-19 19:59:51 -06:00
Thaddeus Crews eaa447135c
Merge pull request #95920 from Repiteo/core/initializer-list-templates
Core: Expand `std::initializer_list` support in container templates
2024-12-19 19:59:42 -06:00
Thaddeus Crews a94b559f9b
Merge pull request #100483 from Ivorforce/string-name-move-semantics
Add move semantics (constructor, assignment) to `StringName`.
2024-12-19 19:59:34 -06:00
David Snopek 506600a560 Rename `GDExtensionCompatHashes` to make it clear it's only for exceptional situations 2024-12-19 18:08:42 -06:00
Lukas Tenbrink 8483d794ff Abstract `CowData`'s reallocations into `_realloc` to consolidate duplicate logic. 2024-12-19 17:27:16 +01:00
Lukas Tenbrink 3564e7c231 Add `LocalVector` move semantics (constructor and operator=). 2024-12-19 15:05:05 +01:00
Lukas Tenbrink 19992e3284 Add move semantics (constructor, operator=) to `List`. 2024-12-19 15:04:15 +01:00
Thaddeus Crews 361e3b4fe8
Core: Expand `std::initializer_list` support 2024-12-18 18:46:59 -06:00
Hilderin 9d2a4c03be Embedding game process in editor 2024-12-18 17:52:42 -05:00
Pāvels Nadtočajevs eaf2d7c5b0 [GDScript] Fix `Packed*Array` `OP_IN` using low precision int and float as input. 2024-12-18 23:41:27 +02:00
Yufeng Ying be86ce3103 Apply iwyu suggestion in core. 2024-12-19 00:43:47 +08:00
Rémi Verschelde 851d8e49e8
Merge pull request #100386 from hpvb/core-ubsan
Core: Fix UBSAN reports
2024-12-18 17:23:32 +01:00
HP van Braam 240f510fa7 Core ubsan fixes
This fixes UBSAN errors reported by running our testsuite, importing the
TPS demo, and running the TPS demo. I have tried, wherever possible, to
fix issues related to reported issues but not directly reported by UBSAN
because thse code paths just happened to not have been exercised in
these cases.

These fixes apply only to errors reported, and caused by, core/

The following things have been changed:

* Make sure there are no implicit sign changing casts in core.
* Explicitly type enums that are part of a public API such that users of
  the API cannot pass in wrongly-sized values leading to potential stack
  corruption.
* Ensure that memcpy is never called with invalid or null pointers as
  this is undefined behavior, and when the engine is built with
  optimizations turned on leads to memory corruption and hard to debug
  crashes.
* Replace enum values only used as static values with constexpr static
  const values instead. This has no runtime overhead. This makes it so
  that the size of the enums is explicit.
* Make sure that nan and inf is handled consistently in String.
* Implement a _to_int template to ensure that all of the paths use the
  same algorhithm, and correct the negative integer case.
* Changed the way the json serializer precision work, and added tests to
  verify the new behavior. The behavior doesn't quite match master in
  particulary for negative doubles as the original code tried to cast -inf
  to an int. This then led to negative doubles losing all but one of
  their decimal points when serializing. Behavior in GDScript remains
  unchanged.
2024-12-18 14:31:12 +01:00
Rémi Verschelde d328c00ad3
Merge pull request #99667 from RandomShaper/res_load_verb
ResourceLoader: Print load message only when actually loading
2024-12-18 09:53:06 +01:00
Pedro J. Estébanez 6740823e40 ResourceLoader: Print load message only when actually loading 2024-12-18 09:36:16 +01:00