xserver/hw/xfree86
Jacob Cherry a5367face1 xfree86: Fix autoconfig secondary GPU devices
The code path added by commit 69e4b8e6 (xfree86: attempt to autoconfig
gpu slave devices (v3)) assumes that it will only be run if the primary
device on the screen is the first device in xf86configptr->conf_device_lst.
While this is true most of the time, there are two specific cases where
this assumption fails.

First, if the first device in conf_device_lst is assigned to a different
seat than the running X server, it will be skipped by the previous
FIND_SUITABLE macro usage. Second, if the primary device was explicitly
assigned to the screen but auto_gpu_device is still set and no secondary
devices were explicitly listed, that device may not be the first device
in conf_device_lst.

When the first device in conf_device_lst is not the primary device
assigned to the screen, two problems emerge. First, the first device in
conf_device_lst will never be assigned to the screen as a secondary
device. Second, the primary device is additionally assigned to the
screen as a secondary device. The combination of these problems causes
certain otherwise valid configurations to be invalid. For example, if a
primary device is assigned to a screen and a secondary device is listed
in the config but not explicitly assigned to the screen, then one order
of the device sections results in a usable PRIME or Reverse PRIME setup
and the other order does not.

This commit removes the assumption that the primary device is the first
device in conf_device_lst by starting the loop from the start of
conf_device_lst and skipping the primary device when it is encountered.

Signed-off-by: Jacob Cherry <jcherry@nvidia.com>
2021-03-03 17:50:31 +00:00
..
common xfree86: Fix autoconfig secondary GPU devices 2021-03-03 17:50:31 +00:00
ddc Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
dixmods mi: List extensions in usage message 2021-01-29 12:52:09 +00:00
doc Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
dri Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
dri2 xserver/output: rename some badly named variables/APIs. 2020-07-10 06:17:44 +10:00
drivers xfree86/inputtest: Drop extraneous linux-specific include 2021-01-06 01:48:02 +00:00
exa meson: Install man pages 2018-03-27 10:28:33 -04:00
fbdevhw Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
glamor_egl glamor: Make Xv extension initialize at depth 30. 2018-02-27 10:18:06 -05:00
i2c Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
int10 int10: wrap entire V_ADDR_R* macros in parens for safer expansion 2020-11-17 18:43:39 -08:00
loader loader: strdup const string assigned to local variable name 2020-01-28 20:35:06 +00:00
man Update URL's in man pages 2020-05-10 17:46:33 -07:00
modes randr: Re-add removed NULL checks to xf86RandR12.c 2020-07-21 15:53:53 +00:00
os-support compiler.h: don't define inb/outb and friends on mips 2021-01-27 19:29:35 +00:00
parser Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
ramdac xfree86: Take second reference for SavedCursor in xf86CursorSetCursor 2020-08-31 12:10:43 +02:00
shadowfb meson: Fix linkage of loadable modules for PE/COFF 2017-10-12 15:22:04 -04:00
utils Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
vgahw Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
x86emu Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
xkb XKB: Add debug key actions for grabs & window tree 2020-07-31 05:25:50 +00:00
.gitignore Xorg: Add Xorg.wrap to hw/xfree86/.gitignore 2014-04-18 11:39:16 +02:00
Makefile.am xfree86: Merge vbe into int10 2019-10-02 10:03:26 -04:00
Xorg.sh.in xfree86: rename Xorg.bin to Xorg 2015-01-05 09:53:58 +10:00
meson.build mi: List extensions in usage message 2021-01-29 12:52:09 +00:00
sdksyms.sh Consolidate fourcc.h 2020-09-15 11:43:16 +02:00
xorg-wrapper.c Fix various spelling errors 2019-10-01 17:05:28 +00:00
xorgconf.cpp Fix spelling/wording issues 2020-07-05 13:07:33 -07:00