dimanche 18 décembre 2011

Urban Terror sous KDE et TwinView

J'avais déjà posté un mémo concernant la configuration du serveur X pour bénéficier de l'affichage sur deux écrans. Cette configuration exploitait Xinerama et me permettait de jouer à des jeux 3D type Urban Terror, basé sur la bibliothèque OpenGL.

En basculant sous Karmic Koala, j'ai cherché à mettre en œuvre les effets de bureau sous KDE4. D'après ce que j'ai trouvé, ce n'est pas possible quand le serveur X tourne en mode Xinerama. Étant donné qu'on est dans le monde libre et qu'on a donc du choix, j'ai fait quelques recherches sur l'autre mode : Twinview. Il semble toutefois que ce ne soit pas un standard, juste une particularité propre à NVidia.

J'ai donc mis au point un nouveau fichier xorg.conf, grâce d'abord à l'utilitaire nvidia-settings puis grâce à mes petites mains, permettant un affichage sur deux écrans et permettant d'activer les jolis et souvent inutiles et donc indispensables effets de bureau. Reboot de X, clic sur la boîte à cocher pour activer les effets de bureau et hop ! Tout est beau et joli :-)

Après tous ces efforts, je me suis lancé un p'tit Urban Terror. Et là, le massacre (sic) ! Lancé en plein écran (principal) l'affichage est complètement décalé horizontalement d'environ la moitié de l'écran. En mode fenêtré, c'est hyper saccadé avec un lag épouvantable. Je reprend donc les recherches.

Il faut ajouter un méta-mode dans lequel l'écran secondaire est désactivé. L'affichage se fera alors pleinement sur l'écran principal. Sous X, on bascule d'un méta-mode à l'autre grâce aux séquences de touches : CTRL-ALT + et CTRL-ALT -

La contrainte est alors de basculer dans ce mode avant de lancer le jeu. Après une session de défoulement, on pourra revenir dans le mode normal. De ce point de vue là, ça marche bien. Mais le jeu est lent, scintille, même dans des résolutions mini alors qu'avec Xinerama et le même matos, ça pulsait bien :-( Je repeaufine alors la config : c'est le serveur X qui assure la synchro verticale, ce n'est plus le jeu. Etc… Rien n'y fait…

Après réflexions, je désactive les effets de bureau et lance Urban Terror : tout marche nickel ! Il me faut donc désactiver ces effets de bureau absolument inutiles durant le jeu et les réactiver après pour le côté eye-candy. Autant que cela se fasse dans le script de lancement de Urban Terror, non ? Un peu de recherche et hop ! Nous y voilà :-)

Voici le script de lancement de Urban Terror qui prend soin de désactiver les effets de bureau si ceux-ci sont actifs :
RESET="false"
 RESULT=`qdbus org.kde.kwin /KWin org.kde.KWin.compositingActive`
 if [ "$RESULT" = "true" ]
 then
   RESET="true"
   qdbus org.kde.kwin /KWin org.kde.KWin.toggleCompositing
   sleep 2
 fi 
 # 
 # put your commands to run with compositing disabled here
 ./ioUrbanTerror.i386
 #
 [ "$RESET" = "true" ] && qdbus org.kde.kwin /KWin org.kde.KWin.toggleCompositing

et voici mon fichier xorg.conf dans lequel l'écran 22" 1680x1050 est l'écran principal et le 15" 1024x768 est le secondaire, désactivé durant le jeu :

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (buildd@palmer) Sun Feb 1 20:21:04 UTC 2009

# cette config définit 2 méta-modes :
# + mode normal 2 écrans
# + mode jeu avec un ecran 22"
#
# xorg.conf (X.Org X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf manual page.
# (Type "man xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
# sudo dpkg-reconfigure -phigh xserver-xorg

Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection

Section "Files"
FontPath "/usr/local/share/fonts"
EndSection

Section "Module"
Load "glx"
Load "freetype"
EndSection

Section "ServerFlags"
Option "Xinerama" "0"
Option "DontZap" "off"
EndSection

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "InputDevice"

# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
Option "Resolution" "1000"
EndSection

Section "Monitor"
Identifier "Configured Monitor"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Maxdata (RogenTech) BelArtist22W"
HorizSync 30.0 - 84.0
VertRefresh 55.0 - 77.0
EndSection

Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Maxdata (RogenTech)"
HorizSync 31.0 - 60.0
VertRefresh 56.0 - 85.0
EndSection

Section "Device"
Identifier "Configured Video Device"
Driver "nvidia"
EndSection

Section "Device"
Identifier "Videocard0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 7300 GS"
BusID "PCI:1:0:0"
Screen 0
EndSection

Section "Device"
Identifier "Videocard1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 7300 GS"
BusID "PCI:1:0:0"
Screen 1
EndSection

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 7300 GS"
EndSection

Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 7300 GS"
BusID "PCI:1:0:0"
Screen 1
EndSection

Section "Screen"
Identifier "Default Screen"
Device "Configured Video Device"
Monitor "Configured Monitor"
DefaultDepth 24
Option "NoLogo" "True"
SubSection "Display"
Depth 24
Modes "1680x1050"
EndSubSection
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "1"
Option "TwinViewXineramaInfoOrder" "CRT-0"
Option "metamodes" "CRT-0: 1680x1050 +1024+0, CRT-1: 1024x768 +0+0; CRT-0: 1680x1050 +0+0, CRT-1: NULL"
SubSection "Display"
Depth 24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "TwinView" "0"
Option "metamodes" "CRT-1: 1024x768 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection

Aucun commentaire:

Enregistrer un commentaire