Vulkan 1.2 (license Apache 2.0 and CCA 4.0+, https://github.com/KhronosGroup/Vulkan-Docs) is the new cross platform graphic API which saw a fast adoption. Vulkan is broadly supported from all GPU vendors and it runs on all major platforms.
To avoid stuttering in games Vulkan offers a new extension VK_GOOGLE_display_timing. This will allow the game engine to calculate the time until a frame is displayed on screen.
The Vulkan games available for Linux can be found in the sub menu of Vulkan. For reference you can get a list including other operating systems like Android here https://en.wikipedia.org/wiki/Vulkan_(API)#Software_that_supports_Vulkan
Software Development Environements
- Qt5: Vulkan support has been added with Qt 5.10 by providing Vulkan platform independent helpers, it can be used by applications to render with Vulkan instead of OpenGL or DirectX. For more information read https://blog.qt.io/blog/2017/06/06/vulkan-support-qt-5-10-part-1. Qt5 itself is not yet using Vulkan to render directly, quote from the blog post above: “Vulkan support does not currently cover modules like Qt Quick, Qt 3D, Qt Canvas 3D, the OpenGL backend of QPainter, the GL composition-based QOpenGLWidget/QQuickWidget, etc. “. Additionally the Vulkan support in QT5 is limited at the moment to X11 (XCB) and Wayland support will be added later. With Qt 5.12 Vulkan can be used on the proprietary Metal on the proprietary MacOS via the open source MoltenVK.
- GTK4: With the future GTK4 release the developers want to add besides the OpenGL backend a new Vulkan one. For more details read https://www.phoronix.com/scan.php?page=news_item&px=GTK4-Vulkan-Maturing.
Basic Game Helper Library
SDL2 2.12 (https://www.libsdl.org) is a cross platform basic game development library that can/should be used as a helper for games/applications to access and use video and input devices. It supports Wayland since version 2.0.4, since 2.0.6 it offers Vulkan helpers, since 2.0.8 it supports XDG shell v6 (with this SDL applications can use Wayland instead of XWayland) and 2.0.9 provided support for XDG decorations that will bring back a consistent window decorations on compositors supporting it like Kwin (but Mutter doesn’t support this, open Gtk bug).
SDL12-compat can be used to translate SDL1 to SDL2. This allows you to move away from the legacy project that is out of maintenance. Available in the AUR:
yay sdl2_compat12-git yay lib32-sdl2_compat12-git
If you want to know which of the installed games is using SDL you can use find e.g. in your home directory:
find /home/USERNAME -name “*SDL2-2*”
FLOSS game examples based on SDL:
Game Development Engines
This is a overview of some free and open source software (FLOSS) game engines, if you want a almost complete overview read https://en.wikipedia.org/wiki/List_of_game_engines.
- Armory (license zlib, http://armory3d.org, https://github.com/armory3d/armory) is a new game engine based and fully integrated into Blender. It is using the low level cross platform toolkit Kha (license zlib, https://github.com/Kode/Kha), which supports Vulkan on Linux. So hopefully Armory will support Vulkan too, but there is no official announcement so far.
- Banshee Engine (license LGPLv3, https://github.com/BearishSun/BansheeEngine) is based on modern C++14 and has Vulkan support build in since January 2017. The Linux port of the engine and editor has been finished in November 2017 (https://www.phoronix.com/scan.php?page=news_item&px=Banshee-Engine-Linux-Support).
- Filament (license Apache 2.0, https://github.com/google/filament) is a physically based rendering engine with support for Vulkan 1.0 on Linux and Android.
- Godot (license MIT, https://godotengine.org, https://github.com/godotengine/godot) is a multi platform 2D/3D game engine. Godot 4.0 provides Vulkan support and after the announcement of open sourcing MoltenVK they do target Vulkan instead of OpenGL ES to provide multi platform support (https://www.phoronix.com/scan.php?page=news_item&px=Godot-Vulkan-Focus). Wayland and EGL support is developed too for the 4.0 release.
- BDoom3-BFG (license GPLv3, https://github.com/RobertBeckebans/RBDOOM-3-BFG) is a multi platform 3D engine based on the original Doom 3 engine, and by this support for Linux and 64 bit has been added. Vulkan support will be added as well, read vkDoom3 (Vulkan).
- nCine (license MIT, https://github.com/ncine, https://ncine.github.io) plans to add Vulkan support.
- OGRE (license MIT, https://github.com/OGRECave/ogre) is an open source game engine and will get Vulkan support, currently it can just draw an empty window but shader’s are being explored.
- Ren’Py (license MIT+LGPLv2.1, https://www.renpy.org, https://github.com/renpy/renpy) is an open source game engine for visual novels and is used by more than 1500 games, but no Vulkan support planned so far.
- Xereos (license GPLv3, https://xoreos.org, https://github.com/xoreos/xoreos) is an multi platform open-source re-implementation of the BioWare Aurora Engine. A list of games that potentially could be played by this engine https://xoreos.org/games/index.html, but the engine is work in progress at lacks a lot of game play functions. But it is in active development. Vulkan support is not planned so far.
- Xenko (license MIT, https://github.com/xenko3d/xenko, https://xenko.com) has been released into open source (2018-08-03) and it supports Vulkan.
- Intrinsic (license Apache 2.0, https://github.com/begla/Intrinsic) is a Vulkan based cross-platform 3D game engine in development. It looks promising and the graphic quality is very high. The main website is not available anymore and there seems to be no development.
- Lugdunum (license MIT, https://github.com/Lugdunum3D/Lugdunum) is a cross platform game engine in development written in C++14 with Vulkan support only. The development seems to be stopped.
Game Development Engines – Proprietary
- Unity offers Vulkan support on Linux and Android since version 5.6 released in November 2016. Since Unity 2017.3 (September 2017) there is initial Wayland support as the internal/statically linked SDL has been upgraded to version 2.0.5, read https://blogs.unity3d.com/2017/09/30/unity-2017-3-beta-is-out. As of Unity 2018.2 SDL has been upgraded to 2.0.7, the Unity Editor finally works on Vulkan directly and it supports HiDPI on 4K displays as well. As of Unity 2019.1 support for 32 bit on Linux will be deprecated, only 64 bit is then fully supported. Games with a Vulkan build and/or Wayland SDL support require often start parameters (e.g. in the launch options of Steam):
- Unreal Engine 4 (since February 2017, source code is available under a read license, but not as free/open source), Epic even want to make Vulkan the primary graphic API on Linux, this sounds great! With Unreal Engine 4.20 the Editor works on Vulkan. Since the release of Unreal Engine 4.21 Vulkan is the default target on Linux, OpenGL is now only the fallback. Games with a Vulkan build require often the start parameter (e.g. in the launch options of Steam):
- CRYENGINE 5.4 (https://github.com/CRYTEK/CRYENGINE) offers Vulkan support since July 2017. The source code is available to read only, but it is not a free and open source software license.
- Unigine (https://unigine.com) is a visually astonishing multi platform engine with Linux support, read https://www.phoronix.com/scan.php?page=news_item&px=Unigine-Engine-2.6.1. You can follow the development here https://developer.unigine.com/en/devlog. They are working on Vulkan support, read https://twitter.com/Unigine/status/852441631106248704.
- Valve Source 2 with great Vulkan and Linux support
- id Tech 7 is Vulkan only including the development studio and works on Linux (requirement for Google Stadia), id Tech 6 supported Vulkan only on Windows and Linux only on Servers
- Serious Engine with great Vulkan and Linux support
- Flax Engine (https://flaxengine.com/home) supports Vulkan and Linux.
Software Development Kits (SDK)
- Anvil (license MIT, https://github.com/GPUOpen-LibrariesAndSDKs/Anvil) is a framework and abstraction layer for Vulkan by the GPUOpen initiative of AMD for easier development, read https://www.phoronix.com/scan.php?page=news_item&px=AMD-Opens-Anvil-Vulkan.
- V-EZ (license MIT, https://github.com/GPUOpen-LibrariesAndSDKs/V-EZ) is another abstraction layer for Vulkan by the GPUOpen initiative of AMD in cooperation the Khronos group for easier development like simplified memory mangement, read https://www.phoronix.com/scan.php?page=news_item&px=AMD-GPUOpen-V-EZ.
- Radeon-Rays (license MIT, https://github.com/GPUOpen-LibrariesAndSDKs/RadeonRays_SDK) added support for Vulkan, read https://gpuopen.com/gaming-product/radeon-rays. Besides this AMD released RadeonRenderPro Baikal (license MIT, https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRender-Baikal) a fully functional rendering engine showing Radeon-Rays capabilities.
- The Forge (license Apache 2.0, https://github.com/ConfettiFX/The-Forge) is a cross platform ray-tracing rendering framework.
- GAPID (license Apache, https://github.com/google/gapid) is a cross platform Vulkan (offline) debugger released by Google https://www.phoronix.com/scan.php?page=news_item&px=GAPID-1.0-Released. In the following blog you can get a short feature overview https://android-developers.googleblog.com/2017/12/diagnose-and-understand-your-apps-gpu_13.html.
- RenderDoc (license MIT, https://github.com/baldurk/renderdoc) is another cross platform debugger with Vulkan support.
- Radeon GPU Analyzer 2.1 added Vulkan support in the GUI.
Tools & Libraries
- OpenCV (license BSD, https://github.com/opencv/opencv) is a machine learning library that supports Vulkan as a compute backend (instead of OpenCL) since release 4.0.
- VKVG (license MIT, https://github.com/jpbruyere/vkvg) is a multiplatform 2D library to draw Vector graphics via Vulkan. It shares similarities with Cairo and the OpenGL acceleration, that is used by Firefox and Gtk.
- SPIRV-LLVM-Translator (license LLVM, https://github.com/KhronosGroup/SPIRV-LLVM-Translator) created Khronos to translate SPIR-V to LLVM IR and the other way around.
- Volk (license MIT, https://github.com/zeux/volk) is a meta loader for Vulkan that avoid to use the generic Vulkan loader library supporting multiple Vulkan-ICD drivers.
- vRt (license LGPLv3, https://github.com/world8th/vRt) is a cross platform ray tracing library based on Vulkan with support for AMD Vega.
- Primu-vk (license , https://github.com/felixdoerre/primus_vk) is a Vulkan layer that allows GPU offloading. With this, you can forward the output of an external GPU to the internal one, similar to Primus for OpenGL but implemented only as a Vulkan layer.
- Kwin is the Wayland (and X11) window manager of KDE and some initial work has been done to add a Vulkan back-end, read KDE.
- ChamferWM (license BSD, https://github.com/jaelpark/chamferwm) is a tiling window manager with a Vulkan back-end, but it only supports X11 and not Wayland.
- Vulkan CTS (license Apache 2.0, https://github.com/KhronosGroup/VK-GL-CTS) is the GPU driver conformity test suite of Khronos.
- Basemark (license proprietary, https://www.basemark.com/products/basemark-gpu) is a nice graphical benchmark with Vulkan 1.0 support on Linux. It is not yet easy to install as of a libcurl3 dependency.