Skip to content

Releases: libcg/grvk

GRVK 0.5.0

06 Dec 01:22
Compare
Choose a tag to compare

After more than 17 months of work, I'm happy to release GRVK 0.5.0. GRVK is an AMD Mantle API re-implementation over Vulkan (not to be confused with Apple's Metal API).

The main highlight of this release is that Battlefield 4 is up and running! Huge thanks to @Cherser-s for helping me take this to the finish line. For other games, see Game Support.
Screenshot from 2021-12-05 16-50-22

Current limitations:

  • GPU-bound perf is about 75% of DXVK, while CPU-bound perf can be slightly faster than DXVK. There is plenty of optimization work left to do.
  • Exclusive fullscreen mode and tessellation shaders are not yet supported. See instructions below.
  • A very recent version of the RADV driver (AMD on Linux) is required for VK_KHR_dynamic_rendering. Latest Adrenalin drivers work with minor glitches. Nvidia and Intel are not yet supported (see Driver Support for more information).
  • GRVK is still experimental, game breaking bugs are not out of the question.

How to setup:

  • On Linux, make sure BF4 is running on wine 6.21/Proton 6.21-GE or newer. mesa-git e914a671 (12/05/2021) or newer is required.
  • On Windows, make sure Adrenalin 21.11.3 or newer is installed.
  • Download GRVK 0.5.0 and extract mantle64.dll/mantleaxl64.dll to the BF4 game folder (next to bf4.exe).
  • Start the game and navigate to the Video options.
  • Set Graphics API to Mantle, Fullscreen Mode to Borderless and Terrain Quality to Medium or lower. The game will crash if these settings are not set correctly.
  • Restart the game, GRVK should be up and running. A log file will be created in the game folder (grvk.log).

Enjoy,

  • libcg

GRVK 0.4.0

21 Apr 03:03
Compare
Choose a tag to compare

This is the fourth release of GRVK, an AMD Mantle API re-implementation over Vulkan (not to be confused with Apple's Metal API).

After 10 months of work, I'm happy to report that the Star Swarm demo, an original Mantle showcase, is now up and running:

Screenshot from 2021-04-20 19-48-26

However there are some gotchas:

  • Performance is very low (10fps at best on my hardware), due to some known GRVK issues and a few game bugs. No profiling has been done yet, and it is NOT representative of what to expect down the line.
  • It has only been tested on Linux with RADV and AMDVLK drivers. Other hardware or drivers are NOT known to work at this time, due to some unsupported image formats that the game is using.
  • The project is still in early stages with known bugs, use at your own risk.

With that said, you might be wondering how to try it for yourself?

  • Download "Star Swarm Stress Test" on Steam (it's free!)
  • Extract the archive attached below in the game folder (only mantle64.dll is needed)
  • On Linux, you will need extra fonts for the game to run. Get them here and extract them in windows/Fonts in your Wine prefix.
  • Launch the game, the "Start Mantle" button should be active. Click it!
  • A log file (grvk.log) will be created in the game directory.

GRVK 0.4.0 changelog:

  • Lots of Mantle improvements that allow Star Swarm to run
  • Added stub mantleaxl extension library
  • Some additional AMDIL compiler fixes

This release was tested with the following drivers:

  • RADV 21.0 on Linux (AMD)
  • AMDVLK 2021.Q2.1 on Linux (AMD)
  • ANV on Linux (Intel) is crashing due to a format incompatibility
  • Nvidia is currently crashing early (see #8)

Have fun,

  • libcg

GRVK 0.3.0

14 Mar 01:59
Compare
Choose a tag to compare

This is the third release of GRVK, a Mantle to Vulkan translation layer (not to be confused with Apple's Metal API).

The previous release focused on bringing up the shader compiler using modified Shadertoy demos. GRVK 0.3.0 goes further and is able to compile all 118 shaders of the Star Swarm tech demo. Unfortunately, GRVK doesn't yet implement all required Mantle API features, and if you do try to run Star Swarm, you will be greeted with a black screen.

How to try:

  • Extract the release archive in the game folder, run the game, and click on "Start Mantle". A log file will be created.

GRVK 0.3.0 changelog:

  • Many AMDIL -> SPIR-V compiler improvements
  • Implemented more Mantle functions, allowing Star Swarm to boot further
  • Fixed a crash with the Intel ANV driver (#2) related to blend state, the bug was also fixed on the driver side
  • Fixed 32-bit build
  • Added trace log level to trace API calls

GRVK was tested with the following drivers:

  • RADV 20.3.4 or later on Linux (AMD)
  • ANV 20.3.4 or later on Linux (Intel)
  • Nvidia is currently crashing early with Star Swarm (see #8)

I'd like to thank @Cherser-s for his help.

  • libcg

GRVK 0.2.0

10 Sep 02:54
Compare
Choose a tag to compare

This is the second release of GRVK, a Mantle to Vulkan translation layer. After bringing up an initial triangle, I focused on the AMDIL shader compiler, to get it in shape before starting to bring up real games.

GRVK is now able to run various pixel shaders sourced from shadertoy.com, available to test in the attached archive.

Screenshot from 2020-09-09 19-59-07

While Vulkan uses SPIR-V shaders, Mantle expects AMDIL shaders as an input: GRVK needs to translate AMDIL to SPIR-V on the fly to get the games running. The problem is that AMDIL looks very much like assembly and has a limited ecosystem, which makes it hard to work with. To bring up the compiler, I needed some human-readable shaders with a known output to test against.

To do this, I sourced some shaders from shadertoy.com, rewrote them to HLSL, then compiled them to AMDIL using AMD's CodeXL compiler. I used this Shader Playground website to compare the AMDIL disassembly with GRVK's output, then implemented the missing instructions, until I got a frog 🐸 on the screen. I got several shaders up and running, that are available to test in the archive below.

GRVK 0.2.0 changelog:

  • Improved shader compiler to run non-trivial pixel shaders
  • Improved MangoHud compatibility
  • Added GRVK_DUMP_SHADERS=1 environment variable to dump IL shaders and SPIR-V output
  • Removed some hardcoded dimensions to allow arbitrary render size
  • Fixed some validation errors around dynamic state

GRVK was tested with the following drivers:

  • RADV 20.2.0 or later on Linux
  • Nvidia 450.56.06 (beta) or later on Linux
  • Adrenalin 20.8.3 or later on Windows
  • Nvidia 451.98 (beta) or later on Windows

Have fun!

  • libcg

GRVK 0.1.0

17 Aug 05:44
Compare
Choose a tag to compare

This is the first release of GRVK, a Mantle to Vulkan translation layer. It's able to render MantleHelloTriangle correctly without any modifications (provided in the release package). If everything is working as intended, you should see a shaded triangle on the screen:

Screenshot from 2020-08-17 10-08-51

GRVK is compiled to a set of Windows DLLs (mantle32.dll/mantle64.dll) that will get loaded by an app (hello.exe) wishing to use the Mantle API. GRVK will intercept the API calls and translate them to Vulkan calls at runtime. AMDIL shaders are also compiled to SPIR-V bytecode at runtime.

Very recent drivers supporting Vulkan 1.2 and VK_EXT_extended_dynamic_state are required. If you are running Linux, you will also need Wine 5.12 or newer. It was tested with the following configurations:

  • RADV/ACO 20.1.99 (git) on Linux
  • Nvidia 450.56.06 (beta) on Linux
  • Nvidia 451.98 (beta) on Windows

GRVK writes to a log file by default (grvk.log). If you run into any issues, you can create a bug report and attach it there.

I'd like to credit @doitsujin for DXVK and @Overv for MantleHelloTriangle.

Have fun!

  • libcg