349 Commits

Author SHA1 Message Date
SDL Wiki Bot 31d6acef64 Sync SDL3 wiki -> header
[ci skip]
2026-05-17 15:51:20 +00:00
Sam Lantinga 63d2635719 Added SDL_HINT_AUDIO_DUCK_OTHERS
Previously default audio on Apple platforms would duck other audio streams. This is unexpected, so by default we won't do that and you can use the hint SDL_HINT_AUDIO_DUCK_OTHERS to re-enable that behavior.
2026-05-17 08:47:36 -07:00
Anonymous Maarten 71979477c7 include: add sve2 to documentation of SDL_HINT_CPU_FEATURE_MASK 2026-05-17 04:41:56 +02:00
SDL Wiki Bot 9e07e0c215 Sync SDL3 wiki -> header
[ci skip]
2026-05-14 18:52:22 +00:00
crudelios 439ffd13eb Android: Add support for folder dialogs 2026-05-14 11:50:52 -07:00
SDL Wiki Bot c7df6fe847 Sync SDL3 wiki -> header
[ci skip]
2026-05-05 17:47:49 +00:00
Frank Praznik b8545fce54 x11: Disable the X Synchronization Extension by default
Under the right conditions, this extension can result is smoother resizing when rendering with OpenGL, however, it is known to cause problems in certain cases, such as when handling presentation externally.

Gate it behind a hint, and disable it by default. Developers can selectively enable it when they verify that they meet the criteria for using it, and that it behaves correctly in their apps/games.
2026-05-05 13:46:21 -04:00
Frank Praznik 80a5905075 wayland: Change the non-native fullscreen mode scaling default to 'aspect' 2026-04-26 11:54:31 -04:00
Anders Jenbo a8ecd677ed Add DOS platform support (DJGPP) (#15377)
* dos: Some initial work.

* dos: Turn off buffer on stdio SDL_IOStreams.

Seeking breaks otherwise. We might be able to just fflush() before or seeking
instead?

* dos: Audio implementation using the Sound Blaster 16.

* dos: remove audio Pump interface.

Turns out DosBox-X was having trouble with the Sound Blaster or something;
standard DosBox works correctly directly from the interrupt handler, and
without doubling the buffer size.

* dos: just dump and restore the stdio buffer when seeking.

This is MUCH faster than just leaving buffering disabled, and also works
around getting bogus reads after an fseek. SDL_LoadWAV on test/sample.wav
no longer takes several seconds to finish, and comes up with the correct
data.

I wonder if we're triggering this in LoadWAV because we're malloc'ing data
between seeks/reads, and it's causing the djgpp transfer buffer to change. Or
maybe the Fat DS trick is confusing it? I don't know, I haven't had time to
debug it, it might just be a legit libc bug in djgpp too, for all I know.

* dos: Protect audio device "thread" iterations when streams are locked.

This uses an old trick we used in SDL 1.2 for MacOS Classic, which did its
audio callback in a hardware interrupt. If the audio is locked when the
interrupt fires, make a note of it and return immediately. When the lock is
released, if the interrupt has been fired, run the audio device iteration
right then.

Since there isn't a big device lock in SDL3 (available to the app, at least),
this keeps a counter of when any SDL_AudioStream is locked, which is probably
good enough.

* dos: Implemented initial video subsystem.

This uses VESA interfaces to manage the display and works with the software
renderer.

Events aren't hooked up yet, so prepare to close DosBox on each run.  :)

* dos: Whoops, forgot to add these to revision control. Core and Main support.

* dos: Wired up basic filesystem support.

This gets most of the rendering examples, which use SDL_GetBasePath() to
find textures to load, working.

* dos: Fixed compiler warning.

* dos: Initial mouse support!

* dos: Move interrupt hooking code into core/dos.

* dos: Initial keyboard support!

* dos: Use a simple ring buffer for keyboard events.

Of course Quake 1 solved this better, haha. It's smart: less memory, dirt
simple, and you don't even have to worry about synchronizing with the
interrupt handler, because it's safe for both sides no matter when an
interrupt fires.

* ci: add djgpp job

[sdl-ci-filter djgpp]
[sdl-ci-artifacts]

* dos: Fix build issues after rebase onto current main

- SDL_runapp.c: Add SDL_PLATFORM_DOS to the exclusion list so the
  generic
  SDL_RunApp() is disabled when the DOS-specific one is compiled.
- SDL.c: Exclude SDL_Gtk_Quit() on DOS. DJGPP defines __unix__ which
  sets
  SDL_PLATFORM_UNIX, but DOS has no GTK/display server. The GTK source
  is not compiled (CMake UNIX is false for DOS) so this was a link
  error.
- sdlplatform.cmake: Add DOS case to SDL_DetectCMakePlatform so the
  platform is properly detected from CMAKE_SYSTEM_NAME=DOS.
- i586-pc-msdosdjgpp.cmake: Add i386-pc-msdosdjgpp-gcc as a fallback
  compiler name, since some DJGPP toolchain builds use the i386 prefix.

* Add 8-bit palette support to DOS VESA driver

* Add VBE page-flipping, state restore, and robust keyboard handling

- Implement double-buffered page-flipping for VBE modes with >1 image
  page
- Save and restore full VBE state on video init/quit for clean mode
  switching
- Improve DOS keyboard handling: support extended scancodes and Pause
  key
- Lock ISR code/data to prevent page faults during interrupts
- Always vsync when blitting in single-buffered modes to reduce tearing

* Refactor Sound Blaster audio mixing to main loop

Move audio mixing out of IRQ handler to main loop for improved
stability and to avoid reentrancy issues. Add SDL_DOS_PumpAudio
function, update DMA buffer handling, and adjust sample rate to 22050
Hz.
Silence stale DMA buffer halves to prevent stutter during load.

* Add DOS timer support and update build config

* Add support for pre-SB16 8-bit mono Sound Blaster audio

Detect SB version and select 8-bit mono or 16-bit stereo mode.
Handle DMA and DSP setup for both SB16 and pre-SB16 hardware.
Add FORCE_SB_8BIT option for testing in DOSBox.

* Add SB Pro stereo support and simplify IRQ handler

* Add DOS joystick driver support

* Improve DOS hardware handling and clarify memory allocation

- Poll Sound Blaster DSP status instead of fixed delay after speaker-on
- Clarify DPMI conventional memory is always locked; update comments
- Document and justify DMA memory allocation strategy
- Free IRET wrapper after restoring interrupt vector to avoid leaks
- Throttle joystick axis polling to ~60 Hz to reduce BIOS timing loop
  cost
- Always poll joystick buttons directly for responsiveness

* Query and use mouse sensitivity from INT 33h function 0x1B

* Add support for VESA banked framebuffer modes

Implement banked framebuffer access for VBE 1.2+ modes without LFB.
Detect and initialize banked modes, copy framebuffer data using bank
switching, and blank the framebuffer on mode set. Page-flipping is
disabled in banked mode.

* Add optional vsync to page flipping in DOS VESA driver

* Add cooperative threading support for DOS platform

* Move SoundBlaster audio mixing to SDL audio thread

* Fix DOS platform comments and workarounds for DJGPP support

* Fix SoundBlaster IRQ handling and DMA setup for DOS

- Pass IRQ number to DOS_EndOfInterrupt and handle slave PIC EOI
- Validate DMA channel from BLASTER variable
- Correct DMA page register selection for SB16
- Improve BLASTER variable parsing and error messages
- Unmask/mask IRQs on correct PIC in DOS_HookInterrupt
- Rename SDL_dosjoystick.c to SDL_sysjoystick.c
- Include SDL_main_callbacks.h in SDL_sysmain_runapp.c
- Add include guard to SDL_systhread_c.h

* Add DOS platform options and preseed cache for DJGPP

Disable unsupported SDL features when building for DOS. Add
PreseedDOSCache.cmake to pre-populate CMake cache variables for DJGPP.

* cmake: use a 8.3 naming scheme for tests on DOS

* Apply code style

* Update include/SDL3/SDL_platform_defines.h

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>

* Code review clean up

- Split DOS VESA mode-setting into its own file
- Replace magic numbers with named constants
- Update copyright dates to 2026
- Substract time taken by other threads form delays

* Fix DOS bugs and improve compatibility

- Disable fseeko64 for DJGPP due to broken implementation
- Refactor DOS timer delay to always yield and avoid busy-waiting
- Fix animated cursor rendering in DOS VESA backend
- Always set display mode when creating DOS VESA window
- Work around DJGPP allowing invalid file access in testfile.c
- Bump max threads to 16
- Apply workarounds for threading tests

* Add DOS platform documentation and fix a few issues

- Fix fullscreen default resolution
- Improve best mode matching
- Fix builds on GCC older than 7.0
- Fix text input events

* Fix keyboard mapping of "*"

* Fix running, and existing, under PCem

* Apply suggestions from code review

Co-authored-by: Cameron Cawley <ccawley2011@gmail.com>

* Pre-mix audio in ring buffer and copy to DMA via IRQ thread

* Video fixes and optimizations

* DOS: Fix Intel 740 and VGA compatability

* DOS: Update readme

* DOS: Fix thread ID, get GPU name

* DOS: Cap mouse range

* DOS: Map test resources to 8.3 names

* DOS: Skip unsupported WM color modes

* Fix "windowed" resolution selection

* DOS: Hide INDEX8 modes behind SDL_DOS_ALLOW_INDEX8_MODES

* Remove SDL_HINT_DOS_ALLOW_INDEX8_MODES and order modes logically

* Don't convert cursor if dest is not INDEX8

---------

Co-authored-by: Ryan C. Gordon <icculus@icculus.org>
Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
Co-authored-by: Cameron Cawley <ccawley2011@gmail.com>
Co-authored-by: Gleb Mazovetskiy <glex.spb@gmail.com>
Co-authored-by: Jay Petacat <jay@jayschwa.net>
Tested-by: Cameron Cawley <ccawley2011@gmail.com>
2026-04-23 19:54:49 -04:00
Frank Praznik 76aa12701a hints: Correct the cursor DPI scaling hint
Support for this hint was removed from Wayland shortly after it was added, but the documentation was never updated to reflect this.
2026-04-20 10:33:10 -04:00
SDL Wiki Bot 5c8714cc95 Sync SDL3 wiki -> header
[ci skip]
2026-04-03 23:03:43 +00:00
Sanjay Govind 7f86f9107d Add support for GIP guitars via gameinput (#15301) 2026-04-03 16:02:14 -07:00
Ryan C. Gordon 4d17b99d0a aaudio: Respect SDL_HINT_AUDIO_DEVICE_STREAM_ROLE hint.
Fixes #15299.
2026-04-01 22:17:23 -04:00
Sanjay Govind fdc5efe1cb add vids and pids for a variety of xbox 360 devices (#15211)
Added vids for a variety of xbox 360 devices, mostly for linux use.
Corrected wheel vid and pid being flagged as unknown. Internally, when XUSB is building vid and pids for wireless devices, it assigns 0x02a1 for devices with subtype 1 and 0x02a2 for devices with subtype 2, which are wheels.

Some of these vids and pids do rely on the following patch being merged into the linux kernel, as I have overhauled how VID and PIDs are handled there for wireless devices.
https://patchwork.kernel.org/project/linux-input/patch/20260314075034.1488655-2-sanjay.govind9@gmail.com/

Also added some lists for guitar and drum devices, so we can set controller types correctly for those controllers.
2026-03-17 09:45:26 -07:00
SDL Wiki Bot 466ab45722 Sync SDL3 wiki -> header
[ci skip]
2026-03-08 23:13:12 +00:00
Mike Egger ae3ae4ba44 windows: support flag RIDEV_INPUTSINK in raw input (#15182) 2026-03-08 16:11:33 -07:00
Ryan C. Gordon 10b524c7cc hints: Rename SDL_HINT_OPENGL_FORCE_SRGB_CAPABLE.
It's now SDL_HINT_OPENGL_FORCE_SRGB_FRAMEBUFFER, since it does more than mess
with the srgb-capable context attribute now.

Reference Issue #14898.
2026-02-14 16:33:21 -05:00
Ryan C. Gordon ead67481c0 video: Only set GL_FRAMEBUFFER_SRGB state if the hint requests it.
Reference Issue #14898.
2026-02-14 16:33:21 -05:00
SDL Wiki Bot ae4fb50316 Sync SDL3 wiki -> header
[ci skip]
2026-02-05 20:15:42 +00:00
Ryan C. Gordon 632c83b722 opengl: added SDL_HINT_OPENGL_FORCE_SRGB_CAPABLE.
Reference Issue #14898.
2026-02-05 15:14:18 -05:00
Ryan C. Gordon 7f94c7782a hints: Reformatted some documentation that got mangled.
[ci skip]
2026-02-04 13:46:15 -05:00
chenzw bb8eee8fac Added support for the GameSir-G7 Pro 8K controller 2026-02-03 20:09:04 -08:00
SDL Wiki Bot dc597e0e20 Sync SDL3 wiki -> header
[ci skip]
2026-01-30 22:20:20 +00:00
Aaron Benjamin 9a91d7236a GPU: OpenXR integration (#14837)
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
Based on Beyley's initial draft in #11601.

Co-authored-by: Beyley Cardellio <ep1cm1n10n123@gmail.com>
Co-authored-by: Ethan Lee <flibitijibibo@gmail.com>
2026-01-30 17:18:51 -05:00
Sergei Petunin 460b8a0db1 Fix MAC_PRESS_AND_HOLD hint documentation 2026-01-13 09:00:35 -08:00
Zack Middleton 6247568a1b Improve hint documentation
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
2026-01-02 02:51:41 -05:00
SDL Wiki Bot 165bfd3e83 Sync SDL3 wiki -> header
[ci skip]
2026-01-01 19:18:39 +00:00
Sam Lantinga 5f086e7623 Updated copyright for 2026 2026-01-01 09:40:08 -08:00
Sam Lantinga 128b9260ec Added SDL_HINT_HIDAPI_LIBUSB_GAMECUBE
Fixes https://github.com/libsdl-org/SDL/issues/14682
2025-12-30 14:14:51 -08:00
SDL Wiki Bot bb3d78e260 Sync SDL3 wiki -> header
[ci skip]
2025-12-26 18:14:59 +00:00
Frank Praznik edec0c2ffd hints: Note an additional method for retrieving display connector names 2025-12-26 13:13:30 -05:00
SDL Wiki Bot b14aceea51 Sync SDL3 wiki -> header
[ci skip]
2025-12-21 16:53:21 +00:00
Sam Lantinga 59961d8343 Note that "auto" is the default for SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS
Fixes https://github.com/libsdl-org/SDL/issues/14686
2025-12-21 08:51:26 -08:00
SDL Wiki Bot 5bbf1dcb44 Sync SDL3 wiki -> header
[ci skip]
2025-12-10 01:13:34 +00:00
Sam Lantinga 466ca58b04 Added SDL_HINT_MOUSE_DPI_SCALE_CURSORS
We only want to change cursor display scale if the application or the user opts in by setting a hint. Otherwise cursors could change size unexpectedly when upgrading to SDL 3.4.0.
2025-12-09 17:12:08 -08:00
Ryan C. Gordon 9918d6cb5e emscripten: Move fill-document from hint/property to a window flag.
Fixes #14617.
2025-12-07 21:12:13 -05:00
Ryan C. Gordon bc17a8922b emscripten: Allow SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT to be toggled on a window.
Fixes #14567.
2025-12-04 15:39:47 -05:00
SDL Wiki Bot 1961b16b78 Sync SDL3 wiki -> header
[ci skip]
2025-12-02 15:26:04 +00:00
Ethan Lee dedab7b72c cocoa: Add SDL_HINT_MAC_PRESS_AND_HOLD hint 2025-12-02 10:24:39 -05:00
Ryan C. Gordon c1db2b4bb0 Revert "hints: Added SDL_HINT_AUDIO_ENFORCE_MINIMUM_SPEC."
Build (All) / Create test plan (push) Has been cancelled
Build (All) / level1 (push) Has been cancelled
Build (All) / level2 (push) Has been cancelled
Revert "Sync SDL3 wiki -> header"

This reverts commits b7c8b2f29a and
29213efa65.
2025-12-01 14:39:48 -05:00
SDL Wiki Bot 29213efa65 Sync SDL3 wiki -> header
[ci skip]
2025-12-01 04:28:01 +00:00
unknown b7c8b2f29a hints: Added SDL_HINT_AUDIO_ENFORCE_MINIMUM_SPEC.
Fixes #14426.
2025-11-30 23:26:02 -05:00
SDL Wiki Bot 4e8f93c6f1 Sync SDL3 wiki -> header
[ci skip]
2025-10-26 16:28:36 +00:00
expikr b4eaf9d96f Add hint for blocking win key when using raw keyboard (#13066)
Co-authored-by: Susko3 <Susko3@protonmail.com>
2025-10-26 09:27:33 -07:00
SDL Wiki Bot ac29b02b02 Sync SDL3 wiki -> header
[ci skip]
2025-10-19 18:24:22 +00:00
Ryan C. Gordon 1fe926769c kmsdrm: Restore atomic support. 2025-10-19 14:22:56 -04:00
SDL Wiki Bot 25358cc1b3 Sync SDL3 wiki -> header
[ci skip]
2025-10-13 21:21:44 +00:00
Sam Lantinga a58ae3a94f Added WASAPI support for SDL_HINT_AUDIO_DEVICE_STREAM_ROLE
Also added SDL_HINT_AUDIO_DEVICE_RAW_STREAM

Fixes https://github.com/libsdl-org/SDL/issues/14091
2025-10-13 14:20:19 -07:00
SDL Wiki Bot 7bce16a820 Sync SDL3 wiki -> header
[ci skip]
2025-10-13 04:56:24 +00:00
Sam Lantinga c7cc7ec9af Be more precise about the layout used when latin_letters is enabled 2025-10-12 21:54:35 -07:00