Thanks to all the people who contributed code and feedback, SDL 2.0.16 is now available as a PRERELEASE build!

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


  • Added SDL_FlashWindow() to get a user’s attention
  • Added SDL_GetAudioDeviceSpec() to get the preferred audio format of a device
  • Added SDL_SetWindowAlwaysOnTop() to dynamically change the SDL_WINDOW_ALWAYS_ON_TOP flag for a window
  • Added SDL_SoftStretchLinear() to do bilinear scaling between 32-bit software surfaces
  • Added SDL_UpdateNVTexture() to update streaming NV12/21 textures
  • Added SDL_GameControllerSendEffect() and SDL_JoystickSendEffect() to allow sending custom trigger effects to the DualSense controller
  • Added SDL_GameControllerGetSensorDataRate() to get the sensor data rate for PlayStation and Nintendo Switch controllers
  • Added support for the Amazon Luna game controller
  • Added rumble support for the Google Stadia controller using the HIDAPI driver
  • Added SDL_GameControllerType constants for the Amazon Luna and Google Stadia controllers
  • Added analog rumble for Nintendo Switch Pro controllers using the HIDAPI driver
  • Reduced CPU usage when using SDL_WaitEvent() and SDL_WaitEventTimeout()


  • Added SDL_SetWindowsMessageHook() to set a function that is called for all Windows messages
  • Added SDL_RenderGetD3D11Device() to get the D3D11 device used by the SDL renderer


  • Greatly improved Wayland support
  • Added support for audio output and capture using Pipewire
  • Added the hint SDL_HINT_AUDIO_INCLUDE_MONITORS to control whether PulseAudio recording should include monitor devices
  • Added the hint SDL_HINT_AUDIO_DEVICE_STREAM_ROLE to describe the role of your application for audio control panels


  • Added support for audio output and capture using AAudio
  • Added SDL_AndroidShowToast() to show a lightweight notification


  • Added support for mouse relative mode on iOS 14.1 and newer
  • Added support for the Xbox Series X controller


  • Added support for the Xbox Series X controller

I wish #4392 made it in to finally fix fullscreen support on Windows

1 Like

Still no function for ‘draw a triangle’? :frowning_face:


I was kinda hoping the triangle PR would make the cut…


The final RC is now available!

We’re planning to ship on Monday, so please let us know if there are any showstoppers for this release:


1 Like

We had to get this release out, as it was meant to be a smaller release, but between moving to GitHub, writing a wiki from scratch, helping Fedora migrate to sdl12-compat, etc, we were months behind schedule.

The triangle rendering pull request is flagged for the 2.0.18 milestone, and if we don’t have a major disaster, we really do want to ship on a shorter timeline this time. Famous last words though, I know.


Wow, thanks that would be amazing! So appreciate what you and all the other contributors do for SDL!

1 Like

This landed in revision control last night, if you want to try it out!


I just had a geek orgasm over SDL_RenderGeometry. This is huge! It’s even more exciting than when float rendering functions were added. I’m not even being sarcastic here, lol. This feature adds so many possibilities. Thank you so much to the devs who finally put this together :heart_eyes:

@icculus Is it feasible to add a version of SDL_RenderGeometry that takes 4 points to make a 4 vertex shape? :pray:

1 Like

Glad it’s not just me! :rofl:

1 Like

I played around a bit with the upcoming SDL_RenderGeometry() function.
Even though I use OpenGL nowadays for such rendering, it’s very nice to see such functionality coming to SDL itself!


Anything can be broken down into triangles! :slight_smile:


Yeah, SDL_RenderGeometry() is real nice :smile:

Gonna see about getting Dear ImGUI to work with it

The ImGui PR was updated here!