Raytracing not working on RTX3090 and Ubuntu

I just built a new gaming system; GPU is a Rog Strix RTX3090. CPU is Ryzen 7900x3d. OS is Ubuntu 23.10
Most games work well, but two games I know for sure use raytracing, crash consistently.
The games are “Metro Exodus Enhanced Edition”, and “Boundary: Benchmark”. The latter is actually not a game, but a free raytracing demo/benchmark on Steam.

Using the official PPA’s drivers up to 545, Metro Exodus just shows a black screen after the credits.
Using the latest available drivers on the PPA (550.54), Metro Exodus shows the game menu, I can start the game, but at the end of the intro scene it just freezes.

Boundary just freezes with any driver version.

I tried downloading the latest drivers (550.67) for a manual install. I followed the following steps:

  • Downloaded the driver file and installed the prerequisites;
  • Exited graphical environment with telinit 3;
  • uninstalled all current system-managed nvidia drivers using apt;
  • ran the installer file with bash.

On reboot the system started, but nvidia-settings shows no information, and I can’t get graphical apps to run (Steam won’t start at all) so I suspect some broken installation.

Is this a known issue, with the 3090 and raytracing? 550.54 does work a bit better than the previous, so I suppose there’s work going on. Is there a PPA with the newest drivers?

(I might add that with my older computer, Boundary actually runs but at extremely low frame rates, so I suppose it’s a software renderer, so I guess it’t not relevant)…

Cristian

If you’re using a newer version of proton that should already have dx12 support built in with libvkd3d, which you need for raytracing.

check what version of proton you are using, and check protondb to see what people are reporting with the programs you are troubleshooting

Thank you. The problem on protondb is that, “Metro Exodus Enhanced” does not have its own page. There are many reports of the game working, but I don’t know if it’s the enhanced version or the standard, non-raytrace one. The standard one works fine here too.
“Boundary Benchmark” doesn’t have a page at all.

I’ve actually tried several versions of Proton and also ProtonGE.
On Metro Exodus Enhanced, with the officially supported drivers on Ubuntu 23.10 (drivers v. 535.161.07)Proton

  • Proton Experimental gives a black screen, right after the credits. No menu at all.
  • GE-Proton9-2: As above
  • Proton 8.0-5 Crash during the credits
    All of this, with the following launch options:
    VKD3D_CONFIG=dxr11 VKD3D_FEATURE_LEVEL=12_2 PROTON_ENABLE_NVAPI=1

If I install the latest drivers from the PPA, Exodus gets to the game menu, lets me start a game, and then crashes during the intro video.
But I had to revert to the 535 drivers, because 550 breaks other games, like for example “Assetto Corsa”.

I add to this post, because I tried some non-steam, non-proton raytracing app to rule out proton issues.
So I installed the “GPUScore Relic of Life” benchmarking app, which comes native for linux.
Upon running, on the terminal I get
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
The software’s GUI opens, but it shows the following error:
“Querying graphics device information failed! Please try to update your graphics driver.”

The drivers I have are 535.161.07. The command “sudo lshw -C display” reports:
*-display
description: VGA compatible controller
product: GA102 [GeForce RTX 3090]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
configuration: driver=nvidia latency=0
resources: iomemory:fc0-fbf iomemory:fc0-fbf irq:126 memory:f5000000-f5ffffff memory:fce0000000-fcefffffff memory:fcf0000000-fcf1ffffff ioport:f000(size=128) memory:f6000000-f607ffff
*-graphics
product: EFI VGA
physical id: 1
logical name: /dev/fb0
capabilities: fb
configuration: depth=32 resolution=2560,1440

So the GPU is detected correctly. And all non-raytracing games work perfectly with very good performance.

EDIT: Following some tips found online, I installed the nVidia VAAPI driver:
sudo add-apt-repository ppa:ubuntuhandbook1/nvidia-vaapi
sudo apt update
sudo apt install nvidia-vaapi-driver
sudo apt install vainfo
export NVD_BACKEND=direct
export LIBVA_DRIVER_NAME=nvidia

Now running vainfo gives
libva info: VA-API version 1.19.0
libva info: User environment variable requested driver ‘nvidia’
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.19 (libva 2.12.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264High : VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain12 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointVLD

If I try to run the gpuscore benchmark again, the terminal error about libva is gone; but I still get the same error in the GUI, and the benchmark won’t run.