Going wide (when 16:9 is not enough)

Information about the inner-side magic

Moderator: kilo

Going wide (when 16:9 is not enough)

Postby mungewell » Fri Sep 09, 2011 4:45 am

The nice thing about open source is that you can tailor it to you needs.... and my need is for a triple monitor set up (on the cheap).

I have a standard dual output (DVI + VGA) graphics cards, a Matrox DualHead2Go (Analogue) and 3 4:3 monitors. The DualHead2Go can take double wide screens and output half each to a separate monitor. The DualHead2Go has digital equivilants (DVI and DP) which require drivers, but the analogue one is 'dumb' and only works with a few resolutions.

Since the cards is only outputting 2 screens (albeit one twice as wide as the other), everything is nicely accelerated without having to do any special tricks.

Under Linux the screens are control by the 'xrandr' command, using Ubuntu 10.10 I didn't even need to configure any special modelines. I use a little bash script to configure the layout.
Code: Select all
xrandr --output  VGA-1 --primary
xrandr --size 2560x1024 --rate 60
xrandr --output  DVI-I-1 --mode 1280x1024 --left-of VGA-1


Since SpeedDreams doesn't know about such wide screens, you have to manually edit the config files. Firstly edit '~/.speed-dreams-2/config/screen.xml' and set the width of your screen.
Code: Select all
<params name="Screen" version="1.6">
  <section name="Validated Screen Properties">
    <attnum name="window width" val="3840"/>
    <attnum name="window height" val="1024"/>
    <attnum name="bpp" val="32"/>
    <attstr name="full-screen" in="yes,no" val="yes"/>


One thing that bugged me was the fact the graphic overlay would spread across the whole screen, putting the map/etc way too far out. This can actually be controlled by editing the '~/.speed-dreams-2/config/graph.xml' file, for the appropriate driver find the 'boardwidth' parameter and set it to the percentage of the screen you want the board to cover.
Code: Select all
    <section name="0">
      <attnum name="camera" val="1"/>
      <attnum name="camera head list" val="0"/>
      <attnum name="board width" val="33"/>
      <attnum name="speedometer vertical position" val="0"/>
      <attnum name="fovy-0-1" val="75.5"/>


BTW the 'speedometer vertical position' parameter causes the Speedo/Tacho to rise a number of pixels, useful if you have a cockpit setup where the wheel obscures part of the screen.

So what does it look like? See the attached files...
Simon.
You do not have the required permissions to view the files attached to this post.
mungewell
 
Posts: 307
Joined: Fri May 20, 2011 4:05 pm
Location: Southen Alberta, Canada

Re: Going wide (when 16:9 is not enough)

Postby mungewell » Thu Sep 22, 2011 5:16 am

On the same topic, today I'm looking at 'bezel management'.... The problem is that SD does not have any appreciation of what screen you're actually viewing on or where any bezel might be placed. So you get an image like this:

before.jpg


As you can see there is a discontinuity on the screen edge, this can be quite distracting during play.

The newer versions of the 'Dual/TripleHead2Go' include Windows software to manage the positions of the displays to factor out the bezels. Being on Linux and having the older/analogue(/crappy?) version that's no good to me.

It turns out if you play with the modelines you can make a difference. It appears that DualHead2Go relies on the line frequency rather than the resolution, so you can up the resolution (say by 10%) and still have the device split the screen across two monitors providing the line frequency remains at 64KHz.

In order to add a special mode line you can do:
Code: Select all
$ xrandr --newmode "2688x1024_60" 177.345 2688 2724 2747 2772 1024 1025 1037 1066 +HSync -VSync
$ xrandr --addmode  VGA-1 "2688x1024_60"
$ xrandr --output VGA-1 --mode "2688x1024_60"


At this point my monitors auto adjust to get the (slightly wider) image on the screen.

By using an image with diagonal lines I can align the monitors so that the image appears correct. I adjust the horizontal scaling to get the aspect ratio of the image back to normal and position the center monitor's image on its right side.

The left monitor is also scaled to get the aspect ratio correct, and positioned so that the diagonal lines of the image match. This unfortunately leaves a blank section on the left as my monitor(s) only appear to handle a certain amount of scaling.

Moving the right monitor's image is a lot easier, you just tell xrandr to position it slightly further right.
Code: Select all
$ xrandr --output  DVI-I-1 --mode 1280x1024 --pos 2800x0


Alignment image looks like this:
align.jpg


SpeedDreams needs to be told of the screen size, edit '.speed-dreams-2/config/screen.xml' and set the total width (2800 offset + 1280 DVI width).
Code: Select all
<params name="Screen" version="1.6">
  <section name="Validated Screen Properties">
    <attnum name="window width" val="4080"/>
    <attnum name="window height" val="1024"/>
    <attnum name="bpp" val="32"/>


And then the game play is much nicer:
after.jpg


If you want to remove the special modeline
Code: Select all
$ xrandr --output VGA-1 --mode "2560x1024"
$ xrandr --delmode  VGA-1 "2688x1024_60"
$ xrandr --rmmode  "2688x1024_60"


Oh, another thing is that I found the screen image more natural if the monitors are is a straight/flat line, rather than curved into towards the viewer. Perhaps we can add a factor to control this in a later version of SD.
Simon
You do not have the required permissions to view the files attached to this post.
mungewell
 
Posts: 307
Joined: Fri May 20, 2011 4:05 pm
Location: Southen Alberta, Canada

Re: Going wide (when 16:9 is not enough)

Postby kilo » Thu Sep 22, 2011 11:07 am

WOW.

I had a similar setup way back sometime... 4 monitors, 3 computers, for MS FlightSim. However, there the side monitors were curved in a bit.
kilo
 
Posts: 42
Joined: Mon Jan 24, 2011 12:02 pm
Location: Szeged, Hungary


Return to SD Physics & Internals

Who is online

Users browsing this forum: No registered users and 2 guests

cron