I recently got a Matrox M9120 to hook up an old CRT as a second monitor, my main card being a GTX1060 3GB. Managed to configure it as I wanted with Xinerama, using the generic VESA driver for the Matrox card as the official driver won’t build on recent X.org.
The problem is, even though glxinfo says direct rendering is on with NVidia as the vendor, and the Xorg log specifies OpenGL will be disabled only on display 2(the CRT), apps which require direct rendering will fail to start, Including MPV’s GPU renderer, Wine with dxvk, and at least one native linux game which I’ve tested(StuntRally); with: Minor opcode of failed request: 6 (X_GLXIsDirect).
I speculate it might be because the Matrox is the first physical card in the order of PCIE slots, even though NVidia is driving Screen 0. Sadly, moving the Matrox card further down resulted running into an X server bug where the driver cannot fetch the V_BIOS from the card, refusing to output at all.
These are the Warnings from my Xorg log(no errors):
[ 5.857] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[ 5.857] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[ 5.857] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[ 5.858] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[ 5.858] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[ 5.890] (WW) xf86OpenConsole: setpgid failed: Operation not permitted
[ 5.890] (WW) xf86OpenConsole: setsid failed: Operation not permitted
[ 5.903] (WW) NVIDIA: The Composite and Xinerama extensions are both enabled, which
[ 5.903] (WW) NVIDIA: is an unsupported configuration. The driver will continue
[ 5.903] (WW) NVIDIA: to load, but may behave strangely.
[ 5.903] (WW) NVIDIA: Xinerama is enabled, so RandR has likely been disabled by the
[ 5.903] (WW) NVIDIA: X server.
[ 6.125] (WW) VESA(2): No valid modes left. Trying less strict filter...
[ 6.182] (WW) NVIDIA(0): Not registering RandR
[ 6.350] (WW) NVIDIA(1): Not registering RandR
[ 6.991] (WW) NVIDIA: Xinerama and GLX are enabled, but some X screens are not being
[ 6.991] (WW) NVIDIA: driven by the NVIDIA X driver. OpenGL rendering will be
[ 6.991] (WW) NVIDIA: disabled on these screens:
[ 6.991] (WW) NVIDIA: - Screen 2: VESA
I tried disabling COMPOSITE extension (don’t really need it , I use i3-wm) which resulted in X segfaulting while initializing.
And grepping for “glx”:
[ 5.869] (II) LoadModule: "glx"
[ 5.870] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[ 5.880] (II) Module glx: vendor="X.Org Foundation"
[ 5.948] (II) Loading sub module "glxserver_nvidia"
[ 5.948] (II) LoadModule: "glxserver_nvidia"
[ 5.948] (II) Loading /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
[ 6.037] (II) Module glxserver_nvidia: vendor="NVIDIA Corporation"
And grepping for “screen”:
[ 6.095] (II) NVIDIA(0): Virtual screen size determined to be 1280 x 1024
[ 6.101] (II) NVIDIA(1): Virtual screen size determined to be 1920 x 1080
[ 6.761] (II) GLX: Another vendor is already registered for screen 0
[ 6.761] (II) GLX: Another vendor is already registered for screen 1
[ 6.959] (II) GLX: Initialized DRISWRAST GL provider for screen 2`
My xorg.conf:
Section "ServerLayout"
Identifier "server"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
Screen 2 "Trinitron" LeftOf "Screen0"
EndSection
Section "ServerFlags"
Option "Xinerama" "1"
EndSection
Section "Monitor"
Identifier "Monitor2"
VendorName "Sun"
ModelName "GDM-5510"
HorizSync 30.0 - 130.0
VertRefresh 60.0 - 160.0
Option "DPMS"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "LG Electronics L1752T"
HorizSync 30.0 - 71.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor1"
VendorName "Unknown"
ModelName "SAMSUNG"
HorizSync 15.0 - 68.0
VertRefresh 24.0 - 60.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 1060 3GB"
BusID "PCI:6@0:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 1060 3GB"
BusID "PCI:6@0:0:0"
Screen 1
EndSection
Section "Device"
# Screen 2
Identifier "Device2"
Driver "vesa"
VendorName "Matrox Electronics Systems Ltd."
BoardName "M91XX (rev 01)"
BusID "PCI:1@0:0:0"
# Screen 2
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "SLI" "Off"
# Option "MultiGPU" "On"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-3"
Option "metamodes" "HDMI-0: 1920x1080_24 +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
Option "SLI" "Off"
# Option "MultiGPU" "On"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
# Modes "1920x1080_24"
EndSubSection
EndSection
Section "Screen"
Identifier "Trinitron"
Device "Device2"
Monitor "Monitor2"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x768"
EndSubSection
EndSection
I am at my wit’s end. Using noveau is not an option since I need CUDA. Will have to desist on having a VGA output at all and keep working only on my crappy 17" LCD. I looked up possible environment variables one could pass to programs to force rendering to a specific card, to no avail. If someone here knew of a way to force such, I would be eternally grateful.