Doom 2016 Vulkan renderer is broken since 440 drivers ( Optimus )

I was able to play this game with Vulkan renderer at 440 series drivers just fine. But with 450.66 driver and newer releases (i’m on 455.45.01 now and problem still exists) it has visual corruptions all over the place. Game doesn’t have any of those mentioned/shown issues with OpenGL renderer and id Software’s embedded performance metrics shows with OpenGL renderer driver reports VRAM as 4096 mb like it should be , but with Vulkan renderer it reports 4342 mb’s of VRAM.

I’m running the game via SteamPlay/Proton 5.0 on an Optimus laptop with these variables:

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only steam

Nvidia bug report and screenshot that shows the issue at main menu are attached. Also video footages that shows the issue are also attached.

nvidia-bug-report.log.gz (884.1 KB)

So at further investigation , i captured some faulty frames with Renderdoc. I will attach them here.

“directional occlusion” pass setting from the advanced settings menu of the game is the culprit. When it is on ( set to low , medium or high ) and any of the anti aliasing modes that involves usage of compute shaders ( like TAA , TSSA) are set , nearly everything is black , menu also flickers.

When “directional occlusion” pass is set to on but AA modes that doesn’t involve compute shader usage like FXAA , SMAA everything looks ok.

Example image from rdc capture:

Directional occlusion on - TSSA 8X on:

Directional occlusion on - FXAA on:

I tried recreating issue on below configuration setup but no luck so far.

Acer Predator PH315-53 + Ubuntu 20.04 LTS + Geforce GTX 1650 + Driver 450.66

I launched steam using below command –
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only steam

And then changed Graphics API to Vulkan in Doom Advanced setting section but there were no corruption observed while playing game.

Could you please confirm if there were any other settings done at your end ?

Hi @amrits

My settings are simply like this:

This one says custom but it is just high preset+ Anisotropic is set to 8X. On high settings preset , it is set to 4x by default.Setting it to 8X makes it “custom”

Enabling/disabling usage of compute shaders ( it has an option for it at advanced options menu ) sometimes affects flickering issue that happens in main menu but that flickering is not always reproducible unlike the main issue i reported.

1-) My setup:

I didn’t mess,configure any Xorg.conf. Retrieved these from usr/share/x11

xorg.conf.d.tar.gz (2.2 KB)

2-) My output of xrandr --listproviders:

Providers: number : 2

Provider 0: id: 0x44 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 2 associated providers: 0 name:modesetting
Provider 1: id: 0x229 cap: 0x0 crtcs: 0 outputs: 0 associated providers: 0 name:NVIDIA-G0

3-) I have options nvidia-drm modeset=1 set in /etc/modprobe.d/zz-nvidia-modeset.conf

4-) My inxi -SMGxx output:

Graphics:

Device-1: Intel HD Graphics 630 vendor: ASUSTeK driver: i915 v: kernel
bus ID: 00:02.0 chip ID: 8086:591b
Device-2: NVIDIA GP107M [GeForce GTX 1050 Mobile] vendor: ASUSTeK
driver: nvidia v: 455.45.01 bus ID: 01:00.0 chip ID: 10de:1c8d
Display: x11 server: X.Org 1.20.8 driver: modesetting,nvidia
unloaded: fbdev,nouveau,vesa tty: N/A
OpenGL: renderer: Mesa Intel HD Graphics 630 (KBL GT2)
v: 4.6 Mesa 20.3.0 - kisak-mesa PPA direct render: Yes

As a last note , ( not sure if it makes any difference or sense ) but a screenshot from NV x-server settings. I wonder why it says X Screens:Screen 256 and Display Devices:None