Simple DirectMedia Layer https://libsdl.org
Find a file
Joshua Ashton ab916a959e video: Only prefer Wayland if fifo-v1 and commit-timing-v1 are available
Wayland has a myriad of unresolved problems regarding surface suspension
blocking forever in QueuePresent/SwapBuffers when occludedand the FIFO
(vsync) implementation being fundamentally broken leading to reduced
GPU-bound performance and 'barcoding' frametimes due to swapchain
starvation.

There are two protocols used to solve these two problems together --
fifo-v1 and commit-timing-v1, which implement the commit queue on the
compositor side, and a timestamp that frames are intended to be
displayed for/discarded respectfully.

To avoid severe performance regressions for developers targeting SDL3,
only pick Wayland as the default backend when these two protocols are
supported -- otherwise fallback to X11/XWayland.

We do this by having two VideoBootStraps, one which is tests the
preferred case, "wayland_preferred" (ie. if fifo-v1 + commit-timing-v1
are available init time), and the fallback, which is just "wayland",
the same name as before, which does no such tests.
Thus, forcing with SDL_VIDEO_DRIVER=wayland will go onto the fallback
option, and pick Wayland always, as usual, so there is no behaviour
change.

In the case that X11/XWayland is not available (ie. no DISPLAY), we will
still fallback to using Wayland without these protocols available.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
2024-08-03 06:55:24 -07:00
.github android: add script in Android archive to create a SDK 2024-08-01 05:07:08 +02:00
android-project Remove createSDLMainRunnable() in favour of main() to fix multiple issues when providing custom main/runnable code (#10434) 2024-08-03 06:34:38 -07:00
build-scripts SDL_cocoakeyboard: Fix errant semicolons in sendPendingKey and clearPendingKey definitions 2024-08-02 18:55:30 -07:00
cmake cmake: Remove HAVE_D3D12_H from sources and introduce SDL_RENDER_D3D(11|12) 2024-08-01 17:49:02 +00:00
docs Document the new SDL3 Android archive artifact 2024-08-01 17:48:49 +00:00
examples examples: Split up description text by line breaks. 2024-07-30 15:37:46 -04:00
include Sync SDL3 wiki -> header 2024-08-03 13:40:37 +00:00
src video: Only prefer Wayland if fifo-v1 and commit-timing-v1 are available 2024-08-03 06:55:24 -07:00
test Use the convenience function SDL_GetWindowFromEvent() 2024-08-02 20:36:35 -07:00
VisualC Added SDL_GetWindowFromEvent 2024-08-03 02:37:11 +00:00
VisualC-GDK Added SDL_GetWindowFromEvent 2024-08-03 02:37:11 +00:00
VisualC-WinRT Added SDL_GetWindowFromEvent 2024-08-03 02:37:11 +00:00
wayland-protocols video: Expose HDR metadata per-window 2024-06-20 15:55:07 -04:00
Xcode Updated Xcode project for SDL_GetWindowFromEvent() 2024-08-02 20:38:50 -07:00
.clang-format Add 'wl_list_for_each_safe' to the clang-format macro list 2024-03-14 10:22:23 -04:00
.clang-tidy Fix size of memcpy in SDL_AudioDeviceFormatChangedAlreadyLocked 2023-08-05 14:14:45 -04:00
.editorconfig .editorconfig: Remove excess apostrophe at *.cocci 2024-06-16 09:18:17 -07:00
.gitignore audio: Refer to audio devices to "playback" and "recording". 2024-06-15 01:08:12 -04:00
.wikiheaders-options wikiheaders: bridge wiki Category docs to the headers! 2024-05-16 11:48:23 -04:00
Android.mk Create a functional CMake project using androidbuild.sh 2024-06-18 00:11:44 +02:00
BUGS.txt Cleaned up a few more Bugzilla mentions. 2021-02-12 14:46:49 -05:00
CMakeLists.txt cmake: Remove HAVE_D3D12_H from sources and introduce SDL_RENDER_D3D(11|12) 2024-08-01 17:49:02 +00:00
CREDITS.md docs: Moved CREDITS and INSTALL to markdown format. 2023-11-29 12:31:27 -05:00
INSTALL.md Updated INSTALL.md 2024-04-10 09:18:42 -04:00
LICENSE.txt Updated copyright for 2024 2024-01-01 13:15:26 -08:00
README-SDL.txt More HTTPS changes in the documentation. 2017-02-16 16:52:03 -05:00
README.md Tweaking documentation for the SDL 3.0 preview release 2024-03-24 06:16:02 -07:00
WhatsNew.txt audio: Refer to audio devices to "playback" and "recording". 2024-06-15 01:08:12 -04:00

Simple DirectMedia Layer (SDL) Version 3.0

https://www.libsdl.org/

Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.

More extensive documentation is available in the docs directory, starting with README.md. If you are migrating to SDL 3.0 from SDL 2.0, the changes are extensively documented in README-migration.md.

Enjoy!

Sam Lantinga (slouken@libsdl.org)