Commit graph

3642 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
Rémi Verschelde
6809791fee
Merge pull request #87553 from clayjohn/GLES3-shader-compilation
Significantly improve the speed of shader compilation in compatibility backend
2024-01-29 21:33:49 +01:00
Rémi Verschelde
fa48a51183
Merge pull request #87688 from AThousandShips/what_is_this
Remove unnecessary `this->` expressions
2024-01-29 13:18:09 +01:00
Rémi Verschelde
6305277312
Merge pull request #87670 from RandomShaper/d3d12_16bit
Direct3D 12: Query support for 16-bit operations
2024-01-29 13:18:00 +01:00
Rémi Verschelde
604f8b093e
Merge pull request #87624 from bruvzg/dx12_old_mingw
[D3D12] Add support for building with pre-11.0.0 MinGW versions, make PIX runtime opt-in.
2024-01-29 13:17:41 +01:00
Rémi Verschelde
78680cdebc
Merge pull request #87572 from RandomShaper/d3d12_custom_dbg_print
Direct3D 12: Fix and enable custom debug printing
2024-01-29 13:17:21 +01:00
A Thousand Ships
15369fdb1d
Remove unnecessary this-> expressions 2024-01-29 09:59:18 +01:00
Pedro J. Estébanez
f77f46ebff Direct3D 12: Query support for 16-bit operations 2024-01-28 12:43:58 +01:00
bruvzg
dfa303f7c4
[D3D12] Add support for building with pre-11.0.0 MinGW versions, make PIX runtime opt-in. 2024-01-26 20:43:18 +02:00
Dario
39f279710c Improve stage and slice tracking behavior of RenderingDeviceGraph to fix various synchronization issues. 2024-01-26 10:12:54 -03:00
Rémi Verschelde
184009eda6
Merge pull request #87482 from RandomShaper/d3d12_spacey
Direct3D 12: Let NIR runtime data and push constants use the same register scheme as bindings
2024-01-26 11:45:49 +01:00
Rémi Verschelde
1ce40ebb44
Merge pull request #87386 from clayjohn/GLES3-lightmap-bake
Add GLES3 infrastructure for lightmap baking in the compatibility backend
2024-01-26 11:44:37 +01:00
Rémi Verschelde
cd5e973d7a
Merge pull request #86717 from mrbbbaixue/d3d12-sdk-install-python
Add a python script to install Direct3D 12 SDK components.
2024-01-26 11:43:49 +01:00
Yuri Sizov
3f7ea71e88 Merge pull request #87495 from jsjtxietian/USE_LIGHT_SHADER_CODE
Clean up outdated `USE_LIGHT_SHADER_CODE` usage
2024-01-25 16:27:14 +01:00
Yuri Sizov
1b83e8ae81 Merge pull request #87460 from BastiaanOlij/stereo_ivec
Add ivec variants to multiview_uv for stereo rendering
2024-01-25 16:27:10 +01:00
Pedro J. Estébanez
47da9f8892 Direct3D 12: Fix and enable custom debug printing 2024-01-25 10:42:39 +01:00
clayjohn
efb1cbaad4 Add GLES3 infrastructure for lightmap baking in the compatibility backend 2024-01-24 17:13:30 -08:00
clayjohn
f1781fe9d1 Significantly improve the speed of shader compilation in compatibility backend
Compile the unlit version by default to save on both cache size and compile time
2024-01-24 14:05:03 -08:00
Yuri Sizov
6876303c85 Merge pull request #87489 from clayjohn/GLES3-scissor
Disable scissor test after rendering batches in compatibility renderer
2024-01-24 14:08:44 +01:00
Yuri Sizov
0fa5aa5c8a Merge pull request #86677 from daustria/debug-modes-opengl
Implement overdraw, lighting, and unshaded debug draw modes for opengl
2024-01-24 14:08:03 +01:00
Yuri Sizov
2ce450f8bc Merge pull request #84894 from clayjohn/tangent-error-message
Store ArrayMesh path in RenderingServer for use in error messages
2024-01-24 14:07:47 +01:00
MrBBBaiXue
ea2c6f1d0b Add a python script to install Direct3D 12 SDK components.
This makes it much faster to get started with Direct3D 12 builds,
as you only need to run `python .\misc\scripts\install_d3d12_sdk_windows.py`
then run `scons d3d12=yes`.

This installs DirectX Shader Compiler, Mesa NIR, WinPixEventRuntime
and DirectX 12 Agility SDK.

- Define a default path that uses the locations from the script.
- Now the default path is in "%LOCALAPPDATA%\Godot\build_deps\"
- Updated CI to use this new python script.

Co-Authored-By: Hugo Locurcio <hugo.locurcio@hugo.pro>
2024-01-24 20:11:43 +08:00
jsjtxietian
2004ad1ac5 Clean up outdated USE_LIGHT_SHADER_CODE usage 2024-01-24 12:30:27 +08:00
Bastiaan Olij
1066f01607 Add ivec variants to multiview_uv for stereo rendering 2024-01-23 16:13:31 +11:00
clayjohn
062e8802b7 Disable scissor test after rendering batches in compatibility renderer 2024-01-22 14:55:20 -08:00
Yuri Sizov
bf94131e41 Merge pull request #87225 from kleonc/transposed-texture-fix-2d-normals
Fix 2D normals for transposed texture
2024-01-22 20:39:04 +01:00
Yuri Sizov
e95456b7f3 Merge pull request #86073 from m4rr5/add_reflection_mask
Add a reflection mask to the reflection probes
2024-01-22 20:38:37 +01:00
Pedro J. Estébanez
0a89a2db9e Direct3D 12: Let NIR runtime data and push constants use the same register scheme as bindings 2024-01-22 19:39:27 +01:00
Marcel Offermans
25f573ca63 Add a reflection mask to the reflection probes.
Co-authored-by: Bastiaan Olij <mux213@gmail.com>
2024-01-20 08:07:31 +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
Yuri Sizov
44013b88eb Merge pull request #87298 from RandomShaper/d3d12_qp
D3D12 RDD: Fix wrong argument when resolving timestamp queries
2024-01-17 18:53:37 +01:00
Pedro J. Estébanez
925263c35b D3D12 RDD: Fix wrong argument when resolving timestamp queries 2024-01-17 16:59:13 +01:00
Rémi Verschelde
7d17496535
Merge pull request #87206 from bruvzg/dx12_old_msvc
Fix DX12 build on older MSVC versions, fix missing PIX include.
2024-01-16 10:37:12 +01:00
kleonc
0fe7eead02 Fix 2D normals for transposed texture 2024-01-15 17:34:29 +01:00
Rémi Verschelde
bf7e19887e
Merge pull request #87096 from jsjtxietian/save-to-cache
Add `shader_cache_dir_valid` check to `_save_to_cache`
2024-01-15 13:29:03 +01:00
Rémi Verschelde
463edd0daf
Merge pull request #87067 from moonpirates/bugfix-canvastexture-uvs-compatibility
Fix UV issues in Compatibility renderer
2024-01-15 13:28:14 +01:00
Rémi Verschelde
1248fb9c18
Merge pull request #86855 from RandomShaper/fix_vk_get_image
Fix determination of copyable layout for compressed textures in Vulkan
2024-01-15 13:25:24 +01:00
bruvzg
2893c0b475 Fix DX12 build on older MSVC versions, fix missing PIX include. 2024-01-15 11:03:16 +02:00
jsjtxietian
a365c070b3 Add shader_cache_dir_valid check to _save_to_cache 2024-01-12 17:34:33 +08:00
Jordi Scharp
ac87d5f9a2 Fix issue where the UV's were off in Compatibility
Fixes a bug where CanvasTexture's UVs were off when using the Compatibility mode's renderer.

Fixes #86746
2024-01-11 13:26:57 +01:00
Alessandro Famà
998078f8d7 Fix Dummy audio driver initialization issue on WASAPI output device initialization failure
`AudioDriverWASAPI::init` consistently returns `Error::OK`, even when encountering a failure during the initialization of the output device. This behaviour blocks the dummy driver from initializing in `AudioDriverManager::initialize`.
2024-01-09 17:36:13 +01:00
Rémi Verschelde
a56dd6ca52
Merge pull request #86920 from griffinkh/build_warning_fix
Fix build warning with memset value being too large
2024-01-09 11:29:55 +01:00
Dominic Austria
c8bdd1d774 implement overdraw, lighting, and unshaded debug draw modes for opengl 2024-01-08 17:34:09 -05:00
Dario
cc4d39b0c1 Acyclic Command Graph for RenderingDevice.
Adds a new system to automatically reorder commands, perform layout transitions and insert synchronization barriers based on the commands issued to RenderingDevice.
2024-01-08 14:54:56 -03:00
Griffin Kroah-Hartman
b97cb5ec59 Fix build warning with memset value being too large
Should resolve issue #83342
2024-01-08 17:26:41 +01:00
Rémi Verschelde
25011e9144
Merge pull request #84244 from BastiaanOlij/skip_present_if_needed
Skip swapchain logic if there is nothing to present (Android OpenXR)
2024-01-08 14:52:07 +01:00
Rémi Verschelde
c10d268974
Merge pull request #86787 from ryevdokimov/code-spell-check
Fix various spelling errors across engine solution
2024-01-08 11:55:55 +01:00
Bastiaan Olij
d6caa69e11 Skip swapchain logic if there is nothing to present (Android OpenXR) 2024-01-08 21:51:04 +11:00
Rémi Verschelde
774c4631fd
Merge pull request #84733 from clayjohn/GL-CanvasGroup-performance
Only copy the relevant portion of the screen when copying to backbuffer in Compatibility backend
2024-01-08 11:50:12 +01:00