SDL 2.29.1 is now available as a PRERELEASE build:

This is a release candidate for 2.30.0
Please let us know if there are any regressions or showstoppers at Issues · libsdl-org/SDL · GitHub

In addition to lots of bug fixes, here are the major changes in this release:


  • Added support for 2 bits-per-pixel indexed surface formats
  • Added the function SDL_GameControllerGetSteamHandle() to get the Steam API handle for a controller, if available
  • Added the event SDL_CONTROLLERSTEAMHANDLEUPDATED which is sent when the Steam API handle for a controller changes. This could also change the name, VID, and PID of the controller.


  • Added the hint SDL_HINT_JOYSTICK_IOKIT to control whether the IOKit controller driver should be used
  • Added the hint SDL_HINT_JOYSTICK_MFI to control whether the GCController controller driver should be used
  • Added the hint SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE to choose whether high or low power GPU should be used for rendering, in the case where there are multiple GPUs available


  • Added the function SDL_GDKGetDefaultUser()
1 Like

I wonder if there is some merge strategy that could make the different commits to surface. Like, if the latest release branch (2.30.x) keeps “continuously” (a person has to do it sometimes) merging with it’s “main” (SDL2), then it’s visible if some commit is missing - just thinking like, I move from 2.28.5 to 2.30.1 later and some commit from 2.28.x branch got forgotten from applying to SDL2 (which then is promoted to 2.30.x).

The release candidate has been updated, thanks for all the feedback!

This release fixes audio distortion and a crash when blitting that was introduced in 2.29.1.

The release candidate has been updated, thanks for all the feedback!

Among other things, this update fixes WASAPI audio issues, improves Android audio latency, fixes Android audio device hotplugging, fixes a crash when accidentally opening a directory as a file, improves the timing of SDL_WaitEventTimeout() on Windows, and adds the SDL_LOGGING environment variable.