Problems with Nvidia Twinview (Linux)

Ask for help with ScummVM problems

Moderator: ScummVM Team

Post Reply
Masavishnu
Posts: 5
Joined: Sat Jan 21, 2006 2:40 pm
Location: Finland

Problems with Nvidia Twinview (Linux)

Post by Masavishnu »

I'm running ScummVM on Gentoo Linux with an Nvidia graphics card that has Twinview enabled. The other display, on which the image of my primary display is cloned, is a TV. The primary display mode is set so that the primary display shows 1024*768 and the secondary (the TV) shows 800*600. There is another mode that uses 800*600 for both.

When I try to run ScummVM in full screen in the latter mode, it dies with the following error message:

X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 134 (XFree86-VidModeExtension)
Minor opcode of failed request: 10 (XF86VidModeSwitchToMode)
Value in failed request: 0x131
Serial number of failed request: 111
Current serial number in output stream: 113

Also, it would seem to be unable to scale the content properly with renderers other than 2x and 3x if TwinView is enabled.

Information that I find relevant:
- ScummVM 0.8.0 (Jan 15 2006 15:00:30)
Features compiled in: Vorbis FLAC MP3 ALSA zLib MPEG2
- The nvidia-kernel version is 1.0.8178-r2, I believe

I could, of course, run the progarm without TwinView, but it would require me to restart my X server whenever I need either to use the TV-out or to play games with ScummVM. Obviously, I would appreciate an easier solution.

Thanks beforehand.
User avatar
sev
ScummVM Lead
Posts: 2304
Joined: Wed Sep 21, 2005 1:06 pm
Contact:

Post by sev »

These all are SDL-specific. Probably they already have the answer.


Eugene
User avatar
id1402
Posts: 83
Joined: Wed Sep 12, 2007 11:29 am

Post by id1402 »

I had 2 fullscreen problems with Nvidia Twinview.

First problem:
One half of scummvm was on one screen, the other on the other screen.

Second problem:
scummvm was not really fullscreen, but small size in the middle of the desktop, surrounded by black space.
The size of scummvm is depending on scummvm graphics setting "Graphics mode". "Normal (no scaling)" is small size, "HQ2x" is bigger size.

Solution:
I had to edit Option "metamodes" in Section "Screen" in file /etc/X11/xorg.conf.


Line before:

Code: Select all

Option         "metamodes" "CRT: 1360x768_60 +0+0, DFP: 1280x1024_75 +1360+0"
Line after:

Code: Select all

Option         "metamodes" "CRT: 1360x768_60 +0+0, DFP: 1280x1024_75 +1360+0; CRT: NULL, DFP: 640x480_75 +0+0"
"CRT: 1360x768_60" is my TV with refresh rate 60.
"DFP: 1280x1024_75" is my computer monitor with refresh rate 75.
Right refresh rate is important for movies best quality.

In normal mode both screens are activated and part of 1 desktop.

This is the new mode for scummvm, but not only for scummvm. It's far all SDL, wine and linux gaming stuff:
CRT: NULL, DFP: 640x480_75 +0+0
CRT is deactivated, DFP is switched to 640x480.

You might add additional higher resolutions for other games if you need.

If everything is correct, the command "xrandr --query" shows that new mode is available (see last line):

Code: Select all

xrandr --query
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 2640 x 1024, maximum 2640 x 1024
default connected 2640x1024+0+0 0mm x 0mm
   2640x1024      50.0* 
   640x480        51.0

Here is my file /etc/X11/xorg.conf:

Code: Select all

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 295.40  (buildmeister@swio-display-x86-rhel47-04.nvidia.com)  Thu Apr  5 22:32:49 PDT 2012


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "SAMSUNG"
    HorizSync       30.0 - 61.0
    VertRefresh     60.0 - 75.0
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6600 GT"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "1"
    Option         "TwinViewXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "CRT: 1360x768_60 +0+0, DFP: 1280x1024_75 +1360+0; CRT: NULL, DFP: 640x480_75 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
But there are more configuration files in /etc/X11/xorg.conf.d/.


There are some websites on this topic.
This 3 helped me:

http://http.download.nvidia.com/XFree86 ... dix-g.html
http://blog.ssokolow.com/archives/2007/ ... -twinview/
http://www.nvnews.net/vbulletin/archive ... 919.html[b][/b]
Last edited by id1402 on Mon Apr 30, 2012 10:03 am, edited 9 times in total.
User avatar
id1402
Posts: 83
Joined: Wed Sep 12, 2007 11:29 am

Post by id1402 »

I think metamode resolution 640x480 is best for most scummvm games.

I tested Flight of the Amazon Queen, Full Throttle and Feeble files.

Feeble Files, setting "no scaling" and setting "HQ2x", both settings fill the full of the screen.
But I recommend "no scaling", becuase "HQ2x" uses much more CPU power and is slower.

But the other games (setting "HQ2X") have black borders on the top and on the bottom. I think that's right.
I saw this posting by eriktorbjorn:
http://forums.scummvm.org/viewtopic.php?p=4024#4024
A 320x200 game can be displayed as 320x200, 320x240, 640x400, 640x480, 960x600 or 960x720.
A 320x240 game can be displayed as 320x240, 640x480 or 960x720.
A 640x480 game can be displayed as 640x480, 1280x960 or 1920x1440.
Feeble Files seems to be originally 640x480 and fills the full screen in full screen mode.
Flight of the Amazon Queen has black borders on the top and on the bottom.
It seems to be originally 320x200. It is scaled correctly (aspect ratio) to 640x400 and not to 640x480. So there is empty space of 80. 40 on the top and 40 on the bottom.
Is that right?

I tested metamode resolution 1280x1024. It causes the games having black borders on all sites of the screen.
Post Reply