felixdoerre / primus_vk

Vulkan GPU-offloading layer
BSD 2-Clause "Simplified" License
229 stars 17 forks source link

PRIMUS_VK_MULTITHREADING=1 real world effect #10

Closed dontdieych closed 5 years ago

dontdieych commented 6 years ago
$ optirun inxi -GCSM
System:    Host: a Kernel: 4.18.12-arch1-1-ARCH x86_64 bits: 64 Desktop: KDE Plasma 5.14.0 Distro: Arch Linux 
Machine:   Type: Laptop System: Dell product: XPS 15 9560 v: N/A serial: <root required> 
           Mobo: Dell model: 0YH90J v: A04 serial: <root required> UEFI: Dell v: 1.9.4 date: 04/23/2018 
CPU:       Topology: Quad Core model: Intel Core i7-7700HQ bits: 64 type: MT MCP L2 cache: 6144 KiB 
           Speed: 899 MHz min/max: 800/3800 MHz Core speeds (MHz): 1: 901 2: 900 3: 900 4: 900 5: 900 6: 900 
           7: 900 8: 900 
Graphics:  Device-1: Intel driver: i915 v: kernel 
           Device-2: NVIDIA GP107M [GeForce GTX 1050 Mobile] driver: nvidia v: 396.54.09 
           Display: x11 server: X.Org 1.20.1 driver: modesetting unloaded: vesa resolution: 3840x2160~60Hz 
           OpenGL: renderer: GeForce GTX 1050/PCIe/SSE2 v: 4.6.0 NVIDIA 396.54.09 

$ pacman -Q dxvk-bin 
dxvk-bin 0.90-1

First of all, big thanks to this project. I've got two games working with this project. Also got huge fps boost with PRIMUS_VK_MULTITHREADING=1 when running 'Frostpunk' game.

before : 1600x900 Low quality -> around 55 fps after : 1920x1080 Low quality -> solid 59,60 fps (previously 40 - 45 fps)

Skyrim SE doesn't get much from multithreading.

Anyway, is that possible override /usr/share/vulkan/icd.d/nvidia_icd.json without direct edit it? So I would packaging this for my Arch Linux easly.

Thanks.

dontdieych commented 6 years ago

One more game got huge fps boost from PRIMUS_VK_MULTITHREADING=1.

Divinity Original Sin 2 Definitive Edition

before : 1600x900 Low quality -> about 55 fps after : 1920x1080 Ultra quality -> solid 59,60 fps

dontdieych commented 6 years ago

I'm using wine from https://github.com/Tk-Glitch/PKGBUILDS/tree/master/wine-tkg-git It's basically doing wine-staging + pba + esync.

felixdoerre commented 6 years ago

Thank you very much for testing and this detailed feedback! So I guess we could make PRIMUS_VK_MULTITHREADING=1 the default setting.

Regarding overriding an icd: The loader code that does scan the icd.d folder is here: https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/loader.c#L3509. I quickly looked at it and didn't find a way for an exising icd. However without the wrapper the original nvidia driver simply faily to load on my laptop, so it may be possible to just add another file in the icd.d folder and be happy that the original intel icd fails silently :smile:, that should work at least, even if it's not really a "clean" way to do it (and I am not really sure what the implications are for the various ways an application might be started now).

felixdoerre commented 5 years ago

PRIMUS_VK_MULTITHREADING is default, I think all is done here.