Confused on Steam Play and Proton? Be sure to check out our guide.
We do often include affiliate links to earn us some pennies. See more here.

Cross-platform development library SDL3 gets a Vulkan Renderer and camera API

By -
Last updated: 23 Feb 2024 at 2:30 pm UTC

With development work ongoing for SDL3, some recent exciting improvements include a Vulkan Render backend and a camera API.

What is SDL? Simple DirectMedia Layer is an open source cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, graphics hardware and more. It's popular and used by quite a lot of games, even Valve use it. See more on the official site.

SDL3 is going to be a pretty big release and just recently Valve developer Dan Ginsburg had their Vulkan Renderer merged into the project. From the pull request:

This pull request adds an implementation of a Vulkan Render backend to SDL. I have so far tested this primarily on Windows, but also smoke tested on Linux and macOS (MoltenVK). I have not tried it yet on Android, but it should be usable there as well (sans any bugs I missed). This began as a port of the SDL Direct3D12 Renderer, which is the closest thing to Vulkan as existed in the SDL codebase. The shaders are more or less identical (with the only differences being in descriptor bindings vs root descriptors). The shaders are built using the HLSL frontend of glslang.

Everything in the code is pure Vulkan 1.0 (no extensions), with the exception of HDR support which requires the Vulkan instance extension VK_EXT_swapchain_colorspace. The code could have been simplified considerably if I used dynamic rendering, push descriptors, extended dynamic state, and other modern Vulkan-isms, but I felt it was more important to make the code as vanilla Vulkan as possible so that it would run on any Vulkan implementation.

On top of that developer Ryan Gordon also posted on Patreon about the new camera API, which enables SDL3 to access cameras across many platforms and a quick rough video was shown of it in action on Linux below:

YouTube Thumbnail
YouTube videos require cookies, you must accept their cookies to view. View cookie preferences.
Accept Cookies & Show   Direct Link
Article taken from GamingOnLinux.com.
26 Likes
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly checked on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly. You can also follow my personal adventures on Bluesky.
See more from me
All posts need to follow our rules. For users logged in: please hit the Report Flag icon on any post that breaks the rules or contains illegal / harmful content. Guest readers can email us for any issues.
6 comments Subscribe

Pyretic 23 Feb 2024
This is really cool! I keep forgetting about SDL3 because it seems like everyone is really happy with SDL2 right now. May I ask what the big developments with SDL3 are right now?
Shmerl 23 Feb 2024
Can someone explain please what does rendering backend mean for SDL? SDL has some abstraction over graphics API?

I thought it's primarily useful for abstracting stuff like WSL / windowing integration and input and such.


Last edited by Shmerl on 23 Feb 2024 at 5:37 pm UTC
nlborlcl 23 Feb 2024
View PC info
  • Supporter Plus
Can someone explain please what does rendering backend mean for SDL? SDL has some abstraction over graphics API?

I thought it's primarily useful for abstracting stuff like WSL / windowing integration and input and such.

SDL has had the ability to talk to Vulkan since 2.0.6, five years ago, https://discourse.libsdl.org/t/sdl-2-0-6-released/23109 . I believe this means when you say to SDL, "hey go draw this" (not through OpenGL or Vulkan directly), it can use Vulkan if it wants. Usually those rendering APIs that come in the windowing APIs are... on the simple side. https://wiki.libsdl.org/SDL2/SDL_Renderer , so I can't them having the hundreds and hundreds of possible commands of OpenGL or Vulkan.
elmapul 24 Feb 2024
"a camera API"
first thing to do with this:
implement on godot!
someone please?


Last edited by elmapul on 24 Feb 2024 at 9:55 am UTC
FireBurn 24 Feb 2024
Ryan is adorbs!
Pyretic 24 Feb 2024
"a camera API"
first thing to do with this:
implement on godot!
someone please?

I don't think Godot uses SDL.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register