Commit Graph

1296 Commits

Author SHA1 Message Date
Riteo 7e0f7d3abd Add Wayland support
Not everything is yet implemented, either for Godot or personal
limitations (I don't have all hardware in the world). A brief list of
the most important issues follows:

- Single-window only: the `DisplayServer` API doesn't expose enough
information for properly creating XDG shell windows.

- Very dumb rendering loop: this is very complicated, just know that
the low consumption mode is forced to 2000 Hz and some clever hacks are
in place to overcome a specific Wayland limitation. This will be
improved to the extent possible both downstream and upstream.

- Features to implement yet: IME, touch input, native file dialog,
drawing tablet (commented out due to a refactor), screen recording.

- Mouse passthrough can't be implement through a poly API, we need a
rect-based one.

- The cursor doesn't yet support fractional scaling.

- Auto scale is rounded up when using fractional scaling as we don't
have a per-window scale query API (basically we need
`DisplayServer::window_get_scale`).

- Building with `x11=no wayland=yes opengl=yes openxr=yes` fails.

This also adds a new project property and editor setting for selecting the
default DisplayServer to start, to allow this backend to start first in
exported projects (X11 is still the default for now). The editor setting
always overrides the project setting.

Special thanks to Drew Devault, toger5, Sebastian Krzyszkowiak, Leandro
Benedet Garcia, Subhransu, Yury Zhuravlev and Mara Huldra.
2024-01-30 16:44:47 +01:00
David Snopek a8690cbeed Add support for OpenXR local floor extension 2024-01-23 09:19:09 -06:00
Hugo Locurcio 6e5e7b8cb7
Add `--log-file` command line argument to write output log to a file
This works even if file logging is disabled in the project settings,
or for the editor/project manager.

`--log-file`'s value can be an absolute path or relative to the project
directory (similar to existing arguments like `--write-movie`).
2024-01-19 20:30:04 +01:00
Rémi Verschelde fa81059b9d
Merge pull request #85939 from adamscott/single-threaded-godot-4
Add `THREADS_ENABLED` macro in order to compile Godot to run on the main thread
2024-01-18 09:33:52 +01:00
Adam Scott bd70b8e1f6
Add THREADS_ENABLED macro in order to compile Godot to run on the main thread 2024-01-17 13:58:29 -05:00
Rémi Verschelde 0a7579b161
Fix `#if *_ENABLED` inconsistencies, should check if defined
Co-authored-by: Caroline Joy Bell <halotroop2288@proton.me>
2024-01-17 10:30:15 +01:00
Rémi Verschelde dc79e956b6
Merge pull request #86587 from RandomShaper/wtp_enhance
Enhance & fix `WorkerThreadPool`
2024-01-11 17:38:09 +01:00
kobewi 0e8f90f4c8 Update deferred calls to use Callables 2024-01-09 16:11:47 +01:00
Pedro J. Estébanez 9444d297ed WorkerThreadPool: Overhaul scheduling and synchronization
This commits rewrites the sync logic in a way that the
`use_system_threads_for_low_priority_tasks` setting, which was added due to
the lack of a cross-platform wait-for-multiple-objects functionality, can be
removed (it's as if it was effectively hardcoded to `false`).

With the new implementation, we have the best of both worlds: threads don't
have to poll, plus no bespoke threads are used.

In addition, regarding deadlock prevention, since not every possible case of
wait-deadlock could be avoided, this commits removes the current best-effort
avoidance mechanisms and keeps only a simple, pessimistic way of detection.

It turns out that the only current user of deadlock prevention, ResourceLoader,
works fine with it and so every possible situation in resource loading is now
properly handled, with no possibilities of deadlocking. There's a comment in
the code with further details.

Lastly, a potential for load tasks never being awaited/disposed is cleared.
2024-01-08 12:45:42 +01:00
Hugo Locurcio 6da4d5bd60
Suggest `--headless` CLI argument in DisplayServer not found error message
This is helpful for newcomers setting up Godot on CI, as this provides
automatic guidance as for why it doesn't run out of the box if
there's no X11 server available.
2023-12-21 23:42:39 +01:00
Yuri Sizov 3a8524dd92
Merge pull request #83452 from RandomShaper/rd_common
Split `RenderingDevice` into API-agnostic and `RenderingDeviceDriver` parts
2023-12-20 20:09:18 +01:00
Pedro J. Estébanez 12a519bae2 Split RenderingDevice into API-agnostic and RenderingDeviceDriver parts
Credit and thanks to @bruzvg for multiple build fixes, update of 3rd-party items and MinGW support.

Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
2023-12-20 19:18:08 +01:00
bruvzg e01b22a69d
[Windows] Make Windows Ink tablet API default, add dummy driver to disable tablet input. 2023-12-18 22:36:54 +02:00
Rémi Verschelde 41365c6c8b
Merge pull request #70315 from RandomShaper/d3d12_mesa
Direct3D 12 Rendering Driver (Mesa NIR approach)
2023-12-12 21:58:57 +01:00
Pedro J. Estébanez 2f47c57385 Add Direct3D 12 RenderingDevice implementation 2023-12-12 19:10:04 +01:00
Rémi Verschelde 748113280f
Merge pull request #85273 from bruvzg/amd_ban
Force ANGLE on all pre GCN 4th gen. AMD/ATI GPUs.
2023-12-12 10:39:52 +01:00
Yuri Sizov 07677f0f51 Merge pull request #85885 from YuriSizov/bench-pressing
Improve engine startup/shutdown benchmarks
2023-12-08 17:12:26 +01:00
Yuri Sizov 9dce1a45a0 Merge pull request #85819 from Malcolmnixon/export-android-build-template
Add option to install android build template for export
2023-12-08 16:58:54 +01:00
Malcolm Nixon 988c1bf298 Add option to install android build template for export
This PR adds a new "--install-android-build-template" command-line option which causes the android build template to be installed before exporting the project.
2023-12-08 09:00:25 -05:00
Yuri Sizov d7cca8162d Improve logging and benchmarking in Main 2023-12-08 12:53:04 +01:00
Yuri Sizov fc3f40f37d Improve engine startup/shutdown benchmarks
- Add contexts to give a better sense of benchmarked areas.
- Add missing benchmarks and adjust some begin/end points.
- Clean up names.
- Improve Android's internal benchmarks in a similar manner.

Co-authored-by: Fredia Huya-Kouadio <fhuya@meta.com>
2023-12-08 12:53:04 +01:00
Rémi Verschelde cff4af018f
CI: Add 4.2-stable.expected file for GDExtension compatibility checks 2023-12-07 09:36:54 +01:00
bruvzg d48524a3f4
[macOS] Switch ANGLE backend to ANGLE over OpenGL, switch default compatibility renderer back to native. 2023-12-05 15:39:40 +02:00
bruvzg 54747fab72
Force ANGLE on all pre GCN 4th gen. AMD/ATI GPUs. 2023-11-23 19:15:25 +02:00
Yuri Sizov bc1949d797 Correctly check scripts that must inherit `EditorPlugin`
Also updates some error messages related to this kind of check
across the codebase.
2023-11-23 16:24:43 +01:00
bruvzg cf56b881eb
[macOS] Cleanup default GL driver setting. 2023-11-15 10:07:16 +02:00
Hugo Locurcio a63556212d
Don't apply frame delay project setting to the editor
This appears to already be the case for the Max FPS project setting.
2023-11-12 12:09:39 +01:00
bruvzg 173b84127b
[Windows] Add some AMD GPUs to the OpenGL blocklist. 2023-11-09 20:11:04 +02:00
bruvzg f3d4f5a77e
[X11] Add fallback from desktop GL to GLES, suppress PRIME detector error spam. 2023-11-06 12:40:44 +02:00
Yuri Sizov b733901e9e Merge pull request #84354 from RandomShaper/gdext_no_cache_doc
Polish & fix editor help cache generation
2023-11-02 20:34:22 +01:00
Pedro J. Estébanez a1d8fc1af9 Polish & fix editor help cache generation
- Isolated the generation of extensions's docs. They're now not cached and refreshed as needed.
- Removed superfluous sorting of the class list.
- Removed some superfluous/unused elements.
- Renamed some items for clarity.
2023-11-02 13:46:37 +01:00
Rémi Verschelde 799d30c306
Merge pull request #83753 from bruvzg/mac_angle_fb
[macOS] Fallback to native OpenGL renderer if ANGLE initialization failed.
2023-10-31 20:14:42 +01:00
bruvzg f8829c80bb
Fix missing initial position modes for the main window. 2023-10-23 09:56:59 +03:00
bruvzg 590c353707
[macOS] Fallback to native OpenGL renderer if ANGLE initialization failed. Remove platform specific renderer config values from docs. 2023-10-21 22:09:35 +03:00
Daylily-Zeleen fee3b85a2b Fix missing editor singletons when dump extension api 2023-10-13 14:36:51 +08:00
Rémi Verschelde 4b7cc99bc1
Merge pull request #79169 from reduz/debug-canvas-item-redraw
Debug CanvasItem redraw
2023-10-11 08:40:05 +02:00
Rémi Verschelde 1fe7f8a96c
Merge pull request #82893 from m4gr3d/godot_android_lib_improvements
Cleanups and improvements to the Godot Android library api
2023-10-10 09:11:53 +02:00
Fredia Huya-Kouadio 2951c162ed Cleanups and improvements to the Godot Android library api:
- Provide api to retrieve the running Godot instance from a GodotHost
- Provide api for the GodotHost to register runtime GodotPlugin instances
- Hide the GodotService class until it's completed
- Include project setting to enable long press for Android devices
- Include project setting to enable pan and scale gestures on Android devices
2023-10-08 05:30:38 -07:00
Jack Wilsdon 22b00e392e Fix building without GDScript
Fixes #82231
2023-10-08 01:29:04 +01:00
Rémi Verschelde d7bca20359
Merge pull request #82722 from BastiaanOlij/openxr_fix_hand_tracking_issues
OpenXR: Fix small hand tracking issues
2023-10-04 15:43:18 +02:00
bruvzg af00c4a54a
[X11] Add support for using EGL/GLES instead of GLX. 2023-10-04 14:15:36 +03:00
Bastiaan Olij c60ef33175 OpenXR Fix small hand tracking issues 2023-10-04 13:18:31 +11:00
Rémi Verschelde 3a5d524287
Merge pull request #82614 from m4gr3d/openxr_eye_gaze_interaction
Add support for the OpenXR Eye gaze interaction extension
2023-10-03 17:25:52 +02:00
bruvzg ac3fc2a8a1
[ANGLE] Add fallback control options and defaults.
[macOS] Use ANGLE by default if engine is built with statically linked ANGLE.
[Windows] Add option enable/disable fallback to ANGLE and option force specific GPU to always use ANGLE.
2023-10-03 16:23:43 +03:00
Bastiaan Olij 9e56e7a3ce Add support for the OpenXR Eye gaze interaction extension
Co-authored-by: Bastiaan Olij <mux213@gmail.com>
2023-10-02 14:02:23 -07:00
Rémi Verschelde 251fb83d53
Merge pull request #82331 from rburing/gdextension_dump_docs
Optionally include documentation in GDExtension API dump
2023-09-26 22:46:34 +02:00
Ricardo Buring 8ee04c5f87 Optionally include documentation in GDExtension API dump 2023-09-26 21:39:24 +02:00
Rémi Verschelde da91cf9367
Merge pull request #82347 from SaracenOne/dir_access_checks
Add error checks for DirAccess creation
2023-09-26 16:36:47 +02:00
Rémi Verschelde cdbc2fdaa6
Merge pull request #81608 from timothyqiu/fullscreen-editor
Make editor support `--fullscreen` command-line argument
2023-09-26 08:20:54 +02:00
Rémi Verschelde 7dccb9e039
Merge pull request #80796 from smix8/navgenerator_2d_4.x
Add 2D navigation mesh baking
2023-09-26 08:17:58 +02:00