summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/lib/osdobj_common.cpp
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2026-02-07 13:32:37 -0500
committer arbee <rb6502@users.noreply.github.com>2026-02-07 13:32:37 -0500
commit8349e95e3e0ea4d3081739e2b8bb5787b9e366ba (patch)
tree89c058b1454f3c898fb918dc2ce1c7a2fb701e4b /src/osd/modules/lib/osdobj_common.cpp
parentdba6d057f1186642e73eb7fa020aabf9647b163f (diff)
Initial support for SDL3. [R. Belmont, Vas Crabb]
* SDL3 is the default for macOS targets. Linux/Windows can build with OSD=sdl3 while we wait for better distro support for SDL3. Both X11 and Wayland sessions are fully supported on Linux. * SDL3 -sound=sdl supports both input and output. All other video, sound, and input functionality should otherwise be the same for now. SDL 3.4+ multiple keyboard/mouse support is planned.
Diffstat (limited to 'src/osd/modules/lib/osdobj_common.cpp')
-rw-r--r--src/osd/modules/lib/osdobj_common.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp
index 82fabfdc0ba..46f1dac6a6b 100644
--- a/src/osd/modules/lib/osdobj_common.cpp
+++ b/src/osd/modules/lib/osdobj_common.cpp
@@ -237,17 +237,28 @@ void osd_common_t::register_options()
#if !defined(OSD_WINDOWS) && !defined(SDLMAME_WIN32)
REGISTER_MODULE(m_mod_man, RENDERER_BGFX); // try BGFX after OpenGL on other operating systems for now
#endif
+#ifdef SDLMAME_SDL3
+ REGISTER_MODULE(m_mod_man, RENDERER_SDL3ACCEL);
+#if !defined(SDLMAME_EMSCRIPTEN)
+ REGISTER_MODULE(m_mod_man, RENDERER_SDL3SOFT);
+#endif
+#else
REGISTER_MODULE(m_mod_man, RENDERER_SDL2);
#if !defined(SDLMAME_EMSCRIPTEN)
REGISTER_MODULE(m_mod_man, RENDERER_SDL1);
#endif
+#endif
REGISTER_MODULE(m_mod_man, RENDERER_NONE);
REGISTER_MODULE(m_mod_man, SOUND_WASAPI);
REGISTER_MODULE(m_mod_man, SOUND_XAUDIO2);
REGISTER_MODULE(m_mod_man, SOUND_COREAUDIO);
REGISTER_MODULE(m_mod_man, SOUND_JS);
+#ifdef SDLMAME_SDL3
+ REGISTER_MODULE(m_mod_man, SOUND_SDL3);
+#else
REGISTER_MODULE(m_mod_man, SOUND_SDL);
+#endif
#ifndef NO_USE_PORTAUDIO
REGISTER_MODULE(m_mod_man, SOUND_PORTAUDIO);
#endif
@@ -284,26 +295,34 @@ void osd_common_t::register_options()
#endif
REGISTER_MODULE(m_mod_man, MIDI_NONE);
+#if defined(SDLMAME_SDL2) || defined(SDLMAME_SDL3)
REGISTER_MODULE(m_mod_man, KEYBOARDINPUT_SDL);
+#endif
REGISTER_MODULE(m_mod_man, KEYBOARDINPUT_RAWINPUT);
REGISTER_MODULE(m_mod_man, KEYBOARDINPUT_DINPUT);
REGISTER_MODULE(m_mod_man, KEYBOARDINPUT_WIN32);
REGISTER_MODULE(m_mod_man, KEYBOARD_NONE);
+#if defined(SDLMAME_SDL2) || defined(SDLMAME_SDL3)
REGISTER_MODULE(m_mod_man, MOUSEINPUT_SDL);
+#endif
REGISTER_MODULE(m_mod_man, MOUSEINPUT_RAWINPUT);
REGISTER_MODULE(m_mod_man, MOUSEINPUT_DINPUT);
REGISTER_MODULE(m_mod_man, MOUSEINPUT_WIN32);
REGISTER_MODULE(m_mod_man, MOUSE_NONE);
+#if defined(SDLMAME_SDL2) || defined(SDLMAME_SDL3)
REGISTER_MODULE(m_mod_man, LIGHTGUNINPUT_SDL);
+#endif
REGISTER_MODULE(m_mod_man, LIGHTGUN_X11);
REGISTER_MODULE(m_mod_man, LIGHTGUNINPUT_RAWINPUT);
REGISTER_MODULE(m_mod_man, LIGHTGUNINPUT_WIN32);
REGISTER_MODULE(m_mod_man, LIGHTGUN_NONE);
+#if defined(SDLMAME_SDL2) || defined(SDLMAME_SDL3)
REGISTER_MODULE(m_mod_man, JOYSTICKINPUT_SDLGAME);
REGISTER_MODULE(m_mod_man, JOYSTICKINPUT_SDLJOY);
+#endif
REGISTER_MODULE(m_mod_man, JOYSTICKINPUT_WINHYBRID);
REGISTER_MODULE(m_mod_man, JOYSTICKINPUT_DINPUT);
REGISTER_MODULE(m_mod_man, JOYSTICKINPUT_XINPUT);