1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-28 16:07:14 +00:00
Commit Graph

6841 Commits

Author SHA1 Message Date
Matias N. Goldberg
aaa0e2fddf Add Swappy & Pre-Transformed Swapchain
- Adds Swappy for Android for stable frame pacing
- Implements pre-transformed Swapchain so that Godot's compositor is in
charge of rotating the screen instead of Android's compositor
(performance optimization for phones that don't have HW rotator)

============================

The work was performed by collaboration of TheForge and Google. I am
merely splitting it up into smaller PRs and cleaning it up.

Changes from original PR:

- Removed "display/window/frame_pacing/android/target_frame_rate" option
to use Engine::get_max_fps instead.
- Target framerate can be changed at runtime using Engine::set_max_fps.
- Swappy is enabled by default.
- Added documentation.
- enable_auto_swap setting is replaced with swappy_mode.
2024-10-28 18:55:37 -03:00
jpetersen
4036270f8d Support for XCode 8+ feature PROVISIONING_PROFILE_SPECIFIER
https://developer.apple.com/documentation/xcode/build-settings-reference\#Provisioning-Profile

Used to allow for specific provisioning profile to be specified by name instead of UUID.

Needed to solve this problem where uuid wasn’t disambiguating: https://stackoverflow.com/questions/45051712/signing-app-with-xcodebuild-command-line-with-provisioning-profile-fails

Allows for specification for release and debug versions through environment variables or through export template attributes.

Debug:
EnvironmentVariable: GODOT_IOS_PROFILE_SPECIFIER_DEBUG
Export template: “application/provisioning_profile_specifier_debug”

Release:
EnvironmentalVariable: GODOT_IOS_PROFILE_SPECIFIER_RELEASE
Export Template: “application/provisioning_profile_specifier_release”
2024-10-28 11:37:55 -07:00
Summersay415
6d14cd6ff9 Fix fallbacks to OpenGL 2024-10-28 22:57:19 +07:00
Summersay415
4fd53eb128 Add media permissions 2024-10-28 19:14:20 +07:00
bruvzg
335b42d437 Remove button number limit from Windows dialog_show() implementation. 2024-10-27 16:54:03 +02:00
Thaddeus Crews
07e759b74a Merge pull request #97771 from dsnopek/openxr-linux-egl
OpenXR: Add support for Wayland on Linux
2024-10-25 13:04:08 -05:00
Thaddeus Crews
17f06f6dae Merge pull request #97555 from dustdfg/platform_methods/extract_validate_arch
Build System: Extract `validate_arch` helper functions
2024-10-25 13:03:48 -05:00
Adam Scott
0d350e7108 Set clang-format RemoveSemicolon rule to true
- Set clang-format `Standard` rule to `c++20`
2024-10-25 13:49:43 -04:00
Thaddeus Crews
1015a481ff Merge pull request #98431 from lodicolo/4.3-stable_GH_76825
Fix GodotFetch glue code for null response bodies
2024-10-24 13:23:07 -05:00
Thaddeus Crews
c278d57233 Merge pull request #98427 from syntaxerror247/document-immersive-mode
Add documentation for Android immersive mode
2024-10-24 13:23:05 -05:00
Thaddeus Crews
1001a8c663 Merge pull request #98380 from RandomShaper/mobile_strict_alias
Android & iOS: Enable strict aliasing
2024-10-24 13:22:55 -05:00
Thaddeus Crews
14d201ab54 Merge pull request #97556 from dustdfg/platforms/windows_detect_extract_common_checks
Extract common check functions in windows_detect.py file
2024-10-24 13:22:40 -05:00
Garetonchick
2bd759964e fix drag-and-drop in windows 2024-10-24 19:43:30 +03:00
Thaddeus Crews
9968828913 SCons: Set appropriate prefix when using clang-cl 2024-10-24 10:22:32 -05:00
Robbie Lodico
c7f421ef5f Fix GodotFetch glue code for null response bodies
The spec says that Response.body can be null (in the event of requests that should have no body, like HEAD requests) and Firefox adheres to it which results in request failure for HEAD requests on Firefox for web exports.

This commit addresses that by treating a null body as an "empty" body (without using a polyfill) and avoids changing the request lifecycle as much as possible.

PR review changes:
- Use == instead of strict ===
- Do not use ?? null
- Comment formatting
2024-10-23 08:10:35 -04:00
Keegan McGonigle
05b266bd89 Fix PWA callback assignment and error handling 2024-10-22 10:28:21 -07:00
Anish Mishra
827961e4e5 Update documentation for Android immersive mode 2024-10-22 22:55:43 +05:30
dan
403e53e1d3 Fix window exiting with no message to user if _create_window fails 2024-10-21 17:31:30 -07:00
Thaddeus Crews
7dbea98c49 Merge pull request #97005 from Repiteo/core/window-corner-style
Core: Add `DisplayServer` flag for sharp corners
2024-10-21 16:39:25 -05:00
Pedro J. Estébanez
c1fd4df3e4 Android & iOS: Enable strict aliasing 2024-10-21 13:33:42 +02:00
Thaddeus Crews
f8c4a683d7 Core: Add DisplayServer flag for sharp corners 2024-10-18 11:20:21 -05:00
Yevhen Babiichuk (DustDFG)
af6d260c17 Don't include core/io/image.h in core/os/os.h
`core/os/os.h` doesn't use `core/io/image.h`. It just brings
transitive dependencies. Lots of dependencies because `core/os/os.h`
is transitively included in almost every file of godot

Also added `core/io/image.h` into files^1 where `Ref<Image>` and `core/os/os.h`
were used to prevent obscure errors involving `Ref<Image>`

^1 except those which include `core/io/image_loader.h` or `core/io/image.h` by
corresponding .h file with the same name

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-10-18 19:04:19 +03:00
Clay John
14fc9a545c Merge pull request #98230 from and-rad/android_permissions
Fix Android app permissions for SDK levels earlier than 28
2024-10-17 21:26:27 -07:00
Thaddeus Crews
30a2a800dd Merge pull request #98127 from darksylinc/matias-wayland-build-error
Fix wrong Wayland path if building with opengl3=no
2024-10-16 14:16:02 -05:00
Thaddeus Crews
6ccff9b009 Merge pull request #98126 from TCROC/macos-codesign-additional-entitlements
Additional macOS codesign entitlements and print verbose
2024-10-16 14:16:01 -05:00
Andreas Raddau
90c35f3978 Fix Android app permissions for SDK levels earlier than 28 2024-10-16 12:47:18 +02:00
Travis Lange
5777a3fed5 added ability to add extra codesign entitlements for macos from godot editor 2024-10-13 09:33:42 -04:00
Matias N. Goldberg
0818408db5 Fix wrong Wayland path if building with opengl3=no
Godot checks if there's Vulkan or GLES3 support.
If no support is found, it shows an error message.

However the code for this error message is left out when building with
opengl3=no
2024-10-12 20:20:12 -03:00
Thaddeus Crews
d4dddd00cb SCons: Extend MinGW support & checks 2024-10-11 14:24:00 -05:00
Thaddeus Crews
a44f691fc7 CI: Add MinGW/GCC build to Windows GHA 2024-10-10 10:10:55 -05:00
Yevhen Babiichuk (DustDFG)
7aacdaa071 Build System: Extract validate_arch helper function
Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-10-06 07:50:49 +03:00
Rémi Verschelde
b0d512636c Merge pull request #97570 from dustdfg/ios_macos/print_warning_instead_of_comments
Replace comments with printed warning for Metal on x86_64
2024-10-04 22:43:46 +02:00
David Snopek
256699ee31 OpenXR: Add support for Wayland on Linux 2024-10-04 11:44:05 -05:00
Rémi Verschelde
3576e840c7 Merge pull request #97789 from bruvzg/ios_icons
[iOS] Add support for dark and tinted icon versions.
2024-10-04 17:18:22 +02:00
bruvzg
4c520e9400 [iOS] Add support for dark and tinted icon versions. 2024-10-04 14:00:27 +03:00
Rémi Verschelde
36837bfb5d Merge pull request #91487 from shatyuka/window-style
Apply `WS_MINIMIZE` style on window creation
2024-10-04 12:58:34 +02:00
Rémi Verschelde
c28dd316a9 Merge pull request #97757 from bruvzg/max_move_screen
Fix `window_set_current_screen` for maximized windows.
2024-10-04 11:22:10 +02:00
Rémi Verschelde
5ac62a6863 Merge pull request #97743 from bruvzg/has_kbd
[DisplayServer] Implement `has_hardware_keyboard` method for Android and iOS.
2024-10-04 11:22:02 +02:00
Rémi Verschelde
dedb2ff217 Merge pull request #97678 from bruvzg/fix_nd_menu
[macOS] Fix menu crash when used from opened native dialog.
2024-10-04 11:21:54 +02:00
Rémi Verschelde
98deb2a000 Merge pull request #90400 from DarioSamo/transfer_and_pipelines
Ubershaders and pipeline pre-compilation (and dedicated transfer queues).
2024-10-03 15:27:11 +02:00
bruvzg
d2f3725120 Fix window_set_current_screen for maximized windows. 2024-10-03 10:38:32 +03:00
Dario
e2c6daf7ef Implement asynchronous transfer queues, thread guards on RenderingDevice. Add ubershaders and rework pipeline caches for Forward+ and Mobile.
- Implements asynchronous transfer queues from PR #87590.
- Adds ubershaders that can run with specialization constants specified as push constants.
- Pipelines with specialization constants can compile in the background.
- Added monitoring for pipeline compilations.
- Materials and shaders can now be created asynchronously on background threads.
- Meshes that are loaded on background threads can also compile pipelines as part of the loading process.
2024-10-02 15:11:58 -03:00
bruvzg
25f439c573 [DisplayServer] Implement has_hardware_keyboard method for Android and iOS. 2024-10-02 20:09:48 +03:00
Adam Scott
7a634ad2d4 [Web] Make audio bus fetching more resilient to errors 2024-10-02 11:24:57 -04:00
Rémi Verschelde
6388314dcc Merge pull request #97645 from adamscott/fix-pwa-reloading-page
Fix web export infinite reload issue
2024-10-02 15:01:16 +02:00
Rémi Verschelde
d66d056727 Merge pull request #97510 from kisg/vulkan_build_fix
Move Vulkan includes to a central `godot_vulkan.h` header
2024-10-01 17:31:03 +02:00
bruvzg
4c8f8e6980 [macOS] Fix menu crash when used from opened native dialog. 2024-10-01 08:30:30 +03:00
Adam Scott
4431af9153 Fix web export infinite reload issue 2024-09-30 11:27:43 -04:00
Fredia Huya-Kouadio
4587d14796 Add logic to automatically pick up jar/aar library dependencies in the res://addons directory 2024-09-29 14:32:10 -07:00
Fredia Huya-Kouadio
5e0805a813 Provide access to the Android runtime to GDScript
Thanks for the fix of `JavaClassWrapper` in https://github.com/godotengine/godot/pull/96182 and the changes in the previous commit, this introduces an `AndroidRuntime` plugin which provides GDScript access to the Android runtime capabilities.

This allows developers to get access to various Android capabilities without the need of a plugin.
For example, the following logic can be used to check whether the device supports vibration:

```
var android_runtime = Engine.get_singleton("AndroidRuntime")
 if android_runtime:
 	print("Checking if the device supports vibration")
 	var vibrator_service = android_runtime.getApplicationContext().getSystemService("vibrator")
 	if vibrator_service:
 		if vibrator_service.hasVibrator():
 			print("Vibration is supported on device!")
 		else:
 			printerr("Vibration is not supported on device")
 	else:
 		printerr("Unable to retrieve the vibrator service")
 else:
 	printerr("Couldn't find AndroidRuntime singleton")
```
2024-09-29 14:32:10 -07:00