You are not logged in.

#1 2024-06-22 16:39:36

SparkyTD
Member
Registered: 2024-06-22
Posts: 13

Unable to get dual-nvidia render offloading setup to work on Wayland

I am trying to configure an Arch/Wayland install for my quad-monitor dual GPU setup (I'll explain the reason in a bit). My first and default GPU is an Nvidia GTX 1060, this is the one that drives all my monitors and runs my Wayland session.

My second GPU is an RTX 3070 that is connected to my main monitor using a second HDMI cable, but it's not being used for display output.

The reason I have this somewhat convoluted setup is because I want to be able to use the 3070 for VFIO passthrough to a Wincrap11 VM (which requires a physical monitor connection on the 3070, even if I'm using looking glass), but when the VM is not running, I also want to be able to use the 3070 to run games on the host Arch system.

I've already fully configured VFIO to blacklist the 3070 at boot and bind it to the vfio driver, and I've also written some scripts that allow me to "bounce" the 3070 back and forth between the vfio and nvidia drivers whenever I want to, and all of that seems to be working correctly.

What I can't seem to figure out though is how I can use the "headless" 3070 as the rendering GPU, and achieve something like PRIME render offloading to be able to run Linux native or Proton/wine games on it.

Here are some command outputs:
$ lspci -nnkd 10de:

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1)
	Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:3283]
	Kernel driver in use: nvidia
	Kernel modules: nouveau, nvidia_drm, nvidia
01:00.1 Audio device [0403]: NVIDIA Corporation GP106 High Definition Audio Controller [10de:10f1] (rev a1)
	Subsystem: Micro-Star International Co., Ltd. [MSI] Device [1462:3283]
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel
02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3070] [10de:2484] (rev a1)
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:4069]
	Kernel driver in use: nvidia
	Kernel modules: nouveau, nvidia_drm, nvidia
02:00.1 Audio device [0403]: NVIDIA Corporation GA104 High Definition Audio Controller [10de:228b] (rev a1)
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:4069]
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

$ nvidia-smi
https://pastebin.com/raw/JgPc9nX4

$ MESA_VK_DEVICE_SELECT=10de:2484 vkcube

Selected GPU 0: NVIDIA GeForce GTX 1060 6GB, type: DiscreteGpu (Wrong GPU!)

$ MESA_VK_DEVICE_SELECT=10de:2484 vkcube --gpu_number 1

Selected GPU 1: NVIDIA GeForce RTX 3070, type: DiscreteGpu
Could not find both graphics and present queues

$ vkcube-wayland --gpu_number 1

Selected GPU 1: NVIDIA GeForce RTX 3070, type: DiscreteGpu
Can't find our preferred formats... Falling back to first exposed format. Rendering may be incorrect.
Segmentation fault (core dumped)

$ prime-run vkcube

Selected GPU 0: NVIDIA GeForce GTX 1060 6GB, type: DiscreteGpu (Wrong GPU!)

$ vulkaninfo --summary

WARNING: [Loader Message] Code 0 : loader_add_layer_properties: 'layers' tag not supported until file version 1.0.1, but /usr/share/vulkan/implicit_layer.d/nvidia_layers.json is reporting version 1
ERROR while creating surface for extension VK_KHR_wayland_surface : /usr/src/debug/vulkan-tools/Vulkan-Tools-1.3.269/vulkaninfo/./vulkaninfo.h:237:vkGetPhysicalDeviceSurfaceFormats2KHR failed with ERROR_SURFACE_LOST_KHR
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.279


Instance Extensions: count = 23
-------------------------------
VK_EXT_acquire_drm_display             : extension revision 1
VK_EXT_acquire_xlib_display            : extension revision 1
VK_EXT_debug_report                    : extension revision 10
VK_EXT_debug_utils                     : extension revision 2
VK_EXT_direct_mode_display             : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_EXT_surface_maintenance1            : extension revision 1
VK_EXT_swapchain_colorspace            : extension revision 4
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_portability_enumeration         : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6
VK_LUNARG_direct_driver_loading        : extension revision 1

Instance Layers: count = 3
--------------------------
VK_LAYER_AEJS_DeviceChooserLayer Device chooser layer     1.3.0    version 1
VK_LAYER_KHRONOS_validation      Khronos Validation Layer 1.3.275  version 1
VK_LAYER_NV_optimus              NVIDIA Optimus layer     1.3.278  version 1

Devices:
========
GPU0:
	apiVersion         = 1.3.278
	driverVersion      = 555.52.4.0
	vendorID           = 0x10de
	deviceID           = 0x1c03
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA GeForce GTX 1060 6GB
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 555.52.04
	conformanceVersion = 1.3.8.0
	deviceUUID         = 077201c2-1d6a-086c-b54f-7e8d0fabb0af
	driverUUID         = eb1bbb64-0d41-5833-82d7-89b85a76f4fc
GPU1:
	apiVersion         = 1.3.278
	driverVersion      = 555.52.4.0
	vendorID           = 0x10de
	deviceID           = 0x2484
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = NVIDIA GeForce RTX 3070
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 555.52.04
	conformanceVersion = 1.3.8.0
	deviceUUID         = 735f60b7-7c55-4f42-7b3c-bcda8a460943
	driverUUID         = eb1bbb64-0d41-5833-82d7-89b85a76f4fc

Is it even possible to do NVIDIA-to-NVIDIA render offloading on Wayland, or am I wasting my time?

Offline

#2 2024-06-24 15:37:48

seth
Member
Registered: 2012-09-03
Posts: 59,410

Re: Unable to get dual-nvidia render offloading setup to work on Wayland

Did you try to DRI_PRIME=pci-0000_02_00_0?
https://wiki.archlinux.org/title/PRIME# … figuration

Offline

#3 2024-06-25 00:27:52

SparkyTD
Member
Registered: 2024-06-22
Posts: 13

Re: Unable to get dual-nvidia render offloading setup to work on Wayland

seth wrote:

Did you try to DRI_PRIME=pci-0000_02_00_0?
https://wiki.archlinux.org/title/PRIME# … figuration

I did try that too just now, it doesn't make a difference. For now I have given up on my original goal of using the 3070 as the secondary, and I'll just use the 1060 as the VM's GPU.

Offline

Board footer

Powered by FluxBB