diff --git a/.ci/windows/build.sh b/.ci/windows/build.sh index d554e00e1b..c0e46d219f 100644 --- a/.ci/windows/build.sh +++ b/.ci/windows/build.sh @@ -24,7 +24,7 @@ cmake .. -G Ninja \ -DCMAKE_BUILD_TYPE="${BUILD_TYPE:-Release}" \ -DENABLE_QT_TRANSLATION=ON \ -DUSE_DISCORD_PRESENCE=ON \ - -DYUZU_USE_BUNDLED_SDL2=ON \ + -DYUZU_USE_BUNDLED_SDL3=ON \ -DBUILD_TESTING=OFF \ -DYUZU_TESTS=OFF \ -DDYNARMIC_TESTS=OFF \ diff --git a/docs/Caveats.md b/docs/Caveats.md index 7bc2428bab..b60cfd4ea9 100644 --- a/docs/Caveats.md +++ b/docs/Caveats.md @@ -38,7 +38,7 @@ export LIBGL_ALWAYS_SOFTWARE=1 ``` - Modify the generated ffmpeg.make (in build dir) if using multiple threads (base system `make` doesn't use `-j4`, so change for `gmake`). -- If using OpenIndiana, due to a bug in SDL2's CMake configuration, audio driver defaults to SunOS ``, which does not exist on OpenIndiana. Using external or bundled SDL2 may solve this. +- If using OpenIndiana, due to a bug in SDL3's CMake configuration, audio driver defaults to SunOS ``, which does not exist on OpenIndiana. Using external or bundled SDL3 may solve this. - System OpenSSL generally does not work. Instead, use `-DYUZU_USE_BUNDLED_OPENSSL=ON` to use a bundled static OpenSSL, or build a system dependency from source. ## OpenBSD diff --git a/docs/Deps.md b/docs/Deps.md index 573d1fe14a..928f9b4d41 100644 --- a/docs/Deps.md +++ b/docs/Deps.md @@ -32,7 +32,7 @@ If you are on Windows and NOT building with MSYS2, you may go [back home](Build. The following are handled by Eden's externals: * [FFmpeg](https://ffmpeg.org/) (should use `-DYUZU_USE_EXTERNAL_FFMPEG=ON`) -* [SDL2](https://www.libsdl.org/download-2.0.php) 2.0.18+ (should use `-DYUZU_USE_EXTERNAL_SDL2=ON` OR `-DYUZU_USE_BUNDLED_SDL2=ON` to reduce compile time) +* [SDL3](https://github.com/libsdl-org/SDL/releases) 2.0.18+ (should use `-DYUZU_USE_EXTERNAL_SDL3=ON` OR `-DYUZU_USE_BUNDLED_SDL3=ON` to reduce compile time) All other dependencies will be downloaded and built by [CPM](https://github.com/cpm-cmake/CPM.cmake/) if `YUZU_USE_CPM` is on, but will always use system dependencies if available (UNIX-like only): @@ -116,7 +116,7 @@ sudo dnf install autoconf ccache cmake fmt-devel gcc{,-c++} glslang hidapi-devel ``` * Force system libraries via CMake arguments: - * SDL2: `-DYUZU_USE_BUNDLED_SDL2=OFF -DYUZU_USE_EXTERNAL_SDL2=OFF` + * SDL3: `-DYUZU_USE_BUNDLED_SDL3=OFF -DYUZU_USE_EXTERNAL_SDL3=OFF` * FFmpeg: `-DYUZU_USE_EXTERNAL_FFMPEG=OFF` * [RPM Fusion](https://rpmfusion.org/) is required for `ffmpeg-devel` * Fedora 32 or later is required. @@ -202,7 +202,7 @@ Then install the libraries: `sudo pkg install qt6 boost glslang libzip library/l * Open the `MSYS2 MinGW 64-bit` shell (`mingw64.exe`) * Download and install all dependencies using: - * `pacman -Syu git make mingw-w64-x86_64-SDL2 mingw-w64-x86_64-cmake mingw-w64-x86_64-python-pip mingw-w64-x86_64-qt6 mingw-w64-x86_64-toolchain autoconf libtool automake-wrapper` + * `pacman -Syu git make mingw-w64-x86_64-SDL3 mingw-w64-x86_64-cmake mingw-w64-x86_64-python-pip mingw-w64-x86_64-qt6 mingw-w64-x86_64-toolchain autoconf libtool automake-wrapper` * Add MinGW binaries to the PATH: * `echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc` * Add VulkanSDK to the PATH: diff --git a/docs/Options.md b/docs/Options.md index dc73fecd3e..7323fdc4a3 100644 --- a/docs/Options.md +++ b/docs/Options.md @@ -40,10 +40,10 @@ Notes: * Unavailable on OpenBSD The following options are desktop only: -- `ENABLE_SDL3` (ON) Enable the SDL2 desktop, audio, and input frontend (HIGHLY RECOMMENDED!) +- `ENABLE_SDL3` (ON) Enable the SDL3 desktop, audio, and input frontend (HIGHLY RECOMMENDED!) * Unavailable on Android -- `YUZU_USE_EXTERNAL_SDL2` (ON for non-UNIX) Compiles SDL2 from source -- `YUZU_USE_BUNDLED_SDL2` (ON for MSVC) Download a prebuilt SDL2 +- `YUZU_USE_EXTERNAL_SDL3` (ON for non-UNIX) Compiles SDL3 from source +- `YUZU_USE_BUNDLED_SDL3` (ON for MSVC) Download a prebuilt SDL3 * Unavailable on OpenBSD * Only enabled if YUZU_USE_CPM and ENABLE_SDL3 are both ON - `ENABLE_LIBUSB` (ON) Enable the use of the libusb input frontend (HIGHLY RECOMMENDED) @@ -62,7 +62,7 @@ The following options are desktop only: - `YUZU_ROOM` (ON) Enable dedicated room functionality - `YUZU_ROOM_STANDALONE` (ON) Enable standalone room executable (eden-room) * Requires `YUZU_ROOM` -- `YUZU_CMD` (ON) Compile the SDL2 frontend (eden-cli) - requires SDL2 +- `YUZU_CMD` (ON) Compile the SDL3 frontend (eden-cli) - requires SDL3 - `YUZU_CRASH_DUMPS` Compile crash dump (Minidump) support" * Currently only available on Windows and Linux diff --git a/externals/gamemode/gamemode_client.h b/externals/gamemode/gamemode_client.h index b9f64fe460..5bda6d26f8 100644 --- a/externals/gamemode/gamemode_client.h +++ b/externals/gamemode/gamemode_client.h @@ -89,7 +89,7 @@ static char internal_gamemode_client_error_string[512] = { 0 }; /** * Load libgamemode dynamically to dislodge us from most dependencies. * This allows clients to link and/or use this regardless of runtime. - * See SDL2 for an example of the reasoning behind this in terms of + * See SDL3 for an example of the reasoning behind this in terms of * dynamic versioning as well. */ static volatile int internal_libgamemode_loaded = 1; diff --git a/src/audio_core/sink/sink_details.cpp b/src/audio_core/sink/sink_details.cpp index 70bf75018b..6076ed9eb0 100644 --- a/src/audio_core/sink/sink_details.cpp +++ b/src/audio_core/sink/sink_details.cpp @@ -16,7 +16,7 @@ #ifdef HAVE_CUBEB #include "audio_core/sink/cubeb_sink.h" #endif -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 #include "audio_core/sink/sdl2_sink.h" #endif #include "audio_core/sink/null_sink.h" @@ -71,7 +71,7 @@ constexpr SinkDetails sink_details[] = { &GetCubebLatency, }, #endif -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 SinkDetails{ Settings::AudioEngine::Sdl2, [](std::string_view device_id) -> std::unique_ptr { @@ -115,7 +115,7 @@ const SinkDetails& GetOutputSinkDetails(Settings::AudioEngine sink_id) { // BEGIN REINTRODUCED FROM 3833 - REPLACED CODE BLOCK ABOVE - DIABLO 3 FIX // Auto-select a backend. Prefer CubeB, but it may report a large minimum latency which // causes audio issues, in that case go with SDL. -#if defined(HAVE_CUBEB) && defined(HAVE_SDL2) +#if defined(HAVE_CUBEB) && defined(HAVE_SDL3) iter = find_backend(Settings::AudioEngine::Cubeb); if (iter->latency() > TargetSampleCount * 3) { iter = find_backend(Settings::AudioEngine::Sdl2); diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index 62a7ae40f8..97a86a750a 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp @@ -22,7 +22,7 @@ #ifdef HAVE_LIBUSB #include "input_common/drivers/gc_adapter.h" #endif -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 #include "input_common/drivers/joycon.h" #include "input_common/drivers/sdl_driver.h" #endif @@ -87,7 +87,7 @@ struct InputSubsystem::Impl { #endif RegisterEngine("virtual_amiibo", virtual_amiibo); RegisterEngine("virtual_gamepad", virtual_gamepad); -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 RegisterEngine("sdl", sdl); RegisterEngine("joycon", joycon); #endif @@ -121,7 +121,7 @@ struct InputSubsystem::Impl { #endif UnregisterEngine(virtual_amiibo); UnregisterEngine(virtual_gamepad); -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 UnregisterEngine(sdl); UnregisterEngine(joycon); #endif @@ -151,7 +151,7 @@ struct InputSubsystem::Impl { #endif auto udp_devices = udp_client->GetInputDevices(); devices.insert(devices.end(), udp_devices.begin(), udp_devices.end()); -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 auto joycon_devices = joycon->GetInputDevices(); devices.insert(devices.end(), joycon_devices.begin(), joycon_devices.end()); auto sdl_devices = sdl->GetInputDevices(); @@ -186,7 +186,7 @@ struct InputSubsystem::Impl { if (engine == udp_client->GetEngineName()) { return udp_client; } -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 if (engine == sdl->GetEngineName()) { return sdl; } @@ -277,7 +277,7 @@ struct InputSubsystem::Impl { if (engine == virtual_gamepad->GetEngineName()) { return true; } -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 if (engine == sdl->GetEngineName()) { return true; } @@ -298,7 +298,7 @@ struct InputSubsystem::Impl { gcadapter->BeginConfiguration(); #endif udp_client->BeginConfiguration(); -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 sdl->BeginConfiguration(); joycon->BeginConfiguration(); #endif @@ -314,7 +314,7 @@ struct InputSubsystem::Impl { gcadapter->EndConfiguration(); #endif udp_client->EndConfiguration(); -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 sdl->EndConfiguration(); joycon->EndConfiguration(); #endif @@ -322,7 +322,7 @@ struct InputSubsystem::Impl { void PumpEvents() const { update_engine->PumpEvents(); -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 sdl->PumpEvents(); #endif } @@ -347,7 +347,7 @@ struct InputSubsystem::Impl { std::shared_ptr gcadapter; #endif -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 std::shared_ptr sdl; std::shared_ptr joycon; #endif diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 58c1b151e2..a80177a038 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -95,7 +95,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual #include #include -#ifdef HAVE_SDL2 +#ifdef HAVE_SDL3 #include #include #include // For SDL ScreenSaver functions @@ -584,7 +584,7 @@ GMainWindow::GMainWindow(bool has_broken_vulkan) VkDeviceInfo::PopulateRecords(vk_device_records, this->window()->windowHandle()); } -#if defined(HAVE_SDL2) && !defined(_WIN32) +#if defined(HAVE_SDL3) && !defined(_WIN32) SDL_InitSubSystem(SDL_INIT_VIDEO); // Set a screensaver inhibition reason string. Currently passed to DBus by SDL and visible to @@ -1855,7 +1855,7 @@ void GMainWindow::OnSigInterruptNotifierActivated() { void GMainWindow::PreventOSSleep() { #ifdef _WIN32 SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED); -#elif defined(HAVE_SDL2) +#elif defined(HAVE_SDL3) SDL_DisableScreenSaver(); #endif } @@ -1863,7 +1863,7 @@ void GMainWindow::PreventOSSleep() { void GMainWindow::AllowOSSleep() { #ifdef _WIN32 SetThreadExecutionState(ES_CONTINUOUS); -#elif defined(HAVE_SDL2) +#elif defined(HAVE_SDL3) SDL_EnableScreenSaver(); #endif }