You are not logged in.

#1 2013-08-17 23:29:23

jordanjdavis
Member
Registered: 2012-11-05
Posts: 4

Dual Screen with multiple graphics cards?

Hi,

I have tried to utilise two screens, both to a seperate grahpics card but it does not seem to be working! Setting them as two different devices with BUS id's does not work and xrandr does not seem to be working either - it comes up that one of the screens is disconnected.

Here is my 60-radeon.conf:

   Section "Device"
       Identifier     "Advanced Micro Devices, Inc. [AMD/ATI] RS780L [Radeon 3000]"
       Driver        "radeon"
       BusID        "PCI:1:05:0"
EndSection

   Section "Device"
       Identifier    "Advanced Micro Devices, Inc. [AMD/ATI] Juniper XT [Radeon HD 6770]"
       Driver        "radeon"
       BusID        "PCI:2:00:0"
EndSection


And here is my xrandr command:

xrandr --output VGA-0 --auto --output DVI-0 --auto --right-of VGA-0

Any help would be greatly appreciated!

Offline

#2 2013-08-17 23:37:54

haagch
Member
Registered: 2013-08-17
Posts: 209

Re: Dual Screen with multiple graphics cards?

Since you're using the open source driver anyway, you might as well try prime provideroutput stuff.

First, remove the xorg.conf config or wherever you have that. (It probably works with that config present too. I don't really know.)
Then, make sure you have 3d acceleration on one gpu with glamor etc. all working. I think you need to use a compositing manager for this to work.
Then, try whether xrandr --listproviders shows to gpus.

Then with xrandr:

--setprovideroutputsource provider source
              Set source as the source of display output images for provider.

For provider and source you can just use 0 for the first and 1 for the second gpu xrandr --listproviders returned. I don't think the manpage is very easily understandable but you can just try both possibilities.

Offline

#3 2013-08-19 20:17:36

jordanjdavis
Member
Registered: 2012-11-05
Posts: 4

Re: Dual Screen with multiple graphics cards?

haagch wrote:

Since you're using the open source driver anyway, you might as well try prime provideroutput stuff.

First, remove the xorg.conf config or wherever you have that. (It probably works with that config present too. I don't really know.)
Then, make sure you have 3d acceleration on one gpu with glamor etc. all working. I think you need to use a compositing manager for this to work.
Then, try whether xrandr --listproviders shows to gpus.

Then with xrandr:

--setprovideroutputsource provider source
              Set source as the source of display output images for provider.

For provider and source you can just use 0 for the first and 1 for the second gpu xrandr --listproviders returned. I don't think the manpage is very easily understandable but you can just try both possibilities.


Hi,

Thank you for the reply!

This is the prompt I receive from --listproviders:

Providers: number : 2
Provider 0: id: 0x9f cap: 0xd, Source Output, Source Offload, Sink Offload crtcs: 2 outputs: 2 associated providers: 0 name:radeon
Provider 1: id: 0x58 cap: 0xd, Source Output, Source Offload, Sink Offload crtcs: 6 outputs: 3 associated providers: 0 name:radeon

and using --setprovideroutputsource 0 1 returns:

X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  35 ()
  Value in failed request:  0x9f
  Serial number of failed request:  16
  Current serial number in output stream:  17

I'm pretty clueless - any ideas?

Offline

#4 2013-08-19 21:34:15

haagch
Member
Registered: 2013-08-17
Posts: 209

Re: Dual Screen with multiple graphics cards?

Also from the man page:

This is only possible if source and provider have the Source Output and Sink Output capabilities, respectively.

At least one of the gpus should have "Sink Output" or so. From here I have no idea. I'm not using radeon right now, but maybe your software is not recent enough.
I really don't know. But you could try installing xf86-video-ati-git from aur https://aur.archlinux.org/packages/xf86-video-ati-git/ for possibly getting http://www.phoronix.com/scan.php?page=n … px=MTQyNDA

Maybe someone else knows what's the problem...

Offline

#5 2013-08-20 20:33:37

nomorewindows
Member
Registered: 2010-04-03
Posts: 3,362

Re: Dual Screen with multiple graphics cards?

jordanjdavis wrote:

And here is my xrandr command:

xrandr --output VGA-0 --auto --output DVI-0 --auto --right-of VGA-0

Any help would be greatly appreciated!

This would be okay if you had both connectors on the same card.


I may have to CONSOLE you about your usage of ridiculously easy graphical interfaces...
Look ma, no mouse.

Offline

#6 2013-09-13 12:16:08

ElKatrina
Member
Registered: 2011-10-28
Posts: 32

Re: Dual Screen with multiple graphics cards?

I am interested in this as well. Here is my experience, it is slightly different, but I haven't got the second card working:

Two graphics cards (I want to use 3 eventually)---AMD HD6670 using the open source drivers. And 3 different monitors (want to use 5 eventually).

I have two monitors running on the top card just fine. Initially when I run xrandr, I get the following output:

Screen 0: minimum 320 x 200, current 3200 x 1200, maximum 16384 x 16384
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 1920x1200+1280+0 (normal left inverted right x axis y axis) 519mm x 324mm
   1920x1200      60.0*+
   ... more modes...
DVI-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   75.0
   ... more modes ...

And the output of xrandr --listproviders is:

Providers: number : 2
Provider 0: id: 0xa2 cap: 0xf, Source Output, Sink Output, Source Offload,
  Sink Offload crtcs: 6 outputs: 3 associated providers: 0 name:radeon
Provider 1: id: 0x58 cap: 0xf, Source Output, Sink Output, Source Offload,
  Sink Offload crtcs: 6 outputs: 3 associated providers: 0 name:radeon

So it sees both my cards. So then, I run xrandr --setprovideroutputsource 1 0. If I subsequently run xrandr again, I get the following output:

DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 1920x1200+1280+0 (normal left inverted right x axis y axis) 519mm x 324mm
   1920x1200      60.0*+
    ... other modes ...
DVI-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   75.0  
    ... other modes ...
DisplayPort-1-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-1 connected (normal left inverted right x axis y axis)
   1280x1024      60.0 +   75.0  
    ... other modes ...
DVI-1-1 disconnected

TL;DR, it can see the HDMI and DVI monitor connected to my top card, and the HDMI monitor connected to the bottom card.

So far so good. If I then do xrandr --output HDMI-1-1 --auto or xrandr --output HDMI-1-1 --right-of HDMI-0 or anything at all that changes HDMI-1-1 (the monitor plugged into my second card), the X server crashes. I can't find any interesting error reports at all in Xorg.0.log or errors.log or everything.log. The server goes down instantly and I am left at a login shell.

I am willing to experiment, does anybody have any ideas?

Offline

#7 2013-09-14 09:35:23

haagch
Member
Registered: 2013-08-17
Posts: 209

Re: Dual Screen with multiple graphics cards?

ElKatrina wrote:

the X server crashes

It's my understanding that this should never happen, and always deserves a bug report upstream at xf86-video-ati or the X.org server.

What you can first try is installing xf86-video-ati-git from AUR to see whether it's already fixed and just not in a stable release yet.

The next step would just be collecting a stack trace and posting it on https://bugs.freedesktop.org/enter_bug.cgi?product=xorg in Driver/Radeon or so (only after looking whether ther is already a similar bug of course) depending on how the stacktrace looks.

You really want a second computer and do this with ssh because a paused X server that controls the keyboard/mouse and the tty is not something you want to deal with...

So you have an ssh server running and start X normally on your computer, then at the second computer you connect with ssh and attach gdb to the xserver with "sudo gdb /usr/bin/X $(pgrep -f /usr/bin/X)" or so. That will first pause the X Server and you have to "continue" with writing "c[enter]" or so. Then you do whatever you do to make it crash and when it is crashing, gdb will pause it again. Then you can get a backtrace with "bt[enter]". That will give you a list of function calls from which libraries lead up to the crash and possibly some extra information about parameters or so. Then quit with ctrl+d or "quit" or so.

If you get stuck on a black screen on the PC with the crashing X server, try "startx" over ssh and then killing it with ctrl+c again. Starting and killing X "properly" helped at least for me when that happened.

You can get a lot more information when you recompile some thing with debug symbols. For example if you have yaourt you can use yaourt -G xf86-video-ati-git to create a directory xf86-video-ati-git and download the PKGBUILD into it.
In the PKGBUILD you can add !strip to options so it looks like "options=('!libtool' '!strip')" and in the build() function anywhere before autoreconf/make add export CFLAGS="-O0 -ggdb" (and if there is c++ code, export CXXFLAGS="-O0 -ggdb", but for xf86-video-ati and the x server there isn't I think) and then simply reinstall with "makepkg -fi"
Now if you replicate the crash with packages with such debug information you can do "bt full" in gdb. Without these debug information you will just get a lot of "No symbol table info available." but with it you can get many variable values and function parameters that can help the developers greatly (possibly).

Offline

#8 2013-09-15 13:16:50

ElKatrina
Member
Registered: 2011-10-28
Posts: 32

Re: Dual Screen with multiple graphics cards?

Thanks for all of this information, I wil try these steps when I get some time.

haagch wrote:

You really want a second computer and do this with ssh because a paused X server that controls the keyboard/mouse and the tty is not something you want to deal with...

Don't I know it, there has been several occasions where I have had to switch the PC off from the wall. I tried experimenting by starting a second X session (using xinit -- :1). But of course if I lose keyboard control, then there is no way to <Ctrl>-<Alt>-<F1> back to my original session... Cheers.

Offline

#9 2013-09-15 15:14:59

haagch
Member
Registered: 2013-08-17
Posts: 209

Re: Dual Screen with multiple graphics cards?

There are the "magic sysrq" keys that you can enable: https://wiki.archlinux.org/index.php/Ke … uts#Kernel
Then alt+print+r will in theory get your keyboard back from the X server but when a debugger is attached to X in my experience it did not work reliably.

Offline

#10 2013-09-15 18:04:07

nomorewindows
Member
Registered: 2010-04-03
Posts: 3,362

Re: Dual Screen with multiple graphics cards?

My setup has an onboard Intel and an add-in ATI with two outputs.  Works fine in Windows but doesn't want to work at all with Linux.  I can define both cards and have them recognized in Xorg.0.log, but it just doesn't cooperate.  Switching to console with both cards defined causes X server to restart before allowing switch to console.  Works ok if I only use the default (no xorg.conf), with the onboard Intel.  Can only list one or the other as a provider.  Xvinfo shows both cards present however.  Xinerama doesn't do anything useful.

Last edited by nomorewindows (2013-09-15 18:07:02)


I may have to CONSOLE you about your usage of ridiculously easy graphical interfaces...
Look ma, no mouse.

Offline

#11 2013-09-19 14:00:30

nomorewindows
Member
Registered: 2010-04-03
Posts: 3,362

Re: Dual Screen with multiple graphics cards?

haagch wrote:

So you have an ssh server running and start X normally on your computer, then at the second computer you connect with ssh and attach gdb to the xserver with "sudo gdb /usr/bin/X $(pgrep -f /usr/bin/X)" or so. That will first pause the X Server and you have to "continue" with writing "c[enter]" or so. Then you do whatever you do to make it crash and when it is crashing, gdb will pause it again. Then you can get a backtrace with "bt[enter]". That will give you a list of function calls from which libraries lead up to the crash and possibly some extra information about parameters or so. Then quit with ctrl+d or "quit" or so.

You can get a lot more information when you recompile some thing with debug symbols. For example if you have yaourt you can use yaourt -G xf86-video-ati-git to create a directory xf86-video-ati-git and download the PKGBUILD into it.
In the PKGBUILD you can add !strip to options so it looks like "options=('!libtool' '!strip')" and in the build() function anywhere before autoreconf/make add export CFLAGS="-O0 -ggdb" (and if there is c++ code, export CXXFLAGS="-O0 -ggdb", but for xf86-video-ati and the x server there isn't I think) and then simply reinstall with "makepkg -fi"
Now if you replicate the crash with packages with such debug information you can do "bt full" in gdb. Without these debug information you will just get a lot of "No symbol table info available." but with it you can get many variable values and function parameters that can help the developers greatly (possibly).

I may have to try this to see if it tells me anything about why ati refuses to work with an onboard intel.


I may have to CONSOLE you about your usage of ridiculously easy graphical interfaces...
Look ma, no mouse.

Offline

Board footer

Powered by FluxBB